Fork me on GitHub

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]:
 
 total_billtipsexsmokerdaytimesize
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 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]) 
 
posted @ 2022-02-23 09:29  奥辰  阅读(3662)  评论(0编辑  收藏  举报