带有阴影的图形由多条线占据的区域

时间:2020-09-19 08:59:39

标签: r ggplot2 plot graph

问题声明

我的数据集包含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

问题

有没有一种方法可以解决这个问题……

enter image description here

enter image description here

对此(或类似)?注意:黑线不是必须的 enter image description here

1 个答案:

答案 0 :(得分:2)

您只需要按单个时间单位分组并计算最小值/最大值。这使您可以绘制repository_ctx

geom_ribbon

enter image description here

如果您希望将功能区覆盖在原始图上,则可以执行以下操作:

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

enter image description here

对于它的价值,我认为第一种选择在视觉上更引人注目。

相关问题