【问题标题】:ggplot: adding a legend entry for a line to a grouped bar chartggplot:将线条的图例条目添加到分组条形图
【发布时间】:2023-01-27 19:52:52
【问题描述】:

我想在 R 中使用 ggplot2 绘制一个条形图,为多个组显示两个变量作为条形图,一个变量作为一条线。所有变量都在同一尺度上。

diamonds为例,

library(tidyverse)

diamonds %>% 
    group_by(cut) %>% 
    summarize(avg = median(carat), min = min(carat), max = max(carat)) %>%
    pivot_longer(cols = c("min", "max"), names_to = "bounds", values_to = "weight") %>%
    ggplot() +
    geom_col(mapping = aes(x = cut, y = weight, fill = bounds), position = "dodge") +
    geom_line(mapping = aes(x = cut, y = avg), group = 1)

我现在想做的有两个方面:

  1. 为该行添加图例条目;和
  2. 最好也控制线条的颜色。

    我搜索了 google 和 SO,并查看了scale_color_*,但没有成功,而且我仍然不是真正的“grokking”ggplot2的特殊绘图方法,所以任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    您可以在美学中添加 color 以获得该行的图例,并使用 scale_color_manual 更改颜色行,如下所示:

    library(tidyverse)
    
    diamonds %>% 
      group_by(cut) %>% 
      summarize(avg = median(carat), min = min(carat), max = max(carat)) %>%
      pivot_longer(cols = c("min", "max"), names_to = "bounds", values_to = "weight") %>%
      ggplot() +
      geom_col(mapping = aes(x = cut, y = weight, fill = bounds), position = "dodge") +
      geom_line(mapping = aes(x = cut, y = avg, color = "name_line"), group = 1) +
      scale_color_manual("Legend line", values = c("name_line" = "yellow"))
    

    创建于 2023-01-27 reprex v2.0.2

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 1970-01-01
      • 2018-12-03
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      相关资源
      最近更新 更多