r - ggplot 在只需要一个图例时生成两个图例

标签 r plot ggplot2 legend labeling

在 R 中,我试图生成一个绘图,我想在其中应用独特的颜色、线条类型、透明度和按案例分组的线条粗细。正如目前实现的那样,生成了两个图例图而不是一个。第二个图例情节是唯一一个我可以更改图例标题的情节。大概我犯了一个错误任何帮助将不胜感激。

最终我想生成一个图例并使样式更改和标签更改生效。

library(ggplot2)
temp_df <- data.frame(year = integer(50), value = numeric(50), case = character(50))
temp_df$year <- 1:50
temp_df$value <- runif(50)
temp_df$case <- "A"
df <- temp_df
temp_df$value <- runif(50)
temp_df$case <- "B"
df <- rbind(df, temp_df)
LineTypes <- c("solid", "dotted")
colors <- c("red", "black")
linealphas <- c(1, .8)
linesizes <- c(1, 2)
Plot <- ggplot(df, aes(x = year, y = value, group = case))+
  geom_line(aes(linetype = case, color = case, size = case, alpha = case))+
  scale_linetype_manual(values = LineTypes)+
  scale_color_manual(values = colors)+
  scale_y_continuous(limits = c(0, 1), labels = scales::percent)+
  scale_alpha_manual(values = linealphas)+
  scale_size_manual(values = linesizes)+
  xlab("Year")+
  ylab("Percentage%")+
  labs(color = "Scenario")+
  theme_minimal()
Plot

Result of Current Code

最佳答案

如果您希望 ggplot 合并图例,那么它们都必须具有相同的标题。您可以在比例尺中使用 name 参数指定图例标题:

ggplot(df, aes(x = year, y = value, group = case))+
  geom_line(aes(linetype = case, color = case, size = case, alpha = case)) +
  scale_linetype_manual(values = LineTypes, name = "Scenario")+
  scale_color_manual(values = colors, name = "Scenario")+
  scale_y_continuous(limits = c(0, 1), labels = scales::percent)+
  scale_alpha_manual(values = linealphas, name = "Scenario")+
  scale_size_manual(values = linesizes, name = "Scenario")+
  xlab("Year")+
  ylab("Percentage%")+
  theme_minimal()

enter image description here

关于r - ggplot 在只需要一个图例时生成两个图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50243308/

相关文章:

r - 通过 RCurl 从 ftp 下载压缩文件

r - 使用 dplyr 的 group_by 函数制作每个组的列表元素

python - 无法使用matplotlib显示数据

R:如何显示群集矩阵热图(将相似的颜色模式进行分组)

r - 根据因子使用不同的比例作为填充

r - 如何分解由列表列表组成的数据框

r - 在 R 中,有没有办法根据一系列数字为渐变上的绘图点着色?

java - 在散点图中查找位于 X 轴和 Y 轴附近的点

r - R 中 PerformanceAnalytics 的并排图

r - R ggplot中热图中的聚类数据