在不更改功能颜色的情况下更改ggplot2中的图例名称

时间:2018-04-19 19:00:31

标签: r ggplot2

我有以下代码:

library(tidyverse)
data1 %>% 
gather(key, value) %>% 
ggplot(aes(value, color=key)) + 
  stat_ecdf(size=0.8) + xlim(-4.5,4.5) + 
  labs(x = "t(α)", y = "Probability", color="Legend", labels=c("Actual","Simulation"))

产生以下输出:

CDF plot

我的问题是我想保留当前ggplot主题(theme_gray)的颜色,但同时能够手动设置图例/标签名称。我知道泰勒先生写的类似question。但是,标记为最有用的答案是手动定义颜色。在这个项目中,我将拥有多个函数的图,因此我希望ggplot只使用其内置主题的颜色,以便在整个项目中保持颜色一致。

我尝试了

的版本
scale_colour_manual(values=c("color1","color2"), labels=c("Label1","Label2")

但我无法在不必定义颜色的情况下命名传说。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用scale_color_discrete(labels = ...)

library(ggplot2)

df <- data.frame(x = rep(1:10, 2), y = c(1:10, 6:15), leg = c(rep("A", 10), rep("B", 10)))

g <- ggplot(df, aes(x, y, color = leg)) + 
  geom_line()

g

enter image description here

g + scale_color_discrete(labels = c("Actual", "Simulation"))

enter image description here

但在大多数情况下,更改列中的值可能会更好。

library(dplyr)

df %>% 
  mutate(leg = recode(leg, `A` = "Actual", `B` = "Simulation"))

结果数据框:

    x  y        leg
1   1  1     Actual
2   2  2     Actual
3   3  3     Actual
4   4  4     Actual
5   5  5     Actual
6   6  6     Actual
7   7  7     Actual
8   8  8     Actual
9   9  9     Actual
10 10 10     Actual
11  1  6 Simulation
12  2  7 Simulation
13  3  8 Simulation
14  4  9 Simulation
15  5 10 Simulation
16  6 11 Simulation
17  7 12 Simulation
18  8 13 Simulation
19  9 14 Simulation
20 10 15 Simulation