ggplot 颜色分配错误

8

颜色分配给十六进制值是错误的,我不明白为什么。在将十六进制颜色添加到数据框中data之前进行了排序,然后在ggplot2功能中使用它。我认为这会解决问题,但实际上并没有。我还创建了向量col,其中包含我实际想要作为图例的RGB颜色值,但我也很难让它正常工作。

library(ggplot2)
df <- structure(list(x = 1:15, y = 1:15, cols_hex = c(
  "#00B0F6", "#00BA38",
  "#00BCD8", "#00BF7D", "#00C0AF", "#619CFF", "#6BB100", "#A3A500",
  "#B983FF", "#C99800", "#E58700", "#E76BF3", "#F8766D", "#FD61D1",
  "#FF67A4"
)), class = "data.frame", row.names = c(NA, -15L))


ggplot(NULL) +
  geom_point(data = df, aes(x = x, y = y, colour = cols_hex))

在图例中,赋予红色一个 RGB 值为 (248, 118, 109) 和十六进制值为 F8766D 的颜色,其对应的十六进制值为 00B0F6。


如何在 ggplot2 的分面图中有条件地突出显示点,将颜色映射到... - tjebo
1个回答

12

如果你想要给参数colour=提供颜色名称并且还要显示一个关于该参数的图例,那么你应该在函数中的最后一行添加scale_colour_identity()。这种比例尺确保提供的值将被解释为实际的颜色值。在函数scale()中添加参数breaks=cols_hex将确保图例中名称的排序。

ggplot(NULL) +     
geom_point(data=data, aes(x=x, y=y, colour=cols_hex), size=size, alpha=alpha) + 
        scale_colour_identity(guide="legend",breaks=cols_hex)

在此输入图片描述


是的,那似乎有效。我从sort(hcl(h=hues, l=65, c=100)[1:n])中删除了sort,以便图表中的颜色以其“自然”的方式显示。但是,在图例中,颜色按字母顺序排序。有没有办法匹配图表和图例的顺序? - user969113
1
更新了我的解决方案。如果在cols_hex <- ...中没有sort()函数,这将起作用。 - Didzis Elferts
是的,完美。这就是我尝试获取它的方式。非常感谢你! :) - user969113

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接