【问题标题】:Graph with a shaded the area occupied by multiple lines带有阴影的图形被多条线占据的区域
【发布时间】:2020-09-19 08:59:39
【问题描述】:

问题说明

我的数据集包含 100 个组,每个组都可以绘制成一条具有相似形状的线,以对应响应变量。我想制作一个图表,其中 100 条曲线占用的所有空间都变成了阴影区域,因此更容易显示所有组中响应变量的变化。这也将允许在 x 轴上清楚地看到响应变量具有较低变化(阴影区域将较窄,因为大多数线将重叠)或较高变化的值或区间。

代码示例

library(tidyverse)
library(ggplot2)

set.seed(1)

# Produce a similar table to the real one
example <- tibble(values = seq(0, 10, 0.1),
                  sine1  = sin(values + 0.2),
                  sine2  = sin(values - 0.2),
                  sine3  = sin(values + 0.4) + 0.2,
                  sine4  = sin(values - 0.4) - 0.2,
                  sine5  = sin(values - 0.4) + 0.2,
                  sine6  = sin(values - 0.2) + 0.4) %>%
            pivot_longer(-values) # final format with 3 columns

# Create a line graph, where each line represents a different sine curve
graph1 <- ggplot(example, aes(x = values, y = value, col = name)) +
          geom_line(size = 3, show.legend = FALSE, alpha = 0.5) +
          theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
                panel.background = element_blank(), axis.line = element_line(colour = "black"))
graph1

问题

有没有办法从这个图表中走出来......

到这个(或类似的)?注意:粗黑线不是绝对必要的

【问题讨论】:

    标签: r ggplot2 plot graph


    【解决方案1】:

    您只需要对每个单独的时间单位进行分组并计算最小值/最大值。这允许您绘制geom_ribbon:

    example %>% 
      group_by(values) %>% 
      summarize(min = min(value), max = max(value)) %>%
      ggplot() +
      geom_ribbon(aes(x = values, ymin = min, ymax = max), size = 2,
                  fill = "#29c8e5", color = "black") +
      theme_classic()
    

    如果您希望丝带覆盖您的原始情节,您可以这样做:

    ribbon <- example %>% 
      group_by(values) %>% 
      summarize(min = min(value), max = max(value))
    
    graph1 +
      geom_ribbon(aes(x = values, ymin = min, ymax = max), 
                  data = ribbon, size = 0, fill = "#29c8e5", 
                  color = NA, alpha = 0.3, inherit.aes = FALSE)
    

    就其价值而言,我认为第一个选项更具视觉冲击力。

    【讨论】:

    • 正是我想要的。非常感谢。我同意第一个选项更华丽,并以更清晰的方式传达我的信息。
    猜你喜欢
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 2018-03-06
    • 1970-01-01
    相关资源
    最近更新 更多