大家好,我是辰哥~
在文章分享之前,先给大家安排一波福利
![52f5be7cf9f559650e5601b6c8820fde.png](https://i-blog.csdnimg.cn/blog_migrate/a37efe61c9f703eedba66c9cb2a978d9.jpeg)
![a07cb535b71bf6b476c222ba8d2d218c.png](https://i-blog.csdnimg.cn/blog_migrate/eafd528759bd68d8074b10f364ab1236.jpeg)
国庆假期已快欠费了,最后的1-2天里给大家安排的显示器和学习平台必须到位。
今天的干货Seaborn可视化库
Matplotlib绘制一张美图需要很多参数调整,于是就出现了high-level版的Seaborn,几行代码即可输出美美的图形,那么Seaborn是如何做到的?
Seaborn主要有两种图形实现方法Figure水平「下图绿色格子中所有方法,如jointplot、JointGrid」、Axes水平「如stripplot、swarmplot等」,本文梳理Seaborn主要结构,助快速掌控Seaborn👇
![b635e3e118db74f82ef6856987a9b03a.png](https://i-blog.csdnimg.cn/blog_migrate/04d6ef4e68cc60a7c970a8dd8fead9ad.png)
![02ab80dafbf954abce8d2f1a83ebb3a8.png](https://i-blog.csdnimg.cn/blog_migrate/dc938504627c1292f38c95435ab18abf.png)
Figure水平方法
此时,通过seaborn.axisgrid.FacetGrid
对象作图,以displot
为例,
单个图
import seaborn as sns
import pandas as pd
penguins = sns.load_dataset("penguins")#导入数据
g = sns.displot(data=penguins,
x="flipper_length_mm",
hue="species",
multiple="stack",
kind="hist")#一行代码出图
sns.set(style='whitegrid', font_scale=1.2)
print(type(g))
\<class 'seaborn.axisgrid.FacetGrid'>
# 注意此处g对象类型
多子图
Figure水平多子图一行代码搞定,
sns.displot(data=penguins, x="flipper_length_mm", hue="species", col="species")
![b936db0ac29a840e87a315d0b4f4010f.png](https://i-blog.csdnimg.cn/blog_migrate/c595557a73ea5e0c87158f3f3320d7fb.png)
矩阵图 (pairplot)
sns.pairplot(data=penguins, hue="species")
![893e158c947260f372ec46bb32536f57.png](https://i-blog.csdnimg.cn/blog_migrate/23cbbc39758f828940efda670112bf2b.png)
矩阵图 (PairGrid)
PairGrid
可使矩阵图更加个性化,
g = sns.PairGrid(penguins, diag_sharey=False)
g.map_upper(sns.scatterplot) #右上角做散点图
g.map_lower(sns.kdeplot) #左下角做等高线图
g.map_diag(sns.histplot) #中间做直方图
![6d6d1c6b072a0c11856df820487f616f.png](https://i-blog.csdnimg.cn/blog_migrate/47b5893428e1b56afd043acb9d6ab1e2.png)
Axes水平方法
此时,直接在matplotlib.axes._subplots.AxesSubplot
对象上作图,以hisplot
为例,
单个图
import seaborn as sns
import pandas as pd
penguins = sns.load_dataset("penguins")
g = sns.histplot(data=penguins,
x="flipper_length_mm",
hue="species",
multiple="stack")
sns.set(style='whitegrid', font_scale=1.2)
print(type(g))
\<class matplotlib.axes._subplots.AxesSubplot>
# 注意此处g对象类型
![6237df0688158be56a29226a85785cb3.png](https://i-blog.csdnimg.cn/blog_migrate/06f7b57002bafdf35a0c175f0bf981c0.png)
多子图
比较繁琐,
import matplotlib.pyplot as plt
f, axs = plt.subplots(1,
2,
figsize=(8, 4),
gridspec_kw=dict(width_ratios=[4, 3]))
sns.scatterplot(data=penguins,
x="flipper_length_mm",
y="bill_length_mm",
hue="species",
ax=axs[0])
sns.histplot(data=penguins,
x="species",
hue="species",
shrink=.8,
alpha=.8,
legend=False,
ax=axs[1])
f.tight_layout()
![07f3e53b254e1cb6d6c6ad3d9b066ec8.png](https://i-blog.csdnimg.cn/blog_migrate/e6baf2b618664f378b1acff7378c1a0a.png)
从上面实例可知,在简单图形上,Figure方法和Axes方式结果几乎一样,在多子图绘制时,Figure水平优势明显;
相比于jointplot/pairplot,JointGrid/PairGrid可以更个性化。
本文简要介绍了Seaborn的主要方法,详细可参考历史文章及官网。
致谢:http://seaborn.pydata.org/index.html
最后