【问题标题】:Setting the alpha value of a custom palette in seaborn在 seaborn 中设置自定义调色板的 alpha 值
【发布时间】: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()

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

【问题讨论】:

  • 为什么要在调色板中设置 alpha 而不是在散点图本身上设置(通过将 alpha=0.5 传递给 scatter 调用)?
  • scatter 调用中的 alpha 更改了两者的 alpha。我只需要降低其中一个变量的 alpha。
  • 为什么?如果其中一种颜色不透明,如果隐藏在后面,您仍然看不到任何其他颜色。
  • 为什么不呢?混合具有不同 alpha 的两种重叠颜色(如黄色和红色)将创建第三种颜色(橙色),从而更好地区分数据点。但是,需要调整每个 alpha 以产生正确的阴影。

标签: python seaborn


【解决方案1】:

您可以将 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 提供的灰色背景,因此很难区分灰色灰色背景中的点。

【讨论】:

  • 这没有回答原始问题。要求提供 seaborn 调色板,但您没有提供,只有 matplotlib 颜色图。
  • @DaveKielpinski:正如我在答案中指出的那样,问题中描述的情况下没有使用 seaborn 调色板,因此创建 seaborn 调色板不会影响情节的外观。跨度>
  • 那么问题要么提出不当,要么标题有误导性。
猜你喜欢
  • 2020-04-28
  • 2019-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多