Seaborn系列(六):样式、数据集及组合图

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语句内才能起作用。

扫描二维码关注公众号,回复: 14583630 查看本文章

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

style

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个数据集,所有数据集都在官方教程中作为示例使用了。简单介绍如下:

  1. ‘flights’:航空公司从1949年到1960年每个月乘坐人数。(有三列数据,分别是:年、月、乘客数量)
  2. ‘anagrams’:来自一个心理学实验的数据。二十名测试者,分为注意力集中和不集中两类,每个人玩回文字字谜游戏,每个人记录三种游戏结果得分情况。
  3. ‘tips’:餐厅小费数据。由日期、时间、总账单、小费,消费者性别,是否抽烟,以及用餐人数组成。
  4. ‘penguins’:企鹅数据集。由物种、岛、鸟嘴长度、鸟嘴宽度、鳍足长度、体重、性别组成。
  5. ‘iris’:鸢尾花卉数据集。由花萼长度,花萼宽度,花瓣长度,花瓣宽度鸢尾花卉种类组成。
  6. ‘fmri’:事件相关功能核磁共振成像数据。由测试者、时间点、事件、刺激类型、大脑区域,信号等组成。
  7. ‘anscombe’:安斯库姆四重奏数据集。用于展现当数据序列差别非常大时一些统计值却相等的著名数据集。一共包含了4组数据,每组11个散点,四组数据均值、方差、相关系数及线性回归曲线(mean, variance, correlation, and linear regression lines)都相同,但具体分布差别巨大。
  8. ‘titanic’:泰坦尼克号船员数据集,数据集描述的是船员的性别、年龄、所在船仓等级等特征及最后是否存活。
  9. ‘diamonds’:钻石数据集。由钻石价格、克拉、切割质量、台面、钻石颜色、纯度、X:长度、Y:宽度、Z:深度、总深度百分比组成。
  10. ‘attention’
  11. ‘brain_networks’
  12. ‘car_crashes’
  13. ‘dots’
  14. ‘exercise’
  15. ‘gammas’
  16. ‘geyser’
  17. ‘mpg’
  18. ‘planets’
  19. ‘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()

jointplot1_scatter

使用hue参数后,散点图将分颜色绘制,上方和右侧的分布图将用kde(核密度分布图)代替直方图。

sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, hue="species")

jointplot1_scatter_hue

sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="kde")

jointplot2_kde

sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="kde", hue="species")

jointplot2_kde_hue

sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="hist")

jointplot3_hist

sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="hist", hue="species")

jointplot3_hist_hue

sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="hex")

jointplot4_hex

sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="reg")

jointplot5_reg

sns.jointplot(x="bill_length_mm", y="bill_depth_mm", data=data, kind="resid")

jointplot6_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)

paireplot

data = sns.load_dataset("penguins")
sns.pairplot(data=data,hue="species")

paireplot_hue



Seaborn系列目录


个人总结,部分内容进行了简单的处理和归纳,如有谬误,希望大家指出,持续修订更新中。

修订历史版本见:https://github.com/hustlei/AI_Learning_MindMap

未经允许请勿转载。

猜你喜欢

转载自blog.csdn.net/hustlei/article/details/123092678