按 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
列的唯一值修改字典的键。
这应该可以解决问题。
我遇到了 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
列的唯一值修改字典的键。
这应该可以解决问题。