11.md 8.8 KB
Newer Older
L
leijuzi 已提交
1
### seaborn.scatterplot
W
init  
wizardforcel 已提交
2

L
leijuzi 已提交
3
```python
W
init  
wizardforcel 已提交
4 5
seaborn.scatterplot(x=None, y=None, hue=None, style=None, size=None, data=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, markers=True, style_order=None, x_bins=None, y_bins=None, units=None, estimator=None, ci=95, n_boot=1000, alpha='auto', x_jitter=None, y_jitter=None, legend='brief', ax=None, **kwargs)
```
L
leijuzi 已提交
6
绘制几个语义分组的散点图。
W
init  
wizardforcel 已提交
7

L
leijuzi 已提交
8 9 10 11
数据的不同子集的x和y之间的关系可以用hue, size, style这三个参数来控制绘图属性。
这些参数控制用于识别不同子集的视觉语义信息,三种语义类型全部使用的话可以独立显示三个维度,
但是这种风格的绘图很难解释或者说没大部分时候什么效果。使用过多的语义信息
(例如:对同一个变量同时使用hue和style)对作图来说是很有帮助同时也更容易理解。
W
init  
wizardforcel 已提交
12

L
leijuzi 已提交
13
阅读下面的教程可以get更多信息哦。
W
init  
wizardforcel 已提交
14

L
leijuzi 已提交
15 16 17 18
**参数**:
 
x ,y: data或是向量data里面的变量名字,可选择
>* 输入数据的变量,必须是数字,可以直接传递数据或引用数据中的列
W
init  
wizardforcel 已提交
19

L
leijuzi 已提交
20 21 22
hue:  data或是向量data里面的变量名字,可选择
>* 将产生不同大小的点的变量进行分组,可以是类别也可以是数字,
但是大小映射在后一种情况会有不同的表现
W
init  
wizardforcel 已提交
23

L
leijuzi 已提交
24 25
style:  data或是向量data里面的变量名字,可选择
>* 将产生不同标记的点的变量进行分类,可以有一个数字类型,但是这个数字会被当作类别
W
init  
wizardforcel 已提交
26

L
leijuzi 已提交
27 28
data: DataFrame
>* Tidy (“long-form”) dataframe 它的每一列是一个变量,每一行是一个观测值
W
init  
wizardforcel 已提交
29

L
leijuzi 已提交
30 31 32
plaette : 调色板的名字、列表或字典,可选
>* 用于不同level的hue变量的颜色,应该是可以被 color_palette() 执行的something,
或者是一个可以对matplotlib colors映射hue级别的字典。
W
init  
wizardforcel 已提交
33

L
leijuzi 已提交
34 35
hue_order: 列表,可选
>* 对hue变量的级别的表象有特定的顺序,否则的话,顺序由data决定。当hue是数字的时候与它不相关
W
init  
wizardforcel 已提交
36

L
leijuzi 已提交
37 38
hue_norm: 元组或标准化的对象,可选
>* 当hue变量是数字的时候,应用于hue变量的色彩映射的数据单元中的标准化。如果是类别则不相关
W
init  
wizardforcel 已提交
39

L
leijuzi 已提交
40 41 42 43
sizes: 列表,字典或元组,可选
>* 当使用size的时候,用来决定如何选择sizes的一个对象。可以一直是一个包含size数值的列表,
或者是一个映射变量size级别到sizes的字典。当size是数字时,sizes可以是包含size最大值
和最小值的元组,其他的值都会标准化到这个元组指定的范围
W
init  
wizardforcel 已提交
44

L
leijuzi 已提交
45 46
size_order: 元组,可选
>* size变量级别表现的特定顺序,否则顺序由data决定,当size变量是数字时不相关
W
init  
wizardforcel 已提交
47

L
leijuzi 已提交
48 49
size_norm:元组或标准化的对象,可选
>* 当变量size是数字时,用于缩放绘图对象的数据单元中的标准化
W
init  
wizardforcel 已提交
50

L
leijuzi 已提交
51 52 53 54
makers: 布尔型,列表或字典,可选
>* 决定如何绘制不同级别style的标志符号。设置为True会使用默认的标志符号,或者通过一系列标志
或者一个字典映射style变量的级别到markers。设置为False会绘制无标志的线。
Markers在matplotlib中指定
W
init  
wizardforcel 已提交
55

