一、散点图:scatterplot
函数:seaborn.scatterplot
常用参数:
x,y | array,str,series,输入变量。字符串应该是data中对应的变量名,使用series将会在轴上显示名称。 | data | 接收DataFrame,表示用于绘图的数据集。 | hue | 接收data中的变量名,传入分类变量,以颜色分类。 | size | 接收data中的变量名,传入分类变量,以标记大小分类。 | sizes | 接收list,dict,tuple,确定不同级别的size。可以一一映射,也可以设置最大最小的范围。 | style | 接收data中的变量名,传入分类变量,以标记形状分类。 | markers | bool,list,dict,确定不同级别的style。 | alpha | float,“auto”,点的透明度。默认为“auto” | legend | “brief”,“full”,False。图形图例绘制形式,默认为“brief” | palette | 调色板,改变默认绘图颜色。 |
1.两个变量基础作图
import seaborn as sns
from matplotlib import pyplot as plt
tips=sns.load_dataset('tips')
#注意:这里在下载数据集时报错了,原因是请求被服务器拒绝了我们可以去官方数据集网站上https://github.com/mwaskom/seaborn-data把数据集下载到Seaborn-data文件夹中,再执行语句就可以了。
#使图形正常显示中文
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False
#观察数据
tips.head()
>
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
#画图
ax=sns.scatterplot(x='total_bill',y='tip',data=tips)
ax.set_title('总账单与小费散点图')
?2.通过添加第三个变量来分类变量
(1)对点着色和改变标记来显示分组变量
sns.scatterplot(x='total_bill',y='tip',hue='time',style='time',data=tips)
?(2)通过改变点的大小并添加连续颜色来显示定量类别变量
sns.scatterplot(x='total_bill',y='tip',size='size',hue='size',data=tips)
(3)使用自定义的分组点标记
markers={'Lunch':"o","Dinner":"X"}
sns.scatterplot(x="total_bill",y="tip",style="time",hue="time",markers=markers,data=tips,palette='Set2')
?
?(4)也可以向scatterplot函数中传入matplotlib参数控制绘图元素
sns.scatterplot(x="total_bill",y="tip",data=tips,color='red')
plt.title('总账单与小费散点图')
二、折线图:lineplot?
函数:seaborn.lineplot
常用参数:
x,y | | data | | dashes | bool,list,dict,确定不同级别的style | estimate | 接收pandas方法或可调用函数,接收y在同一个x级别的聚合方法。 | ci | int,“sd”,None,表示使用estimate聚合的置信区间大小,“sd”表示数据标准差。 | n_boot | 表示计算置信区间个数。 | sort | bool,表示按照x和y变量排序或出现顺序排序。 | err_style | "band“,”bars“,表示是使用半透明误差带还是离散误差棒绘制置信区间,默认为”band“ | err_band | dict,用于控制误差线条的参数。 |
用fmri数据集绘制用颜色和线条样式显示分类变量的折线图。
sns.lineplot(x="timepoint",y="signal",hue="event",style="event",data=fmri)
?使用点标记折线图的转折:
sns.lineplot(x="timepoint",y="signal",hue="event",style="event",markers=True,data=fmri)
修改误差带显示形式与置信区间大小
sns.lineplot(x="timepoint",y="signal",hue="event",style="event",err_style="bars",ci=80,data=fmri)
?
使用dots数据集绘制折线图,设置sizes参数,更改size传入变量的线条宽度。
dots=sns.load_dataset('dots')
dots.head()
>
align choice time coherence firing_rate
0 dots T1 -80 0.0 33.189967
1 dots T1 -80 3.2 31.691726
2 dots T1 -80 6.4 34.279840
3 dots T1 -80 12.8 32.631874
4 dots T1 -80 25.6 35.060487
ax1=sns.lineplot(x="time",y="firing_rate",size="coherence",hue="choice",style="align",data=dots,palette="Set1")
ax1.set_title("默认线宽")
?
?自定义线宽:
ax2=sns.lineplot(x="time",y="firing_rate",size="coherence",sizes=(0.5,1.5),hue="choice",style="align",data=dots,palette="Set1")
ax2.set_title("自定义线宽")
?三、分面绘图:relplot
能够同时访问scatterplot和lineplot绘制多图网格的关系图。
函数:seaborn.relplot
常用参数:
x,y | | data | | row,col | 接收data中的变量名,传入分类变量,决定网格图的分面。 | row_order,col_order | 接收list,传入分类变量类别名称列表并以此为顺序。 | kind | 接收”scatter“”line“,选择绘图函数。默认为scatter | height | 接收scalar,表示网格图的高度,默认为5. | aspect | 网格图的宽度,默认为1. | facet_kws | 接收dict,表示传递给FacetGrid的其他参数,默认为”auto“ |
使用tips数据集,先绘制单构面散点图:
sns.set(style='ticks')
sns.relplot(x="total_bill",y="tip",hue="day",data=tips)
?传入分类变量smoker和time到row和col中,可以绘制网格图。
sns.set(style='ticks')
sns.relplot(x="total_bill",y="tip",hue="sex",row="time",col="smoker",data=tips)
参数col_wrap可以控制列数:
sns.set(style='ticks')
sns.relplot(x="total_bill",y="tip",hue="sex",col="smoker",col_wrap=1,data=tips)
?
?使用fmri数据集绘制网格折线图:
sns.relplot(x="timepoint",y="signal",col="event",data=fmri,kind="line")
?
|