2020-11-30
数据分析
00

目录

可视化统计关系
散点图
绘制x、y二维关系
用不同元素颜色表示第三维变量
用不同元素尺寸表示第三维变量
用不同元素样式表示第三维变量
同时使用元素的颜色和样式表示第三维、第四维变量
使用列表示第三维变量
使用行、列表示第三、第四维变量
增加第三、四、五、六维变量
线型图
表示x、y以外维度变量
不显示误差带,显示每个点的离散误差棒表示置信区间

title: 学习 seaborn [01]: 散点图 & 线型图 slug: seaborn-scatter-line date: 2020-11-30 tags:

  • seaborn
  • python category: 数据分析 link: description: type: text

可视化统计关系

表示统计关系的图分为散点图和线型图两类。统一的FacetGrid图级接口函数为relplot()。

散点图

python
import seaborn as sns import pandas as pd %matplotlib inline # seaborn预设主题:darkgrid(默认),whitegrid,dark,white 以及 ticks sns.set() # 导入数据集。由于sns.load_dataset连接不上服务器,使用pandas导入本地下载的数据集 tips = pd.read_csv('seaborn-data-master/tips.csv') display(tips)
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
... ... ... ... ... ... ... ...
239 29.03 5.92 Male No Sat Dinner 3
240 27.18 2.00 Female Yes Sat Dinner 2
241 22.67 2.00 Male Yes Sat Dinner 2
242 17.82 1.75 Male No Sat Dinner 2
243 18.78 3.00 Female No Thur Dinner 2

244 rows × 7 columns

绘制x、y二维关系

x、y必须是数值型

绘制散点图方法有两种:

  • relplot(),为scatterplot()和lineplot()的统一接口,默认绘制散点图,为FacetGrid图像级别接口,可绘制多个子图;
  • scatterplot(),为ax基础轴级函数,无法绘制子图,使用hue, size, style 这三个参数来控制绘图属性,用法类似relplot();
python
# 绘制散点图,x,y必须是数值型 g = sns.relplot(x='total_bill', y='tip', data=tips)

用不同元素颜色表示第三维变量

第三维数据必须是离散、有限的

python
g = sns.relplot(x='total_bill', y='tip', hue='sex', data=tips)

用不同元素尺寸表示第三维变量

python
g = sns.relplot(x='total_bill', y='tip', size='sex', data=tips)

用不同元素样式表示第三维变量

python
g = sns.relplot(x='total_bill', y='tip', style='sex', data=tips)

同时使用元素的颜色和样式表示第三维、第四维变量

一般从元素的颜色、尺寸、样式三这种选其二同时使用,三者同时使用时图像在视觉上比较混乱。

python
g = sns.relplot(x='total_bill', y='tip', hue='day', style='sex', data=tips)

使用列表示第三维变量

col_wrap参数控制每列的图像数量。

col_order参数控制图像顺序。

python
g = sns.relplot(x='total_bill', y='tip', col='day', col_wrap=2, col_order=['Thur', 'Sat', 'Fri', 'Sun'], data=tips)

使用行、列表示第三、第四维变量

python
g = sns.relplot(x='total_bill', y='tip', col='smoker', row='sex', data=tips)

增加第三、四、五、六维变量

除x、y以外,元素颜色、样式、尺寸三选其二,加上行、列,可以表示第三、四、五、六维变量。

python
g = sns.relplot(x='total_bill', y='tip', hue='day', style='time', col='smoker', row='sex', data=tips)

线型图

x、y必须是数值型

绘制散点图方法有两种:

  • relplot(kind='line'),为FacetGrid图像级别接口,可绘制多个子图;
  • lineplot(),为ax基础轴级函数,无法绘制子图,使用hue, size, style 这三个参数来控制绘图属性,用法类似relplot();
python
fmri = pd.read_csv('seaborn-data-master/fmri.csv') display(fmri)
subject timepoint event region signal
0 s13 18 stim parietal -0.017552
1 s5 14 stim parietal -0.080883
2 s12 18 stim parietal -0.081033
3 s11 18 stim parietal -0.046134
4 s10 18 stim parietal -0.037970
... ... ... ... ... ...
1059 s0 8 cue frontal 0.018165
1060 s13 7 cue frontal -0.029130
1061 s12 7 cue frontal -0.004939
1062 s11 7 cue frontal -0.025367
1063 s0 0 cue parietal -0.006899

1064 rows × 5 columns

python
ax = sns.lineplot(x='timepoint', y='signal', data=fmri)

表示x、y以外维度变量

类似散点图,可使用hue、style、size来表示第三、第四维变量,也可使用relplot()增加多行多列表示更多维度变量。

python
ax = sns.lineplot(x='timepoint', y='signal', hue='event', style='region', data=fmri)

style参数默认改变线型,使用markersdashes参数改变标记样式,保持线型不变。

python
ax = sns.lineplot(x='timepoint', y='signal', hue='event', style='region', markers=True, dashes=False, data=fmri)

不显示误差带,显示每个点的离散误差棒表示置信区间

err_style控制是否用半透明误差带或离散误差棒绘制置信区间,取值有两个:

  • band:用半透明误差带
  • bars:离散误差棒

ci控制置信区间大小,取值为整数、sd或None。

python
ax = sns.lineplot(x='timepoint', y='signal', hue='event', err_style='bars', ci=68, data=fmri)

本文作者:tsingk

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!