L
leijuzi 已提交
56 57
style_order: 列表,可选
>* 对于style变量级别表象的特定顺序,否则由data决定,当style是数字时不相关
W
init  
wizardforcel 已提交
58

L
leijuzi 已提交
59 60
{x,y}_bins: 元组,矩阵或函数
>* 暂时没有什么功能
W
init  
wizardforcel 已提交
61

L
leijuzi 已提交
62 63 64 65
units: {long_form_var}
>* 分组特定的样本单元。使用时,将为每个具有适当的语义的单元绘制一根单独的线,
但不会添加任何图例条目。 当不需要确切的身份时,可用于显示实验重复的分布。
目前没啥作用
W
init  
wizardforcel 已提交
66

L
leijuzi 已提交
67 68
estimator: pandas方法的名称,或者可调用的方法或者是None,可选
>* 聚类同一个x上多个观察值y,如果是None,所有的观察值都会绘制,目前暂无功能
W
init  
wizardforcel 已提交
69

L
leijuzi 已提交
70 71
ci: 整型或 'sd' or None,可选
>* 与估算器聚合时绘制的置信区间的大小。 “sd”表示绘制数据的标准偏差。 设置为None将跳过自举。 目前无功能。
W
init  
wizardforcel 已提交
72

L
leijuzi 已提交
73 74
n_boot: 整型,可选
>* 自举法的数量,用于计算区间的置信度,暂无功能
W
init  
wizardforcel 已提交
75

L
leijuzi 已提交
76 77
alpha: 浮点型
>* 设置点的不透明度
W
init  
wizardforcel 已提交
78

L
leijuzi 已提交
79 80
{x,y}_jitter:布尔或者浮点型
>* 暂无功能
W
init  
wizardforcel 已提交
81

L
leijuzi 已提交
82 83 84
legend:“brief”, “full”, or False, 可选
>* 绘制图例的方式。如果为“brief" 数字hue和size变量会代表一个样本,即便有不同的值
if "full", 每一个分组都有图例。if False 不绘制也不添加图例
W
init  
wizardforcel 已提交
85

L
leijuzi 已提交
86 87
ax: matplotlib坐标轴,可选
>* 绘制图像的坐标对象,否则使用当前坐标轴
W
init  
wizardforcel 已提交
88

L
leijuzi 已提交
89 90
kwargs:键值映射对
>* 在绘制的时候其他的键会传递给plt.scatter
W
init  
wizardforcel 已提交
91

L
leijuzi 已提交
92 93
返回值:ax:matplotlib 坐标轴
>* 返回绘制所需的坐标
W
init  
wizardforcel 已提交
94

L
leijuzi 已提交
95
请参阅官方文档
W
init  
wizardforcel 已提交
96

L
leijuzi 已提交
97
用线显示两个变量之间的关系以强调连续性。绘制带有一个分类变量的散点图,排列点以显示值的分布。
W
init  
wizardforcel 已提交
98

L
leijuzi 已提交
99
例子
W
init  
wizardforcel 已提交
100

L
leijuzi 已提交
101 102 103 104 105 106
绘制一个两个变量的简单散点图:
```python
import seaborn as sns; sns.set()
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
ax = sns.scatterplot(x='total_bill',y='tip',data=tips)
W
init  
wizardforcel 已提交
107
```
L
leijuzi 已提交
108
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard1.png)
W
init  
wizardforcel 已提交
109

L
leijuzi 已提交
110 111 112
通过其他的变量分组并且用不同的颜色展示分组
```python
ax = sns.scatterplot(x='total_bill',y='tip',hue='time',data=tips)
W
init  
wizardforcel 已提交
113
```
L
leijuzi 已提交
114
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard2.png)
W
init  
wizardforcel 已提交
115

L
leijuzi 已提交
116 117 118 119
通过不同的颜色和标记显示分组变量:
```python
ax = sns.scatterplot(x='total_bill',y='tip',
                     hue='time',style='time',data=tips)
W
init  
wizardforcel 已提交
120
```
L
leijuzi 已提交
121
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard3.png)
W
init  
wizardforcel 已提交
122

L
leijuzi 已提交
123 124 125 126
不同的颜色和标志显示两个不同的分组变量:
```python
ax = sns.scatterplot(x='total_bill',y='tip',
                     hue='day',style='time',data=tips)
W
init  
wizardforcel 已提交
127
```
L
leijuzi 已提交
128
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard4.png)
W
init  
wizardforcel 已提交
129

