relplot:
这个函数功能非常强大,可以用来表示多个变量之间的关联关系。默认情况下是绘制散点图,也可以绘制线性图,具体绘制什么图形是通过kind参数来决定的。
scatterplot和lineplot是relplot的一个封装。
- scatterplot:relplot(kind=’scatter’)。
- lineplot:relplot(kind=’line’)。
relplot在绘制的时候,不能直接给x和y指定具体的值,而应该使用data参数DataFrame中的列的名字。
import seaborn as snsimport pandas as pdtips = pd.read_csv("dataset/tips.csv")tips.head()'''total_bill tip sex smoker day time size0 16.99 1.01 Female No Sun Dinner 21 10.34 1.66 Male No Sun Dinner 32 21.01 3.50 Male No Sun Dinner 33 23.68 3.31 Male No Sun Dinner 24 24.59 3.61 Female No Sun Dinner 4'''sns.relplot(x="total_bill",y="tip",data=tips)

# hue参数是用来控制第三个变量的颜色显示的。比如我们在以上图的基础之上体现出星期几的参数sns.relplot(x="total_bill",y="tip",hue='day',data=tips)

# col和row,可以将图根据某个属性的值的个数分割成多列或者多行。# 比如在以上图的基础之上我们想要把Lunch(午餐)和Dinner(晚餐)以及男人和女人分割成4个图来显示。sns.relplot(x="total_bill",y="tip",col="time",row="sex",data=tips)

# 有时候我们的图有很多,默认情况下会在一行中全部展示出来,那么我们可以通过col_wrap来指定具体多少列。sns.relplot(x="total_bill",y="tip",col="day",col_wrap=3,data=tips)

# sns.scatterplot(x="total_bill",y="tip",data=tips)sns.relplot(x="total_bill",y="tip",data=tips,kind="scatter",size="size") # 用size这一列的值,给散点的大小(size)做区分

绘制折线图
relplot通过设置kind=”line”可以绘制折线图。并且他的功能比plt.plot更加强大。plot只能指定具体的x和y轴的数据(比如x轴是N个数,y轴也必须为N个数)。而relplot则可以在自动在两组数据中进行计算绘图。
fmri = pd.read_csv("dataset/fmri.csv")fmri.head()'''subject timepoint event region signal0 s13 18 stim parietal -0.0175521 s5 14 stim parietal -0.0808832 s12 18 stim parietal -0.0810333 s11 18 stim parietal -0.0461344 s10 18 stim parietal -0.037970'''sns.relplot(x="timepoint",y='signal',data=fmri,kind="line")# 中间的那个实线,表示在同一个时间点数值的平均值# 外面的透明阴影部分是置信区间,默认展示置信区间,如果不想要的话,可以传入参数cl=None

# 设置hue为event,就会根据event来绘制不同的颜色# 设置style为event,就会根据event来设置线条的样式# 设置hue_order 会将event的样式显示换个顺序反过来显示# 使用lineplot只能绘制一个,不能使用col和row将图拆开了sns.lineplot(x="timepoint",y='signal',data=fmri,hue="region",style="region",hue_order=['frontal','parietal'])

# 设置col为region,就会根据region值的个数来绘制指定个数的图sns.relplot(x="timepoint",y='signal',data=fmri,kind="line",hue="region",col="event",style="region")

sns.relplot(x="x",y="y",data=pd.DataFrame({"x":np.arange(10),"y":np.sin(np.arange(10))}),kind="line")

