seaborn关联图表之折线图和散点图

时间:2022-07-27
本文章向大家介绍seaborn关联图表之折线图和散点图,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

折线图和散点图是最常用的展示两个变量间关系的图表,在seaborn中,通过以下两个函数来绘制对应的图形

1. satterplot, 绘制散点图

2. lineplot, 绘制折线图

seaborn采用了类似ggplot2的语法,每个变量为数据框的某一列,对于散点图和折线图而言,基本的变量就是x和y两个变量了。除此之外,其他列的变量可以作为属性的映射,常用的属性映射列表如下

1. hue, 用于映射颜色

2. size,用于映射线条的宽度或者点的大小

3. style, 用于映射线条的样式或者点的样式

散点图的代码示例如下

>>> df = pd.read_csv('tips.csv')
>>> sns.scatterplot(data=df, x="total_bill", y="tip", hue="day", style="time", size="size")
>>> plt.show()

输出结果如下

折线图的代码示例如下

>>> sns.lineplot(data=df, x="total_bill", y="tip", hue="day", style="time", size='size')

输出结果如下

seaborn会自动进行属性映射,并将对应的属性添加到图例上,在映射时,我们可以通过以下两类参数来控制对应的映射属性

1. order

该系列包含了以下3个参数

1. hue_order

2. size_order

3. style_order

分别用于指定不用属性的排列情况,以hue_order为例,基本用法如下

>>> sns.scatterplot(data=df, x="total_bill", y="tip", hue="day", style="time", size='size', hue_order=['Fri','Thur','Sat','Sun'])

输出结果如下

从图例可以看出,会按照hue_order自定的顺序去映射颜色梯度,其实style属性也是类似的效果。但是有一个例外,就是size属性,当size属性对应的列为数值时,seaborn会自动将数值设置为点的大小,此时指定size_order属性时没用的。

2. norm

order系列参数控制离散变量的映射过程,而norm系列函数用于映射连续变量的映射过程,也就是当对应列为数值时的映射过程,。和order系列函数类似,norm系列包含了hue_norm和size_norm两个参数。

以hue_norm参数为例,用法如下

>>> sns.scatterplot(data=df, x="total_bill", y="tip", hue="size", style="time", hue_norm=(2, 5))

输出结果如下

seaborn会自动根据属性组合进行图例的显示,示例如下

sns.scatterplot(data=df, x="total_bill", y="tip", hue="day", style="day")

上述代码将hue和style属性映射为同一个变量,在图例中,自动将这两种属性进行了组合,输出结果如下

当多个属性对应不同变量时,就会每种属性单独一个图例显示。

scatterplot专门用于绘制散点图,lineplot用于绘制折线图,而relplot则可以在灵活调用这两个函数来绘图,而且添加了分面的支持,用法如下

>>> sns.relplot(data=df, x="total_bill", y="tip", hue="day", col="time")

输出结果如下

如果需要多幅图之间的排列比对,选择relplot这种figure-level级别的函数来实现会更加简单,如果只需要单幅图,用scatterplot和lineplot更高效。