0

我遇到了这个包 plotnine,它可以给出与 Python 中 R 的 ggplot2 相同的结果。它非常有用,但我在用它们唯一的“ID”为“label_1”和“label_2”值着色时遇到了问题。颜色应该是可区分的。它的范围可以从颜色的明亮阴影到最暗的阴影。我的代码给出了与我希望的结果非常接近的结果,但颜色仍然不够可区分。我的图表现在没有使用我的颜色,但我想知道它是否也可以解决。

# Generating 100 random colors for 100 values
from plotnine import *

import random as random
colors= lambda n: list(map(lambda i: "#" + "%06x" % random.randint(0, 0xFFFFFF), range(n)))
colors = colors(100)


ggplot(
    musk_df) + geom_point(aes(x = 'label_1',y = 'label_2',fill = 'id'),alpha = 0.5) +labs(
        title ='Graph',
        x = 'label_1',
        y = 'label_2',) +scale_fill_manual(
        name = 'id',values = colors) +scale_fill_gradient(low="green",high="darkgreen") 
4

1 回答 1

2

使用时scale_fill_manual,您必须创建一个将fill元素和颜色关联起来的字典。例如:

color_dict = {'ID1': 'green', 
              'ID2': 'red',...
              ...
              'IDN': 'darkgreen'}

您必须使用id列的唯一值修改字典的键。这应该够了吧。

于 2019-10-29T14:54:27.437 回答