Python matplotlib - 如何选择较深的颜色

问题描述

我正在使用 Networkx 来绘制我的网络。我在选择颜色时遇到问题。选择的颜色通常很浅,这并不好,因为背景颜色是白色(见下面的例子)。有没有办法把较深的颜色取下来,使图形更清晰可见。

enter image description here

以下是我选择颜色的代码

def PickupColor():
    color=random.choice(list(matplotlib.colors.cnames.items()))[0]
    return color

解决方法

这取决于您需要多少种颜色。您可以看到支持的颜色名称列表 here。请注意,XKCD 颜色已被提及,但并未明确显示。

如果您最多需要 10-20 个(否则我会看到您的图表变得非常密集),我会亲自挑选它们,然后从该列表中进行选择。

colors = ['black','gray','brown','red',...]

不用说,除了过滤较深的颜色之外,还有一些几乎无法区分的对,我会选择其中之一。例如,深红-栗色、海军-深蓝、耐火砖-深红色等。

您选择颜色的另一个问题是,每次您需要一种颜色时,您都会选择一种替换颜色。因此,两条链可能具有相同的链。最好提前获取您需要使用 random.sample() 的颜色数量。


轶事:有一次我制作了一个包含 200 个项目的水平条形图,它不断地改变排名(只显示前 10 个)。我通过生成 0-255 范围内的 6 个等距数字并为 RGB 通道组合这些数字,为它们分配了一种独特的颜色,我可以获得 6**3 = 216 种颜色。我很快意识到有多少颜色看起来很相似。

如果你真的需要很多颜色,你可以以某种方式通过算法生成它们,只要至少一个 RGB 值小于 128,它们就应该足够暗。但实际上,除非绝对必要,否则只需精心挑选几个不同的,然后收工即可。