26、Seaborn绘图

Seaborn是基于Matplotlib,对Matplotlib高级封装。他的API设计偏向探索和理解数据,推荐使用

1、单变量图

1.1、直方图
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif'] = ['Songti SC']# 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像
# 是负号'-'显示为方块的问题
tips = pd.read_csv('../data/tips.csv')
fig, ax = plt.subplots(figsize=(12, 6))
sns.histplot(tips['total_bill'], kde=True, ax=ax)
ax.set_title('总账单直方图')
plt.show()
直方图
1.2、密度图

密度图是展示单变量分布的另一种方法,本质上是通过绘制每个数据点为中心的正态分布,然后消除重叠的图,使曲线下的面积为1来创建的

fig,ax = plt.subplots(figsize=(12,6))
sns.kdeplot(tips['total_bill'], ax=ax)
ax.set_title('总账单KDE图')
plt.show()
密度图
1.3、计数图

计数图和直方图很像,直方图通过对数据分组来描述分布,计数图(条形图)是对离散变量(分类变量)计数。

fig,ax = plt.subplots(figsize=(12,6))
sns.countplot(data=tips, x='day')
ax.set_title('Count of days')
ax.set_xlabel('Day of the week')
ax.set_ylabel('Frenquency')
plt.show()
计数图

2、双变量数据可视化图

2.1、散点图

1、scatterplot

fig,ax = plt.subplots(figsize=(12,6))
sns.scatterplot(x='total_bill', y='tip', data=tips)
ax.set_title('Total Bill 和 Tip 散点图')
ax.set_xlabel('Total Bill')
ax.set_ylabel('Tip')
plt.show()

散点图

2、regplot
创建散点图可以使用regplot函数。regplot不仅可以绘制散点图,还会拟合回归线,把fit_reg设置为False,将只显示散点图

fig, ax = plt.subplots(figsize=(12,6))
sns.regplot(x='total_bill', y='tip', data=tips)
ax.set_title('regplot of Total Bill and Tip')
ax.set_xlabel('Total Bill')
ax.set_ylabel('Tip')
plt.show()

散点图

3、lmplot
lmplot函数和regplot函数类似,也可以用于创建散点图。
两者的主要区别是regplot创建坐标轴,而lmplot创建图
sns.lmplot(x='total_bill', y='tip', data=tips)
4、jointplot
每个轴上创建包含单个变量的散点图。

plt.show()
#%%
fig, ax = plt.subplots(figsize=(12,6))
joint = sns.jointplot(x='total_bill', y='tip', data=tips)
joint.set_axis_labels(xlabel='Total Bill', ylabel='Tip')
plt.show()
2.2、蜂巢图
joint = sns.jointplot(x='total_bill', y='tip', data=tips, kind='hex')
joint.set_axis_labels(xlabel='Total Bill', ylabel='Tip')
joint.figure.suptitle('Hexbin Joint Plot of Total Bill and Tip', fontsize=10, y=1.03)
plt.show()
蜂巢图
2.3、2D密度图
sns.kdeplot(data=tips,x='total_bill',y='tip',fill=True,cbar=True)
plt.show()
2D密度图
2.4、条形图
fig,ax = plt.subplots(figsize=(12,6))
# fit_reg 默认是True 会拟合一条直线 就是利用这一份数据跑了线性回归
# fit_reg=False 可以关掉
sns.barplot(data=tips,x='time',y='total_bill',estimator='mean',errorbar=None)
ax.set_title('总账小费之间关系图')
plt.show()
条形图
2.5、箱线图

箱线图用于显示多种统计信息:最小值,1/4分位,中位数,3/4分位,最大值,以及离群值(如果有)

fig,ax = plt.subplots(figsize=(12,6))
# fit_reg 默认是True 会拟合一条直线 就是利用这一份数据跑了线性回归
# fit_reg=False 可以关掉
sns.boxplot(data=tips,x='time',y='total_bill')
ax.set_title('总账小费之间关系图')
plt.show()
箱线图
2.6、小提琴图
fig,ax = plt.subplots(figsize=(12,6))
sns.violinplot(data=tips,x='time',y='total_bill',hue='sex',split=True)
ax.set_title('总账小费之间关系图')
plt.show()
小提琴图
2.7、成对关系

pairplot函数会为单变量绘制直方图,双变量绘制散点图
sns.pairplot(tips)

成对关系

pairplot的缺点是存在冗余信息,图的上半部分和下半部分相同
可以使用pairgrid手动指定图的上半部分和下半部分

pair_grid = sns.PairGrid(tips)
# 右上角
pair_grid.map_upper(sns.regplot)
# 左下角
pair_grid.map_lower(sns.kdeplot)
# 对角线
pair_grid.map_diag(sns.histplot)
成对关系

3、多变量关系

如果想在图中包含更多信息,可以使用颜色、大小和形状来区分它们

3.1、通过颜色区分
# 通过加入参数hue= 'sex'不同的颜色区分
sns.pairplot(tips,hue='sex')
成对关系图
sns.lmplot(x='total_bill',y='tip',data=tips,hue='sex',markers=['o','x'])
散点图
sns.set_style('ticks')
fig,ax = plt.subplots(figsize=(12,6))
# fit_reg 默认是True 会拟合一条直线 就是利用这一份数据跑了线性回归
# fit_reg=False 可以关掉
sns.violinplot(data=tips,x='time',y='total_bill',hue='sex',split=True)
ax.set_title('总账小费之间关系图')
plt.show()
小提琴图
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容