首页 > 解决方案 > ggplot 中不同几何图形的 scale_color_manual()

问题描述

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()?似乎我上面的语法是关闭的。

在此处输入图像描述

标签: rggplot2

解决方案


有两点需要改变:

  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"))

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


推荐阅读