在 seaborn 中设置自定义调色板的 alpha 值

Setting the alpha value of a custom palette in seaborn

我正在修改我在 seaborn 文档中找到的一段代码,以设计一个 matplotlib 和 seaborn 通用的调色板。下面的代码效果很好,但是,如果您绘制许多点(在我的示例中为 5000),则深色会在图表中占主导地位。 一个快速解决方法是将一种(或两种)颜色的 alpha 值设置为较低的值。

custom = ["#D1EC9C", "#F1EBF4"]
sns.set_palette(custom)
# construct cmap
my_cmap = ListedColormap(custom)

N = 5000
data1 = np.random.randn(N)
data2 = np.random.randn(N)
colors = np.linspace(0,1,N)
plt.scatter(data1, data2, c=colors, cmap=my_cmap)
plt.colorbar()
plt.show()

有人知道如何设置自定义 Seaborn 调色板的 alpha 值吗? 谢谢

您可以将 alpha 设置为颜色图中颜色的一部分:

custom = [(0xD1/0xFF, 0xEC/0xFF, 0x9C/0xFF, 1), (0xF1/0xFF, 0xEB/0xFF, 0xF4/0xFF, 0.5)]
my_cmap = mpl.colors.ListedColormap(custom)

这里我给第二种颜色alpha值为0.5;如果你愿意,你可以用其他颜色来做。

请注意,这里并没有真正涉及seaborn。绘图的颜色由您在颜色图中传递的颜色决定; seaborn 的调色板没有影响。 seaborn 对您的绘图的唯一影响是背景、轴、网格等的格式设置。

正如我在评论中所说,不过,我相信仅对一种颜色使用 alpha 不会使您的情节看起来很好。如果一种颜色仍然不透明,它仍会掩盖另一种颜色的点,只会更甚(因为现在另一种颜色会更暗)。此外,如果您打算使用 alpha(即使您不使用),您选择的灰色可能不是一个好主意,因为它类似于 seaborn 提供的灰色背景,因此很难区分灰色来自灰色背景的点。