折线图和散点图是最常用的展示两个变量间关系的图表,在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更高效。
·end·
一个只分享干货的
生信公众号