pointplot,如其名,就是点图。点图代表散点图位置的数值变量的中心趋势估计,并使用误差线提供关于该估计的不确定性的一些指示。
点图比条形图在聚焦一个或多个分类变量的不同级别之间的比较时更为有用。点图尤其善于表现交互作用:一个分类变量的层次之间的关系如何在第二个分类变量的层次之间变化。
重要的一点是点图仅显示平均值(或其他估计值),但在许多情况下,显示分类变量的每个级别的值的分布可能会带有更多信息。在这种情况下,其他绘图方法,例如箱型图或小提琴图可能更合适。
seaborn.pointplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,
estimator=, ci=95, n_boot=1000, units=None,
markers='o', linestyles='-', dodge=False, join=True, scale=1,
orient=None, color=None, palette=None, errwidth=None, capsize=None, ax=None, **kwargs)
estimator:调用函数实现向量 -> 标量的映射
在每个分箱内进行估计的统计函数。
ci:float 或 “sd” 或 None
在估计值附近绘制置信区间的尺寸大小。如果是“sd”,则跳过引导阶段并绘制观察数据点的标准差。如果为 None,则不会执行引导过程,并且不会绘制误差块。
n_boot:int
计算置信区间时使用的引导迭代次数
units:data 或 vector data 中变量的名称
采样单元的标识符,用于执行多级引导过程(计算置信区间等)并能够处理重复测量的设定
markers:字符串或字符串列表
用于每个hue色调的级别的标记
linestyles:字符串或字符串列表
用于每个hue色调的级别的线条风格
join:bool
如果为True,则在hue级别相同的点估计值之间绘制线条
scale:float
绘图元素的比例因子
errwidth:float
误差线(和上下限指示线)的厚度
capsize:float
误差线“上下限指示线”的宽度
绘制最简单的pointplot
plt.figure(dpi=150)
tips = sns.load_dataset("tips")
sns.pointplot(x="time", y="total_bill", data=tips)
绘制两个变量的pointplot
plt.figure(dpi=150)
sns.pointplot(x="time", y="total_bill",hue='smoker' ,data=tips)
通过dodge避免重叠
plt.figure(dpi=150)
sns.pointplot(x="time", y="total_bill",hue='smoker',
dodge=True,data=tips)
以列表的形式修改每个分类变量标记点的样式以及线的样式
plt.figure(dpi=150)
sns.pointplot(x="time", y="total_bill", hue="smoker",data=tips,
markers=["o", "x"],linestyles=["-", "--"],dodge=True)
其他线条样式以及标记点的样式可以参考Matplotlib绘图
取消点与点之间的连线
plt.figure(dpi=150)
sns.pointplot(x="tip", y="day", data=tips,
markers='h',join=False)
用中位数作为集中趋势的估计
from numpy import median
plt.figure(dpi=150)
sns.pointplot(x="tip", y="day", data=tips,
markers='h',estimator=median)
用误差线显示均值的标准误差
from numpy import median
plt.figure(dpi=150)
sns.pointplot(x="day", y="tip", data=tips,
markers='h',errwidth=1,ci=68,
capsize=0.2)
显示观测值的标准偏差而不是置信区间
from numpy import median
plt.figure(dpi=150)
sns.pointplot(x="day", y="tip", data=tips,
markers='h',errwidth=1,ci='sd',
capsize=0.2)
还可以通过ci=None
取消误差线的展示
from numpy import median
plt.figure(dpi=150)
sns.pointplot(x="day", y="tip", data=tips,
markers='h',errwidth=1,ci=None,
linestyles=':',capsize=0.2)