【发布时间】:2016-08-22 09:50:55
【问题描述】:
我正在修改我在 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()
【问题讨论】:
-
为什么要在调色板中设置 alpha 而不是在散点图本身上设置(通过将
alpha=0.5传递给 scatter 调用)? -
scatter 调用中的 alpha 更改了两者的 alpha。我只需要降低其中一个变量的 alpha。
-
为什么?如果其中一种颜色不透明,如果隐藏在后面,您仍然看不到任何其他颜色。
-
为什么不呢?混合具有不同 alpha 的两种重叠颜色(如黄色和红色)将创建第三种颜色(橙色),从而更好地区分数据点。但是,需要调整每个 alpha 以产生正确的阴影。