L
leijuzi 已提交
130 131 132
用不同大小的点显示一个变量的数量:
```python
ax = sns.scatterplot(x='total_bill',y='tip', size='size',data=tips)
W
init  
wizardforcel 已提交
133
```
L
leijuzi 已提交
134
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard5.png)
W
init  
wizardforcel 已提交
135

L
leijuzi 已提交
136 137 138 139
使用渐变的颜色显示变量的数量:
```python
ax = sns.scatterplot(x='total_bill',y='tip',
                     hue='size', size='size',data=tips)
W
init  
wizardforcel 已提交
140
```
L
leijuzi 已提交
141
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard6.png)
W
init  
wizardforcel 已提交
142

L
leijuzi 已提交
143 144 145 146 147
用一个不一样的渐变颜色映射:
```python
cmap = sns.cubehelix_palette(dark=.3,light=.8,as_cmap=True)
ax = sns.scatterplot(x='total_bill',y='tip',
                     hue='size', size='size',palette=cmap,data=tips)
W
init  
wizardforcel 已提交
148
```
L
leijuzi 已提交
149
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard7.png)
W
init  
wizardforcel 已提交
150

L
leijuzi 已提交
151 152 153 154 155
改变点大小的最小值和最大值并在图例中显示所有的尺寸:
```python
cmap = sns.cubehelix_palette(dark=.3,light=.8,as_cmap=True)
ax = sns.scatterplot(x='total_bill',y='tip',
                     hue='size',size='size', sizes=(20,200),legend='full',palette=cmap,data=tips)
W
init  
wizardforcel 已提交
156
```
L
leijuzi 已提交
157
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard8.png)
W
init  
wizardforcel 已提交
158

L
leijuzi 已提交
159 160 161 162 163
使用一个更小的颜色强度范围:
```python
cmap = sns.cubehelix_palette(dark=.3,light=.8,as_cmap=True)
ax = sns.scatterplot(x='total_bill',y='tip',hue='size',size='size',
                     sizes=(20,200),hue_norm=(0,7), legend='full',data=tips)
W
init  
wizardforcel 已提交
164
```
L
leijuzi 已提交
165
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard9.png)
W
init  
wizardforcel 已提交
166

L
leijuzi 已提交
167 168 169 170
一个类别变量不同的大小,用不同的颜色:
```python
ax = sns.scatterplot(x='total_bill',y='tip',hue='day',size='smoker',
                     palette='Set2',data=tips)
W
init  
wizardforcel 已提交
171
```
L
leijuzi 已提交
172
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard10.png)
W
init  
wizardforcel 已提交
173

L
leijuzi 已提交
174 175 176 177 178
使用一些特定的标识:
```python
markers = {'Lunch':'s','Dinner':'X'}
ax = sns.scatterplot(x='total_bill',y='tip',style='time',
                     markers=markers,data=tips)
W
init  
wizardforcel 已提交
179
```
L
leijuzi 已提交
180
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard11.png)
W
init  
wizardforcel 已提交
181

L
leijuzi 已提交
182 183 184 185
使用matplotlib的参数控制绘制属性:
```python
ax = sns.scatterplot(x='total_bill',y='tip',
                     s=100,color='.2',marker='+',data=tips)
W
init  
wizardforcel 已提交
186
```
L
leijuzi 已提交
187
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard12.png)
W
init  
wizardforcel 已提交
188

L
leijuzi 已提交
189 190 191 192 193
使用data向量代替data frame名字:
```python
iris = sns.load_dataset('iris')
ax = sns.scatterplot(x=iris.sepal_length,y=iris.sepal_width,
                     hue = iris.species,style=iris.species)
W
init  
wizardforcel 已提交
194
```
L
leijuzi 已提交
195 196 197 198 199 200 201 202 203 204
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard13.png)

传递宽格式数据并根据其索引进行绘图:
```python
import numpy as np, pandas as pd; plt.close("all")
index = pd.date_range('1 1 2000',periods=100,freq='m',name='date')
data = np.random.randn(100,4).cumsum(axis=0)
wide_df = pd.DataFrame(data,index,['a','b','c','d'])
print(wide_df.head())
ax = sns.scatterplot(data=wide_df)
W
init  
wizardforcel 已提交
205
```
L
leijuzi 已提交
206
![](https://raw.githubusercontent.com/leijuzi/img_seaborn_11/master/img_11/clipboard14.png)