轴须图和带状图
你可能遇到过用散点图等双变量图形绘制的边缘分布,或者对这种分布感兴趣。边缘分布是变量的单变量分布,忽略任何其他变量的值。对于定量数据来说,直方图或密度曲线适合边缘分布,但是你可能还见过轴须图。在轴须图中,所有数据点都在一个轴上绘制,每个点一个刻度或线条。与边缘直方图相比,轴须图的分布情况不太好理解,但是在呈现数据方面更紧凑。
Seaborn 的 JointGrid 类可以绘制这种双变量关系,并对数字数据绘制边缘单变量图形。plot_joint
方法为主变量指定一个绘图函数,并将两个变量的图形连接起来,而 plot_marginals
方法会为两个边缘图形指定绘图函数。此处,我们利用 seaborn 的 rugplot
函数。
g = sb.JointGrid(data = df, x = 'num_var1', y = 'num_var2')
g.plot_joint(plt.scatter)
g.plot_marginals(sb.rugplot, height = 0.25)
“height”参数指定轴须图的刻度为边缘轴大小高度的 0.25 倍。
image.png在此例中,轴须图很合适,因为数据并不多或过于密集。在其他情形下,直方图或密度曲线可能更合适。你或许不会将轴须图当做首要选择,但是在某些情形下是个不错的图形。
另一个和轴须图相似的图形类型是带状图。它和集群图相似(请参阅上一页),但是没有任何躲避或抖动现象,以分开数据点或避开分类线。你还可以将带状图看做根据分类级别分面的轴须图。可以使用 seaborn 的 swarmplot
函数向任何其他图形添加集群图。还可以在 violinplot
函数中使用 inner = "stick"
和 inner = "point"
选项 ,在小提琴区域(而不是箱线图)添加集群图。
plt.figure(figsize = [10, 5])
base_color = sb.color_palette()[0]
# left plot: strip plot
plt.subplot(1, 2, 1)
ax1 = sb.stripplot(data = df, x = 'num_var', y = 'cat_var',
color = base_color)
# right plot: violin plot with inner strip plot as lines
plt.subplot(1, 2, 2)
sb.violinplot(data = df, x = 'num_var', y = 'cat_var', color = base_color,
inner = 'stick')
image.png
网友评论