Python:matplotlib 和 Seaborn 之散点图的重叠、透明度和抖动 (三十三)

重叠、透明度和抖动

如果要绘制大量数据点,或者数字变量是离散值,那么直接使用散点图可能无法呈现足够的信息。图形可能会出现重叠,由于大量数据重叠到一起,导致很难看清变量之间的关系。

plt.scatter(data = df, x = 'disc_var1', y = 'disc_var2')

file

在上图中,我们可以推断出两个变量负相关,但是数据的变化程度和关系强度并不明显。在这种情形下,我们需要应用透明度和抖动,使散点图能呈现更多的信息。可以通过在 scatter 函数调用中添加 "alpha" 参数来表示透明度,"alpha" 的值可以介于 0(完全不透明,不可见) 到 1(完全透明)之间。

plt.scatter(data = df, x = 'disc_var1', y = 'disc_var2', alpha = 1/5)

file

重叠的点越多,图像颜色就越深。从图中可以看出,两个数字变量之间存在一定的负相关关系。x 轴上的 0 和 10 比中间值出现的频率小多了。

除了设置透明度之外,我们还可以通过抖动使每个点稍微偏离真实值所对应的位置。这并不是 scatter 函数中的直接选项,而是 seaborn 的 regplot 函数的内置选项。可以单独添加 x 轴和 y 轴抖动,不会影响到回归方程的拟合情况:

sb.regplot(data = df, x = 'disc_var1', y = 'disc_var2', fit_reg = False,
           x_jitter = 0.2, y_jitter = 0.2, scatter_kws = {'alpha' : 1/3})

抖动设置将导致每个点统一地在真实值的 ±0.2 范围内抖动。注意透明度已经更改为分配给“scatter_kws”参数的字典。这么设置的原因是让透明度明确地与 regplot 函数的 scatter 部分相关联。

file

为者常成,行者常至