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、
lmplotlmplot函数和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()

小提琴图