about Seaborn
-
在matplotlib上进行了更加高级的封装, 能够用少数代码画出具有丰富统计信息的科研论文配图
-
降低用户的学习成本和绘图的繁琐程度
-
也可以根据seaborn函数中所能支持的修改参数, 进行复杂绘图定制
-
可以绘制的图包括
- 统计关系型, statistical relationships
- 数据分布型, distributions of data
- 分类数据型, categorical data
- 回归模型分析型, regression models
- 多子图网格型, multi-plot grids
关系型图
- 通过相互关系和相互依赖程度, 分析变量间的相关性
scatterplt()
,relplot()
,lineplot()
plot function | core parameters | plot category |
---|---|---|
scatterplot | x, y, hue (颜色映射), size (映射大小), data (DataFrame/ndarray 数据类型), palette (颜色系), size (数据标记大小), estimator (评估聚类方法), ci (置信区间) | 散点图, 气泡图 |
relplot | x, y, hue, palette, legend, kind, markers | 数据拟合散点图 |
lineplot | x, y, hue, paletter, legend, kind, markers, estimator, ci, err_style, err_kws | 线图, 带标记的线图 |
数据分布型图
- 进行数据分析前, 了解数据分布情况, 包括覆盖范围, 中心趋势, 异常数值等
plot function | core parameters | plot category |
---|---|---|
displot() | data, x, y, hue, kind (绘图类别), rug (数据分布短线), rug_kws, color | 数据分布图 |
histplot() | data, x, y, hue, weights (分布权重), bins (箱的总数), binwidth, binrange, kde (密度曲线), kde_kws, line_kws, cbar (双变量图颜色柱), cbar_kws | 直方图 |
kdeplot() | x, y, shade (是否填充), kernel (内核), hue, palette, bw_method (平滑带宽方法) | 核密度图 |
ecdfplot() | data, x, y, hue, stat (计算分布统计), palette | 经验分布函数 (或称为经验累积分布函数,即 ECDF)图 |
rugplot() | x, y, height (覆盖轴范围比例), hue, palette, expand_margins (是否增加 rug 与轴的高度,避免它与其他元素重合) | 轴底部毯形图 |
分类数据型图
- 数据中存在分类/离散变量, 使用XY轴作为分类轴
plot function | core parameters | plot category |
---|---|---|
stripplot() | x, y, hue, data, order, hue_order, jitter (抖动), dodge (分组), orient (方向), color, palette, size, edgecolor, linewidth, ax | 抖动散点图 |
swarmplot() | x, y, hue, data, order, hue_order, dodge, orient, color, palette, size, edgecolor, linewidth, ax | 蜂巢图 |
boxplot() | x, y, hue, data, order, hue_order, orient, color, palette, saturation, width, dodge, fliersize, linewidth, whis, ax, notch | 箱线图 |
violinplot() | x, y, hue, data, order, hue_order, bw, cut, scale, scale_hue, gridsize, width, inner, split, dodge, orient, linewidth, color, palette, saturation, ax | 带误差线小提琴图 |
boxenplot() | x, y, hue, data, order, hue_order, orient, color, palette, saturation, width, dodge, k_depth, linewidth, ax | 增强箱线图 |
pointplot() | x, y, hue, data, order, hue_order, estimator, ci, n_boot, units, markers, linestyles, dodge, orient, color, palette, errwidth, capsize, ax | 带误差线点图 |
barplot() | x, y, hue, data, order, hue_order, estimator, ci, n_boot, units, orient, color, palette, saturation, errcolor, errwidth, capsize, dodge, ax | 带误差线条形图 |
countplot() | x, y, hue, data, order, hue_order, orient, color, palette, saturation, dodge, ax | 分类统计柱形图 |
回归模型分析型图
- 使用回归模型分析, 表示数据集中变量间的关系
plot function | core parameters | plot category |
---|---|---|
lmpplot() | x, y, data, x_estimator, x_bins, x_ci, scatter, fit_reg, ci, n_boot, units, order, logistic, lowess, robust, logx, x_partial, y_partial, truncate, x_jitter, y_jitter, scatter_kws, line_kws, ax | 线性回归模型图 |
residplot() | x, y, data, lowess, x_partial, y_partial, order, robust, dropna, label, color, scatter_kws, line_kws, ax | 线性回归模型残差图 |
regplot() | x, y, data, x_estimator, x_bins, x_ci, scatter, fit_reg, ci, n_boot, units, order, logistic, lowess, robust, logx, x_partial, y_partial, truncate, x_jitter, y_jitter, scatter_kws, line_kws, ax | 线性回归模型图 |
分类数据型图
FacetGrid()
函数
- 实现行, 列, 色调3个维度的数值映射
- 每行每列都是df中一个列中的类别
g = sns.FacetGrid(tips, row="sex", col="time", hue="smoker")
g.map(sns.scatterplot, "total_bill", "tip", alpha=.7) # scatters
g.map(sns.regplot, "total_bill", "tip", ci=95) # linear regression
g.fig.subplots_adjust(top=0.9)
g.fig.suptitle('tips dataset, sex | time | smoker', fontsize=16)
g.add_legend()
PairGrid()
函数
- 显示数据集中成对变量间的关系
- 每行每列都是df中的一个列
penguis = sns.load_dataset("penguins")
x_vars = ["body_mass_g", "bill_length_mm", "bill_depth_mm", "flipper_length_mm", ]
y_vars = ["body_mass_g", "bill_length_mm", "bill_depth_mm", "flipper_length_mm", ]
g = sns.PairGrid(penguis, hue="species", x_vars=x_vars, y_vars=y_vars)
g.map_diag(sns.histplot, color=".3")
g.map_offdiag(sns.scatterplot)
g.fig.subplots_adjust(top=0.9)
g.fig.suptitle('penguis dataset, mass | bill l/d | fillper l', fontsize=16)
g.add_legend()
绘图风格, 颜色主题和绘图元素比例放缩
- seaborn有更多绘图风格和颜色主题, 可以用于绘制不同样式的图.
"""common code"""
sns.set_style("style_name") # 绘图风格
sns.set_palette("palette_name") # 颜色主题
sns.set_context("context_scale") # 绘图元素放缩比例
# check available palettes
sns.palettes.MPL_QUAL_PALS, sns.palettes.SEABORN_PALETTES
# show color palette
sns.color_palette("flare")
# show interpolated color palette
pal = sns.color_palette("flare", as_cmap=True)
pal_c = list(pal.colors)
sns.palplot(pal_c[::len(pal_c)//20])
set_style
:darkgrid
,whitegird
,dark
,white
palette_name
:['tab10', 'tab20', 'tab20b', 'tab20c', 'Set1', 'Set2', 'Set3', 'Accent', 'Paired', 'Pastel1', 'Pastel2', 'Dark2']
['deep', 'deep6', 'muted', 'muted6', 'pastel', 'pastel6', 'bright', 'bright6', 'dark', 'dark6', 'colorblind', 'colorblind6']
context_scale
:paper
,notebook
,talk
,poster
- 图片所有内容物的大小, 逐个增大