首页 > 解决方案 > Python matplotlib - 如何选择较深的颜色

问题描述

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

在此处输入图像描述

以下是我选择颜色的代码:

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

标签: pythonmatplotlibcolorsnetworkx

解决方案


这取决于你需要多少颜色。您可以在此处查看支持的颜色名称列表。请注意,提到了 XKCD 颜色,但未明确显示。

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

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

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

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


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

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


推荐阅读