- import seaborn as sns
- penguins = sns.load_dataset("penguins")
- penguins

sns.displot(penguins, x="flipper_length_mm")

sns.histplot(penguins, x="flipper_length_mm")

- sns.displot(penguins, x="flipper_length_mm",
- binwidth=1)

- sns.histplot(penguins, x="flipper_length_mm",
- binwidth=10)

- tips = sns.load_dataset("tips")
- tips

此时类别只有几个,所以直方图的话画出来没法撑满整张图
sns.displot(tips, x="size")

有以下几种解决方法:
sns.displot(tips, x="size",bins=[1,2,3,4,5,6,7])

sns.displot(tips, x="size",discrete=True)

sns.displot(tips, x="size",shrink=2)

- sns.displot(penguins, x="flipper_length_mm",
- hue="species")

默认情况下,不同的直方图相互“分层”,在某些情况下,它们可能难以区分。
一种选择是将直方图的视觉表示从条形图更改为阶梯图:
- sns.displot(penguins, x="flipper_length_mm", hue="species",
- element='step')

不重叠,改为叠加
- sns.displot(penguins, x="flipper_length_mm", hue="species",
- multiple='stack')

- sns.displot(penguins, x="flipper_length_mm", hue="species",
- multiple='dodge')

多张图
- sns.displot(penguins, x="flipper_length_mm",
- col="species")

- sns.displot(penguins, x="flipper_length_mm",
- kind="kde")

- sns.displot(penguins, x="flipper_length_mm",kind="kde",
- bw_adjust=.05)

- sns.displot(penguins, x="flipper_length_mm",kind="kde",
- bw_adjust=.85)

- sns.displot(penguins, x="flipper_length_mm",kind="kde",
- hue="species")

- sns.displot(penguins, x="flipper_length_mm",kind="kde",hue="species",
- multiple='stack')

- sns.displot(penguins, x="flipper_length_mm",
- kind="ecdf")

- sns.displot(penguins, x="flipper_length_mm",kind="ecdf",
- hue='species')

sns.displot(penguins, x="bill_length_mm", y="bill_depth_mm")

- sns.displot(penguins, x="bill_length_mm", y="bill_depth_mm",
- cbar=True)
在图内显示各个独立的观测
- sns.displot(penguins, x="bill_length_mm", y="bill_depth_mm",
- rug=True)
- sns.displot(penguins, x="bill_length_mm", y="bill_depth_mm",
- kind='kde')

- sns.displot(penguins, x="bill_length_mm", y="bill_depth_mm",kind='kde',
- thresh=0.5)
- sns.displot(penguins, x="bill_length_mm", y="bill_depth_mm",kind='kde',
- thresh=0.5, levels=3)
- sns.displot(penguins, x="bill_length_mm", y="bill_depth_mm",kind='kde',
- thresh=0.5, levels=[0.01,0.1,1])
- sns.displot(penguins, x="bill_length_mm", y="bill_depth_mm",kind='kde',
- rug=True)
- sns.displot(penguins, x="bill_length_mm", y="bill_depth_mm",
- hue='species')

- sns.displot(penguins, x="bill_length_mm", y="bill_depth_mm",
- kind='kde',hue='species')

默认情况下,是2D散点图+各自直方图
sns.jointplot(data=penguins, x="bill_length_mm", y="bill_depth_mm")

- sns.jointplot(data=penguins, x="bill_length_mm", y="bill_depth_mm",
- kind='kde')

- g = sns.JointGrid(data=penguins, x="bill_length_mm", y="bill_depth_mm")
- g.plot_joint(sns.histplot)
- g.plot_marginals(sns.boxplot)
plot_joint——中间的图
plot_marginals——两边的图

我们再回顾一下这个数据集
- import seaborn as sns
- penguins = sns.load_dataset("penguins")
- penguins

有四个有数据的列,我们用pairplot之后,对角线部分是数值的直方图。非对角线部分是散点图
sns.pairplot(penguins)

- g = sns.PairGrid(penguins)
- g.map_upper(sns.histplot)
- g.map_lower(sns.kdeplot)
- g.map_diag(sns.histplot, kde=True)

参考内容 Visualizing distributions of data — seaborn 0.11.2 documentation (pydata.org)