seaborn学习笔记(二):散点图、线图
In [2]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
加载seaborn官方小费数据用于后续演示:
In [3]:
# seaborn官方小费数据
tips = sns.load_dataset("tips")
tips.head(2)
Out[3]:
1 lineplot()绘制散点图¶
lineplot()主要参数如下:
- x:横轴数据,可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一个key)
- y:纵轴数据,可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一个key)
- hue:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一个key),seaborn将根据这一列设置不同颜色
- size:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一个key),seaborn将根据这一列设置不同粗细、大小
- style:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一个key),seaborn将根据这一列设置不同线型
- data:作图数据
- palette:颜色面板
- hue_order:字符串组成的list,设置hue后设置各颜色顺序
- sizes:size参数设置后,sizes用户设置粗细、大小的变化范围
- size_order:字符串组成的list,设置size后,将按照size_order顺序设置
- dash:确定如何为style变量的不同级别绘制线条的对象。设置为True将使用默认的短划线代码,或者您可以将短划线代码列表或style变量的字典映射级别传递给短划线代码。设置为False将对所有子集使用实线。线段在 matplotlib 中指定: (segment, gap)长度的元组,或用于绘制实线的空字符串。
- markers:布尔型,list或字典,是否为不同的style参数设置不同的标记
- style_order:字符串组成的list,设置style后将按照style_order顺序设置线型或散点形状
- estimator:当一个x值对应对个y值是,如果进行聚合,可以传递一个调用方法,例如:np.mean进行求平均值,也可以传递None,表示绘制所有
- ci:与估算器聚合时绘制的置信区间的大小。 “sd”表示绘制数据的标准偏差。 设置为 None 将跳过
- n_boot:整型,用于计算置信区间的 bootstrap 数。
- err_style: "band"或"bars",是否用半透明误差带或离散误差棒绘制置信区间。
- err_band:关键字参数字典。用于控制误差线美观的附加参数。 kwargs传递给ax.fill_between或ax.errorbar,具体取决于err_style。
- sort:布尔值,如果为真,则数据将按 x 与 y 变量排序,否则行将按照它们在数据集中出现的顺序连接点。
- ax:matplotlib 坐标轴,绘制图像的坐标对象,否则使用当前坐标轴,通过该参数,配合matplotlib,可绘制更加灵活的子图
- alpha:设置不透明度
1.1 基本图像¶
In [26]:
_ = sns.lineplot(x="day", y="total_bill", data=tips)
1.2 hue:根据指定字段设置不同颜色¶
In [27]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, hue="sex")
1.3 size:根据指定字段设置折线粗细¶
In [29]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, size="sex")
1.4 style:根据指定字段设置线型¶
In [33]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, style="sex")
1.5 markers:根据指定字段设置不同标记¶
In [34]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, style="sex", markers=True)
1.6 err_style:绘制错误条或错误带¶
在上述绘制的图像中,如果一个x值对应多个y值,那么折线上下都有错误带出现,指示多个y值的取值范围,通过err_style参数可以设置显示错误带或者错误条,默认值为“band”表示显示错误带。
In [36]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, hue="sex", err_style="band")
In [37]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, hue="sex", err_style="bars")
也可以设置为None,表示既不绘制错误带,也不绘制错误条:
In [38]:
_ = sns.lineplot(x="day", y="total_bill", data=tips, hue="sex", err_style=None)
2 scatterplot()绘制散点图¶
scatterplot()主要参数如下:
- x:横轴数据,可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一个key)
- y:纵轴数据,可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一个key)
- hue:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一个key),seaborn将根据这一列设置不同颜色
- size:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一个key),seaborn将根据这一列设置不同粗细、大小
- style:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一个key),seaborn将根据这一列设置不同线型或散点形状
- data:作图数据
- palette:颜色面板
- hue_order:字符串组成的list,设置hue后设置各颜色顺序
- sizes:size参数设置后,sizes用户设置粗细、大小的变化范围
- size_order:字符串组成的list,设置size后,将按照size_order顺序设置
- markers:布尔型,list或字典,是否为不同的style参数设置不同的标记
- style_order:字符串组成的list,设置style后将按照style_order顺序设置线型或散点形状
- estimator:当一个x值对应对个y值是,如果进行聚合,可以传递一个调用方法,例如:np.mean进行求平局,也可以传递None,表示绘制所有
- ci:与估算器聚合时绘制的置信区间的大小。 “sd”表示绘制数据的标准偏差。 设置为 None 将跳过
- n_boot:整型,自举法的数量,用于计算区间的置信度
- alpha:设置不透明度
- ax:matplotlib 坐标轴,绘制图像的坐标对象,否则使用当前坐标轴,通过该参数,配合matplotlib,可绘制更加灵活的子图
可见,scatterplot()方法与relplot()、lineplot()方法参数十分类似。
2.1 x, y, data:传递数据¶
对于参数x,y,可以直接传递一个向量,例如DataFrame中的一列,也可以传递一个字符串,不过当传递字符串时,必须是data参数中的一个key,也就是说,当x、y是一个字符串时,必须传递data参数。
In [4]:
# 以下两种传参方式等效:
_ = sns.scatterplot(x=tips["total_bill"], y=tips["tip"])
# _ = sns.relplot(x="total_bill", y="tip", data=tips)
也可以不传递x, y,直接传递data,这时,seaborn将以行索引为x,每一列为y,分别进行绘图:
In [6]:
_ = sns.scatterplot(data = tips[['total_bill', 'tip', 'size']])
2.2 hue:根据指定字段设置不同颜色¶
根据是否抽烟,分别绘制不同颜色圆点:
In [7]:
#消费总金额和小费金额的散点图
_ = sns.scatterplot(x="total_bill", y="tip", data=tips, hue='smoker')
2.3 size:根据指定字段设置圆点(折线)大小粗细¶
In [8]:
_ = sns.scatterplot(x="total_bill", y="tip", data=tips, size='smoker')
2.4 style:根据指定字段设置线型或散点形状¶
In [9]:
_ = sns.scatterplot(x="total_bill", y="tip", data=tips, style='smoker')
2.5 alpha:设置不透明度¶
In [44]:
_ = sns.scatterplot(x="total_bill", y="tip", data=tips, hue='smoker', alpha=0.5)
2.6 ax:绘制多样化子图¶
relplot()方法通过row或col参数虽然可以绘制子图,但是,子图只能是统一类型图像,但在lineplot()和scatterplot()方法中,通过ax参数,可以绘制多样化的子图。
In [3]:
fig, ax =plt.subplots(1,2)
_ = sns.scatterplot(x="total_bill", y="tip", data=tips, hue='smoker', ax=ax[0])
_ = sns.lineplot(x="size", y="total_bill", data=tips, hue='smoker', ax=ax[1])
作者:奥辰
微信号:chb1137796095
Github:https://github.com/ChenHuabin321
欢迎加V交流,共同学习,共同进步!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。