seaborn是专门用于统计数据可视化的包,可媲美R语言中的ggplot2包。本文介绍用seaborn绘制直方图。
环境
- python3.9
- win10 64bit
- seaborn==0.11.1
- matplotlib==3.3.4
- pandas==1.2.1
数据
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
# 设置
pd.options.display.notebook_repr_html=False # 表格显示
plt.rcParams['figure.dpi'] = 75 # 图形分辨率
sns.set_theme(style='darkgrid') # 图形主题
# 加载数据
penguins=pd.read_csv(r'https://gitee.com/nicedouble/seaborn-data/raw/master/penguins.csv')
penguins.head()
species island bill_length_mm bill_depth_mm flipper_length_mm \
0 Adelie Torgersen 39.1 18.7 181.0
1 Adelie Torgersen 39.5 17.4 186.0
2 Adelie Torgersen 40.3 18.0 195.0
3 Adelie Torgersen NaN NaN NaN
4 Adelie Torgersen 36.7 19.3 193.0
body_mass_g sex
0 3750.0 MALE
1 3800.0 FEMALE
2 3250.0 FEMALE
3 NaN NaN
4 3450.0 FEMALE
绘制
在seaborn中,绘制直方图的函数有histplot
和displot
。
seaborn
绘制直方图最简单的方式是使用histplot
方法,指定data
参数和x
或y
参数。
# x轴直方图
sns.histplot(data=penguins,x='flipper_length_mm')
plt.show()
hist_6_0.png
设置y
参数时,直方图会绘制在y轴上。
# y轴直方图
sns.histplot(data=penguins,y='flipper_length_mm')
plt.show()
hist_8_0.png
如果只设置data
参数,seaborn
会把数据当成宽型数据,自动绘制所有的数值型变量的直方图。
# 自动绘制所有数值变量直方图
sns.histplot(data=penguins)
plt.show()
hist_10_0.png
调整
调整分箱个数,设置bins
参数。
# 指定分箱个数直方图
sns.histplot(data=penguins,x='flipper_length_mm',bins=15)
plt.show()
hist_12_0.png
设置shrink
参数,可以缩放分箱的宽度。
# 缩放分箱直方图
sns.histplot(data=penguins,x='flipper_length_mm',shrink=0.8)
plt.show()
hist_14_0.png
添加核密度曲线,设置kde=True
参数。
# 添加核密度曲线的直方图
sns.histplot(data=penguins,x='flipper_length_mm',kde=True)
plt.show()
hist_16_0.png
直方图默认统计的是观测数,可以进行统计变化,设置stat
参数。
stat
可选参数:
- count:观测数(默认)
- frequency:频数
- density:密度
- probability:概率
# 直方图统计变化(频数)
sns.histplot(data=penguins,x='flipper_length_mm',stat='frequency')
plt.show()
hist_18_0.png
# 直方图统计变化(概率)
sns.histplot(data=penguins,x='flipper_length_mm',stat='probability')
plt.show()
hist_19_0.png
分组直方图
设置hue
参数,可以绘制分组直方图。
# 分层分组直方图
sns.histplot(data=penguins, x="flipper_length_mm", hue="species")
plt.show()
hist_21_0.png
设置multiple
参数,调整多组直方图的表现形式。
multiple
可选参数:
- layer:分层(默认)
- dodge:并排
- stack堆叠
- fill:填充
# 并排分组直方图
sns.histplot(data=penguins, x="flipper_length_mm", hue="species",multiple='dodge')
plt.show()
hist_23_0.png
# 堆叠分组直方图
sns.histplot(data=penguins, x="flipper_length_mm", hue="species",multiple='stack')
plt.show()
hist_24_0.png
分面直方图
使用displot
绘制分面直方图。设置col
或row
控制分面行为。
# 按列分面直方图
sns.displot(data=penguins, x="flipper_length_mm", hue="species",col='sex')
plt.show()
hist_26_0.png
更多参考seaborn直方图
网友评论