一、加载数据集
seaborn默认提供了数据集,方便测试图表的使用。
import seaborn as sns
data = sns.load_dataset('tips')
print(data)
二、风格设置
Seaborn支持的风格有5种:
- darkgrid黑背景-白格
- whitegrid白背景-白格
- dark黑背景
- white白背景
- ticks
设置风格的方法:
- set(style='')
- set_style(value)统一设置
- axes_style(value)单一设置
三、调色板
支持的方法:
- color_palette() 能传入任何Matplotlib所支持的颜色
- color_palette() 不写参数则,默认颜色deep, muted, pastel, bright, dark, colorblind
- color_palette() ["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]
- light_palette() dark_palette()
- set_palette() 设置所有图的颜色
四、柱状图
# 常规条图
import seaborn as sns
#示例数据
tips = sns.load_dataset("tips")
# 单变量柱状图
sns.barplot(x="day", y="total_bill",
data = tips)
# 显示图表
plt.show()
sns.catplot(data=tips,kind="bar",x="day",y="total_bill")
# 横向条图
import seaborn as sns
# 示例数据
tips = sns.load_dataset("tips")
# 单变量柱状图
sns.barplot(x="total_bill", y="day",data=tips)
# 显示图表
plt.show()
# 分组条图
import seaborn as sns
# 示例数据
tips = sns.load_dataset("tips")
# 分组柱状图
sns.barplot(x="day", y="total_bill",hue="sex", data=tips)
# 显示图表
plt.show()
五、直方图
# 常规
import seaborn as sns
# 示例数据
tips = sns.load_dataset("tips")
# 基本直方图
sns.histplot(tips['total_bill'])
sns.displot(tips['total_bill'])
# 额外设置
import seaborn as sns
# 示例数据
tips = sns.load_dataset("tips")
# 直方图 + KDE 核密度估计
# 核密度估计的作用是用来估计概率密度函数的,它可以用来描述随机变量的密度分布
sns.histplot(tips['total_bill'],kde=True)
sns.displot(tips['total_bill'],kde=True)
# 多变量直方图
multiple = 'layer'
# 默认值,以层叠的形式展示
multiple = 'dodge'
# 以并列的形式展示
multiple = 'stack'
# 以堆叠的形式展示
multiple = 'fill'
# 以百分比堆叠的形式展示
sns.histplot(x='total_bill',hue='sex',data=tips)
sns.histplot(x='total_bill',hue='sex',data=tips, multiple='stack')
sns.histplot(x='total_bill',hue='sex',data=tips, multiple='dodge')
sns.histplot(x='total_bill',hue='sex',data=tips, multiple='fill')
sns.displot(x='total_bill',hue='sex',data=tips, multiple='stack')
sns.displot(x='total_bill',hue='sex',data=tips, multiple='dodge')
sns.displot(x='total_bill',hue='sex',data=tips, multiple='fill')
# 定制直方图
sns.histplot(x='total_bill',data=tips,bins=20, color='skyblue',edgecolor='black',linewidth=1.2)
sns.displot(x='total_bill',data=tips,bins=20, color='skyblue',edgecolor='black',linewidth=1.2)
# 累积直方图
sns.histplot(x='total_bill',data=tips,element='step')
sns.displot(x='total_bill',data=tips,element='step',col='time')
六、折线图
# 常规
import seaborn as sns
# 使用lineplot绘制折线图
sns.lineplot(x=[1,2,3,4,5],y=[1,2,3,4,5])
sns.relplot(x=[1,2,3,4,5],y=[1,2,3,4,5],kind='line')
# 额外设置
import seaborn as sns
# 示例数据
tips = sns.load_dataset("tips")
sns.lineplot(x="day", y="total_bill",data=tips)
sns.relplot(x="day", y="total_bill",data=tips, kind='line')
# 多变量折线图
sns.lineplot(x="day", y="total_bill",data=tips,hue='time')
sns.relplot(x="day", y="total_bill",data=tips,hue='time',kind='line')
# 使用relplot绘制折线图
sns.relplot(x="day", y="total_bill",
data=tips,
kind='line', # 图像类型
hue='sex', # 分类变量
col='time') # 分图变量
七、散点图
# 常规
import seaborn as sns
# 加载数据
tips = sns.load_dataset('tips')
# 常规散点图
sns.scatterplot(data=tips,x='total_bill',y='tip')
sns.relplot( data=tips, x='total_bill',y='tip',kind='scatter')
# 多组散点图
sns.scatterplot(data=tips,x='total_bill',y='tip',hue='smoker')
sns.relplot(data=tips,x='total_bill',y='tip',hue='smoker')
# 多变量散点图
sns.relplot(data=tips,x='total_bill',y='tip',hue='smoker',col='time')
# 分类散点图
import seaborn as sns
tips = sns.load_dataset("tips")
# 绘制分类散点图
sns.stripplot(x="total_bill", data=tips)
sns.stripplot(x="total_bill", y="day",data=tips)
sns.stripplot(y="total_bill", x="day",data=tips)
sns.stripplot(y="total_bill", x="day",data=tips,hue='sex')
sns.stripplot(y="total_bill", x="day",data=tips,hue='sex',dodge=True)
sns.stripplot(y="total_bill", x="day",data=tips,hue='sex',dodge=True)
sns.catplot(y="total_bill",x="day",data=tips,hue='sex',dodge=True,marker="D",col='smoker')
# 绘制展开的散点图
sns.swarmplot(y="total_bill", x="day",data=tips,hue='sex',marker="v")
sns.catplot(y="total_bill",x="day",data=tips,hue='sex',marker="v",col='smoker',kind='swarm')
八、盒图
import seaborn as sns
# 示例数据
tips = sns.load_dataset("tips")
sns.boxplot(x="day", y="total_bill",data=tips)
sns.boxplot(x="day", y="total_bill",data=tips,hue="smoker")
sns.boxplot(x="day", y="total_bill",data=tips,hue="smoker",
fill=False, # 填充箱体,默认为True
gap=0.1, # 箱体间隔
width=0.5, # 箱体宽度
notch=True # 箱体是否缺口
)
sns.catplot(x="day", y="total_bill",data=tips,kind="box")
sns.catplot(x="day", y="total_bill",data=tips,kind="box",col="sex")
九、小提琴图
sns.violinplot(x="day", y="total_bill",data=tips)
sns.violinplot(x="day", y="total_bill",data=tips,hue="smoker")
sns.violinplot(x="day", y="total_bill",data=tips,hue="smoker",fill=False)
# 空心
sns.violinplot(x="day", y="total_bill",data=tips,hue="smoker",fill=False,split=True)
# 拼接成1个
sns.violinplot(x="day",y="total_bill",data=tips,hue="smoker",fill=False,split=True,gap=0.1) # 设置间隔
sns.catplot(x="day", y="total_bill",data=tips,hue="smoker",kind="violin",col="sex")
十、热力图
import seaborn as sns
import matplotlib.pyplot as plt
# 示例数据
flights = sns.load_dataset("flights")
flights
data = flights.pivot(index='month',columns='year',values='passengers')
data
sns.heatmap(data)
sns.heatmap(data,annot=True,fmt='d')
# annot:是否显示数值,fmt:数值显示格式
sns.heatmap(data,annot=True,fmt='d',linewidths=.5)
# linewidths:线宽
sns.heatmap(data,annot=True,fmt='d',linewidths=.5,cbar=False)
# cbar:是否显示颜色条
sns.heatmap(data,annot=True,fmt='d',linewidths=.5,cbar=False,cmap='YlGnBu')
# cmap:颜色条样式
sns.heatmap(data,annot=True,fmt='d',linewidths=.5,cbar=False,cmap='Blues')
# cmap:颜色条样式
sns.heatmap(data,annot=True,fmt='d',linewidths=.5,cbar=False,vmin=200,vmax=400)
# vmin,vmax:设置颜色条的最大最小值
十一、点图
import seaborn as sns
import matplotlib.pyplot as plt
# 示例数据
tips = sns.load_dataset("tips")
# 使用pointplot绘制点图
sns.pointplot(x="day", y="total_bill",data=tips)
# 分组
sns.pointplot(x="day", y="total_bill",data=tips,hue='sex')
# 设置标记
sns.pointplot(x="day", y="total_bill",
data=tips,hue='sex',markers=['o','s'],linestyles=['-','--'])
# 设置dodge,偏离图形中心的距离
sns.pointplot(x="day", y="total_bill",
data=tips,hue='sex',markers=['o','s'],linestyles=['-','--'],dodge=True)
# 设置catplot
sns.catplot(x="day", y="total_bill",data=tips,hue='sex',markers=['o','s'],linestyles=['-','--'],dodge=True,kind='point')
# 分图
sns.catplot(x="day", y="total_bill",data=tips,hue='sex',markers=['o','s'],linestyles=['-','--'],dodge=True,kind='point',col='smoker')