Seaborn可视化从入门到精通:风格设置、调色板与常用图表详解
Seaborn可视化
Seaborn的介绍
简介
Seaborn 是以 matplotlib为底层,更容易定制化作图的Python库。官网http://seaborn.pydata.org/
Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易。在大多数情况下使用Seaborn就能做出很具有吸引力的图,而使用
matplotlib就能制作具有更多特色的图,换句话说, matplotlib 更加灵活,可定制化,而Seaborn像是更高级的封装,使用方便快捷。
应该把Seaborn视为 matplotlib 的补充,而不是替代物。
安装
pip install seaborn示例:seaborn简单使用
importmatplotlib.pyplotaspltimportseabornassns sns.set()plt.plot([1,5,10],[1,3,5])plt.show()加载数据集
load_dataset()
seaborn默认提供了数据集,方便测试图表的使用
importseabornassan sns.load_dataset('tips')sns.get_data_home()风格设置
除了各种绘图方式外,图形的美观程度可能是我们最关心的了。将它放到第一部分,因为风格设置是一些通用性的操作,对于各种绘图方法都适用。
Seaborn 支持的风格有5种:
- darkgrid 黑背景-白格
- whitegrid 白背景-白格
- dark 黑背景
- white 白背景
- ticks
设置风格的方法:
set(style=‘’)
set_style(value) 统一设置
axes_style(value) 单一设置
importseabornassnsfrommatplotlibimportpyplotasplt# 支持直接修改matplotlib的样式#设置风格#设置风格,使用set_style()函数设置后,后面的图都会使用该风格sns.set_style('whitegrid')#绘图plt.plot([1,2,3],[4,5,6])data=sns.load_dataset('tips')# 5种样式sns.set_style('whitegrid')sns.barplot(data=data,x='sex',y='size')sns.set_style("white")sns.barplot(data=data,x='sex',y='size')sns.set_style("darkgrid")sns.barplot(data=data,x='sex',y='size')sns.set_style("dark")sns.barplot(data=data,x='sex',y='size')sns.set_style("ticks")sns.barplot(data=data,x='sex',y='size')# set方法实现sns.set(style='whitegrid')sns.barplot(data=data,x='sex',y='size')# 单独设置withsns.axes_style('darkgrid'):#临时设置风格sns.barplot(data=data,x='sex',y='size')调色板
颜色比图形样式的其他方面更重要,因为如果有效使用颜色可以更凸显示数据的结果与重要
Seaborn可以轻松选择和使用适合您正在使用的数据类型的调色板以及您可视化的目标
支持的方法
- 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()设置所有图的颜色
调色板
importseabornassns#获取默认调色板sns.color_palette()sns.color_palette('deep')#seaborn支持的颜色,10个色块连续的调色板
sns.color_palette('deep',6)#6种颜色sns.color_palette('Reds')#matplotlib支持的颜色sns.color_palette('Reds_r')#matplotlib支持的颜色,r表示reverse自定义连续调色板
sns.palplot(sns.light_palette('green'))sns.palplot(sns.dark_palette('purple'))xkcd_rgb 颜色
从xkcd_rgb这产生了一组颜色https://xkcd.com/color/rgb/,可以使用xkcd_rgb在seaborn中引用它们
sns.xkcd_palette(['purple','dark pink','algae','spring green','greyish blue'])色板的应用
#设置到matplotlibfrommatplotlibimportpyplotasplt#plt.plot([1,3,2,4,5,],[1,9,4,16,25],color=sns.color_palette('husl')[2])plt.bar([1,3,2,4,5,],[1,9,4,16,25],color=sns.color_palette('husl',5))#设置到seabornsns.barplot(x=[1,2,3,4,5],y=[1,4,9,16,25],palette=sns.color_palette('husl',5),hue=[1,2,3,4,5],legend=False)【图片7】
柱状图
常见方法
- barplot方法 单独绘制条形图
- catplot方法 可以条形图、散点图、盒图、小提亲图、等
- countplot方法 统计数量
常规条图
importseabornassns#加载数据表tips=sns.load_dataset("tips")#常规数据表sns.barplot(data=tips,x='day',y='total_bill')横向条图
importseabornassns# 示例数据tips=sns.load_dataset("tips")#横向条图sns.barplot(data=tips,x='total_bill',y='day')分组条图
import seaborn as sns # 示例数据 tips = sns.load_dataset("tips") #分组条图 sns.barplot(data=tips,x="day", y="total_bill", hue="sex")设置颜色
importseabornassns# 示例数据tips=sns.load_dataset("tips")#设置颜色sns.barplot(data=tips,x="day",y="total_bill",color="blue")#color适用与单色#设置颜色sns.barplot(data=tips,x="day",y="total_bill",hue="sex",palette='dark:salmon')#如果是多色,使用palette参数统计数量
importseabornassns tips.groupby('day').count()直方图
方法
- histplot方法 绘制单变量或双变量直方图来显示数据集的分布
- displot方法 绘制直方图、核密度图。可以比较多个变量分布情况
常规
importseabornassns# 示例数据tips=sns.load_dataset("tips")#统计单个指标的频数sns.histplot(tips['total_bill'])sns.displot(tips['total_bill'])额外设置
额外的设置#直方图+ KDE核密度估计# 核密度估计的作用是用来估计概率密度函数的,它可以用来描述随机变量的密度分布# 一sns.displot(data=tips,x='total_bill',kde=True)# 二sns.histplot(data=tips,x='total_bill',kde=True)#设置分组# 一sns.histplot(data=tips,x='total_bill',kde=True,bins=10)# 二sns.displot(data=tips,x='total_bill',kde=True,bins=10)#设置多组sns.histplot(data=tips,x='total_bill',kde=True,hue='sex')sns.displot(data=tips,x='total_bill',kde=True,hue='sex')#设置多组显示的方式#layer:默认值,将多组数据叠加在一起sns.displot(data=tips,x='total_bill',kde=True,hue='sex',multiple='layer')#dodge:将多组数据分开显示sns.displot(data=tips,x='total_bill',kde=True,hue='sex',multiple='dodge')#stack:将多组数据堆叠显示sns.displot(data=tips,x='total_bill',kde=True,hue='sex',multiple='stack')#fill:以百分比堆叠的形式展示sns.displot(data=tips,x='total_bill',kde=True,hue='sex',multiple='fill')# 定制直方图sns.displot(data=tips,x='total_bill',kde=True,color='skyblue',edgecolor='black',linewidth=1)