stripplot是seaborn中的散点图。由于散点图在概念本身上没什么好多说的,就直接进入正题。
一、语法
seaborn.stripplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,
jitter=True, dodge=False, orient=None, color=None, palette=None,
size=5, edgecolor='gray', linewidth=0, ax=None, **kwargs)
二、参数详解
-
jitter:float或True
要应用的抖动量(仅沿分类轴)。 当您有许多点并且它们重叠时,这可能很有用,因此更容易看到分布。您可以指定抖动量(均匀随机变量支持的宽度的一半),或者仅使用True作为良好的默认值 -
size:float
标记的直径,以磅为单位。 -
edgecolor:matplotlib 颜色,“灰色”是特殊的
每个点周围线条的颜色。如果传递"灰色",则亮度由用于点体的调色板决定。 -
linewidth:float
构图元素的灰线宽度。
三、实例
还是先绘制一个最简单的散点图
tips = sns.load_dataset("tips")
sns.stripplot(x=tips["total_bill"])
通过分类变量对条形图进行分组
sns.stripplot(x="day", y="total_bill", data=tips)
两个分类变量
sns.stripplot(x="day", y="total_bill",
hue='smoker',data=tips)
混杂在一起看起来效果不是特别好,通过以前提到过的dodge将第三个分类变量分开
sns.stripplot(x="day", y="total_bill",
hue='smoker',dodge=True,data=tips)
绘制水平的散点图
sns.stripplot(x="total_bill", y="day",
hue='smoker',dodge=True,data=tips)
添加抖动以显示值的分布
sns.stripplot(x="day", y="total_bill",
hue='smoker',dodge=True,
jitter=True,data=tips)
从我个人角度来看,实际上这种添加抖动本质是增加了散点间的距离,减少重复的部分,使视觉效果更好。可能理解有误,纯属个人猜测
还可以指定一定数值的抖动(jitter=True
是选择默认的良好的抖动值)
sns.stripplot(x="day", y="total_bill",
hue='smoker',dodge=True,
jitter=0.05,data=tips)
通过改变散点的linewidth绘制轮廓
plt.figure(dpi=150)
sns.stripplot(x="day", y="total_bill",
hue='smoker',dodge=True,
jitter=True,linewidth=1,
data=tips)
修改轮廓的颜色
plt.figure(dpi=150)
sns.stripplot(x="day", y="total_bill",
hue='smoker',dodge=True,
jitter=True,linewidth=1,
edgecolor='g',data=tips)
修改散点的形状
具体的marker实际上是继承自matplotlib中的,具体如下:
具体可参考另一篇博客Matplotlib绘图
plt.figure(dpi=150)
sns.stripplot(x="day", y="total_bill",
hue='smoker',dodge=True,
jitter=True,marker='v',data=tips)
增加透明图以及修改大小
plt.figure(dpi=150)
sns.stripplot(x="day", y="total_bill",hue='smoker',dodge=True,
palette=sns.color_palette("plasma_r",n_colors=2),
jitter=True,marker='h',size=10,alpha=0.5,data=tips)
除了这些基本的绘图外,散点图实际上还会与boxplot、violinplot等一起使用。
boxplot+stripplot
plt.figure(dpi=150)
sns.boxplot(x="tip", y="day", data=tips, whis=np.inf, palette="Set2")
sns.stripplot(x="tip", y="day", data=tips,
jitter=True,palette=sns.color_palette("plasma_r",n_colors=4),
alpha=0.5,marker='h',size=10)
violinplot+stripplot
sns.violinplot(x="day", y="total_bill", data=tips,
inner=None, color=".8")
sns.stripplot(x="day", y="total_bill", data=tips, jitter=True)