按 Python 中排序的唯一列值为 ggplot2 值着色

Color ggplot2 values by a sorted unique column values in Python

我遇到了 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") 

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

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

您必须使用 id 列的唯一值修改字典的键。 这应该可以解决问题。