Seaborn系列目录
1. Seaborn样式
1.1 设绘seaborn主题
sns.set_theme() #切换到seaborn默认主题。
#sns.set() #set是set_theme的别称,通常建议使用set函数
在0.8版本以前默认已经调用了这个函数,高版本seborn上,必须显式调用。
set_theme函数设置样式
sns.set_theme(context='notebook', style='darkgrid', palette='deep')
- context参数:上下文参数,见plotting_context()
- style参数:样式参数,见axes_style()
- palette参数:色盘参数,见color_palette()
set_theme设置字体样式
sns.set_theme(font=''sans-serif', font_scale=1)
- font参数:设置字体
- font_scale参数:缩放字体大小
set_theme设置rcParams
sns.set_theme(rc=None) :rc参数可以用rcParams字典重置set_theme设置的参数。
set_theme函数实际上就是设置matplotlib的rcparams参数。但是把参数分为了style、palette等几部分。
1.2 style样式设置
样式参数控制背景颜色、示范启用网格等样式属性,实际上也是通过matplotlib的rcParams实现的。
sns.axes_style(style=None, rc=None):获取样式参数,或者作为上下文管理器,临时改变样式。
sns.axes_style() :获取默认样式,返回一个样式字典。sns.axes_style("darkgrid) :获取darkgrid样式的参数字典。sns.axes_style("darkgrid", rc={'axes.grid':True}) :用rc覆盖样式中部分参数。
with sns.axes_style("whitegrid"): #样式仅对下方块中语句生效。
sns.barplot(x=...,y=...)
注意对于多个子图用不同样式时,add_subplot需要在with语句内才能起作用。
sns.set_style(style=None, rc=None):设置样式。
sns.set_style("whitegrid") :使用指定样式sns.set_style("whitegrid",{"grid.color": ".6", "grid.linestyle": ":"}) :对样式指定参数修改后应用样式。
1.3 可用样式style
- darkgrid
- whitegrid
- dark
- white
- ticks
1.4 颜色盘设置
sns.color_palette() :获取颜色盘,返回一个颜色列表sns.set_palette("dark") :设置颜色盘,参数可以是:
- 颜色盘名称:deep,muted,bright,pastel,dark,colorblind等
- husl或者hls
- “light:”, “dark:”, “blend:,”
- 颜色列表
1.5 上下文设置
上下文设置绘图元素的比例,用不同的上下文表示适用于较大尺寸绘图或较小尺寸绘图,设置上下文后,相同的绘图函数显示的图形会根据上下问自动缩放。
sns.set_context('paper') :最小的尺寸sns.set_context('notebook') :稍大的尺寸sns.set_context('talk') :更大的尺寸sns.set_context('poster') :最大的尺寸
1.6 恢复默认样式
sns.reset_defaults() :将所有RC参数恢复为默认设置。
2. Seaborn dataset数据集
2.1 load_dataset及缓存
Seaborn提供了一些用于学习的数据集,可以很方便的用load_dataset()调用。
sns.get_dataset_names() :可以得到所有数据集的名称sns.load_dataset(name) :根据名称从网上下载数据集,返回一个pandas的DataFrame对象
- name参数:从https://github.com/mwaskom/seaborn-data的{name}.csv加载数据集
- cache参数:如果为True,则尝试从缓存加载,如果未下载过,则下载后缓存。默认为True。
- data_home参数:获取缓存目录。用
sns.get_data_home() 可以获取缓存目录。windows上默认为C:\Users\user\seaborn-data - kargs:pandas.read_csv()函数支持的参数都可以用。
load_dataset函数需要连网,由于是从github上下载的,所以可能下国内会比较慢,甚至出错。 可以从https://github.com/mwaskom/seaborn-data下载所有文件放到缓存目录就ok了。
2.2 数据集说明
截止2022年1月,seaborn共有19个数据集,所有数据集都在官方教程中作为示例使用了。简单介绍如下:
- ‘flights’:航空公司从1949年到1960年每个月乘坐人数。(有三列数据,分别是:年、月、乘客数量)
- ‘anagrams’:来自一个心理学实验的数据。二十名测试者,分为注意力集中和不集中两类,每个人玩回文字字谜游戏,每个人记录三种游戏结果得分情况。
- ‘tips’:餐厅小费数据。由日期、时间、总账单、小费,消费者性别,是否抽烟,以及用餐人数组成。
- ‘penguins’:企鹅数据集。由物种、岛、鸟嘴长度、鸟嘴宽度、鳍足长度、体重、性别组成。
- ‘iris’:鸢尾花卉数据集。由花萼长度,花萼宽度,花瓣长度,花瓣宽度鸢尾花卉种类组成。
- ‘fmri’:事件相关功能核磁共振成像数据。由测试者、时间点、事件、刺激类型、大脑区域,信号等组成。
- ‘anscombe’:安斯库姆四重奏数据集。用于展现当数据序列差别非常大时一些统计值却相等的著名数据集。一共包含了4组数据,每组11个散点,四组数据均值、方差、相关系数及线性回归曲线(mean, variance, correlation, and linear regression lines)都相同,但具体分布差别巨大。
- ‘titanic’:泰坦尼克号船员数据集,数据集描述的是船员的性别、年龄、所在船仓等级等特征及最后是否存活。
- ‘diamonds’:钻石数据集。由钻石价格、克拉、切割质量、台面、钻石颜色、纯度、X:长度、Y:宽度、Z:深度、总深度百分比组成。
- ‘attention’
- ‘brain_networks’
- ‘car_crashes’
- ‘dots’
- ‘exercise’
- ‘gammas’
- ‘geyser’
- ‘mpg’
- ‘planets’
- ‘taxis’
3. 组合图
seaborn中包含两个组合图函数,都是figure级绘图函数。
- jointplot:绘制二维图,并在二维图上方绘制x的分布图,在右侧绘制y的分布图
- paireplot:多变量配对分布图,对data中的多个变量两两配对,分别绘制变量关系图,形成子图方阵(对角线上的子图上x,y坐标变量相同,绘制单变量分布图。其余子图绘制双变量关系图)。
3.1 jointplot组合分布图
sns.jointplot(x=None,y=None,data=None,kind='scatter',hue=None) :根据kind确定图形样式绘制。 + kind参数指定二维图形类型 + scatter:散点图。默认值 + kde:核密度图。 + hist:二维直方图。 + hex:六边形图(不能和hue同时使用) + reg:线性回归拟合图(不能和hue同时使用) + resid:线性回归拟合误差图(不能和hue同时使用) + hue参数,分组绘图。
默认情况下上方和侧方绘制直方图。当kind为scatter或kde,并且指定hue时,上方和侧方绘制kde图。
kind=“scatter”:绘制散点图,上方和右侧绘制直方图。kind默认为scatter。
import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset("penguins")
sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="scatter")
plt.show()
使用hue参数后,散点图将分颜色绘制,上方和右侧的分布图将用kde(核密度分布图)代替直方图。
sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, hue="species")
sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="kde")
sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="kde", hue="species")
sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="hist")
sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="hist", hue="species")
sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="hex")
sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="reg")
sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="resid")
3.2 pairplot配对关系图
sns.pairplot(data, hue=None, kind=‘scatter’, diag_kind=‘auto’):对data的所有变量两两配对,形成方阵,kind指定绘图类型,diag_kind指定对角线上图形类型。
- hue参数,每个图形中都分组用不同的颜色绘图
- kind参数:图形类型(scatter’, ‘kde’, ‘hist’, ‘reg’)
- diag_kind参数:单变量图(对角线)类型(’auto’, ‘hist’, ‘kde’, None)
- coner参数:corner为True时,只绘制下三角。
vars=None, x_vars=None, y_vars=None参数可以指定data中需要绘制的参数。
data = sns.load_dataset("penguins")
sns.pairplot(data=data)
data = sns.load_dataset("penguins")
sns.pairplot(data=data,hue="species")
Seaborn系列目录
个人总结,部分内容进行了简单的处理和归纳,如有谬误,希望大家指出,持续修订更新中。
修订历史版本见:https://github.com/hustlei/AI_Learning_MindMap
未经允许请勿转载。
|