参考:https://seaborn.pydata.org/tutorial/categorical.html
分类变量关系图中的catplot类似于连续变量中的relplot,默认是stripplot。
分类变量图种类
分类散点图
stripplot
swarmplot (kind=‘swarm’)
类别分布图
boxplot
violinplot
boxenplot
类别估计图
pointplot
varplot
countplot
分类散点图
sns.catplot(data=tips, x="day", y="total_bill")
sns.catplot(data=tips, x="day", y="total_bill", jitter=False)
jitter参数是控制散点随机偏离程度的参数,它为False时所有散点在一条直线上,没有偏离。
另一种散点图swarm让点之间没有重叠,适用于相对小的数据集。
sns.catplot(data=tips, x="day", y="total_bill", kind="swarm")
也可以使用hue增加图片包含的信息,但是分类数据不支持size和style。
sns.catplot(data=tips, x="day", y="total_bill", hue="sex", kind="swarm")
order参数可以指定绘制分类的顺序:
sns.catplot(data=tips, x="smoker", y="tip", order=["No", "Yes"])
比较分布
boxplot
‘箱’显示了三个四分位值和极值,‘线’延伸至上下四分位的1.5IQR,在此之外的点特殊标出来。
sns.catplot(data=tips, x="day", y="total_bill", kind="box")
加了hue可能会出现dogge的情况:
想要避免这种重叠情况可以设置dodge=False:
boxen
包含了更多数据信息,适合大数据集
diamonds = sns.load_dataset("diamonds")
sns.catplot(
data=diamonds.sort_values("color"),
x="color", y="price", kind="boxen",
)
violinplot
结合了箱线图和核密度估计曲线。
sns.catplot(
data=tips, x="total_bill", y="day", hue="sex", kind="violin",
)
kde的参数也可以用在这里
sns.catplot(
data=tips, x="total_bill", y="day", hue="sex",
kind="violin", bw=.15, cut=0,
)
当hue只有两个水平时,可以使用split=True得到更紧凑的图:
可以选择小提琴内部的表示方法:
sns.catplot(
data=tips, x="day", y="total_bill", hue="sex",
kind="violin", inner="stick", split=True, palette="pastel",
)
联合散点图和小提琴:
g = sns.catplot(data=tips, x="day", y="total_bill", kind="violin", inner=None)
sns.swarmplot(data=tips, x="day", y="total_bill", color="k", size=3, ax=g.ax)
还有col, row, orient, sharex等等参数。