使用scale_color_manual()为ggplot中不同的几何对象设置颜色。

4
library(tidyverse)

delta <- tibble(
  type = c("alpha", "beta", "gamma"), 
  a = rnorm(3, 5), 
  b = rnorm(3, 6)
  ) %>% 
  mutate(delta = abs(a - b)) %>% 
  gather(`a`, `b`, `delta`, key = "letter", value = "value")


ggplot(delta %>% filter(letter != "delta"), aes(type, value, fill = letter)) +
  geom_col(position = "dodge") + 
  geom_col(data = delta %>% filter(letter == "delta"), width = 0.5) + 
  scale_color_manual("grey", "black", "blue")

我希望将 ab 条形图变为灰色和黑色。将 delta 条形图变为蓝色。如何使用 scale_color_manual() 实现?似乎我上面的语法有误。

enter image description here

1个回答

8

有两件事情需要改变:

  1. 由于您使用了 fill = letter,因此应该使用 scale_fill_manual 而不是 scale_color_manual(如果您使用了 color = letter,那么后者是适当的)。

  2. 手动颜色 values 应该作为一个向量提供。

library(tidyverse)

delta <- tibble(
  type = c("alpha", "beta", "gamma"), 
  a = rnorm(3, 5), 
  b = rnorm(3, 6)
) %>% 
  mutate(delta = abs(a - b)) %>% 
  gather(`a`, `b`, `delta`, key = "letter", value = "value")


ggplot(delta %>% filter(letter != "delta"), aes(type, value, fill = letter)) +
  geom_col(position = "dodge") + 
  geom_col(data = delta %>% filter(letter == "delta"), width = 0.5) + 
  scale_fill_manual(values = c("grey", "black", "blue"))

2018年10月8日,由reprex包(v0.2.1)创建


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