我正在修改我在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()
答案 0 :(得分:2)
您可以将alpha设置为色彩映射中颜色的一部分:
custom = [(0xD1/0xFF, 0xEC/0xFF, 0x9C/0xFF, 1), (0xF1/0xFF, 0xEB/0xFF, 0xF4/0xFF, 0.5)]
my_cmap = mpl.colors.ListedColormap(custom)
这里我给出了0.5的第二个颜色alpha;如果你愿意,你可以用其他颜色来做。
请注意,seaborn并非真正涉及此处。绘图的颜色由您在色彩映射中传递的颜色决定; seaborn的调色板没有任何影响。 seaborn对你的情节的唯一影响是背景,轴,网格等的格式化。
正如我在评论中所说,我相信只使用一种颜色的alpha不会使你的情节看起来很好。如果一种颜色仍然是不透明的,它仍会覆盖另一种颜色的点,只会更多(因为现在另一种颜色会更暗)。此外,如果你打算使用alpha(也许即使你不是),你选择的浅灰色可能不是一个好主意,因为它类似于seaborn提供的灰色背景,因此很难区分灰色灰色背景中的点。