首页 > 解决方案 > 在散点图上绘制最大值和最小值(基于列值)

问题描述

我有一个看起来像这样的数据框:

   Month   value
1 2018-07 0.5241422
2 2018-08 0.6197477
3 2018-08 3.3603833
4 2018-10 0.5357588
5 2018-09 0.8397401

我想将它绘制成类似于下面这些图的东西;而误差条范围实际上可以显示每个月“值”的最大值和最小值

或者 在此处输入图像描述

我不需要平均值 +/Ci,我只需要它来按月显示最大值和最小值,并且在中间也表示平均值(不是必需的)

我试图从带有误差线的散点图中复制一些解决方案

但是,主要问题是我不能使最小值和最大值特定于每个月,而是显示整个数据框的实际最大值和最小值。

与我需要的类似结果是......


df %>% 
  ggplot(aes(x = Month, y = value)) +
  geom_boxplot(alpha = 0.4) +
  theme_minimal() +
  expand_limits(y = 0) +
  labs(y =  "") 

非常感谢您的帮助。谢谢!

标签: rdataframeggplot2plot

解决方案


我看到你更新了你的问题,我相应地修改了我的答案。您可以先计算最小值、最大值和平均值,然后使用计算得出的数据来创建绘图。这是你想要的吗?

library(tidyverse)
library(lubridate)

data <- tibble(
    date = rep(seq(ymd("2019-01-01"),ymd("2019-12-01"),by = "1 month"),10),
    value = 1 +runif(120)
) %>%
    arrange(date)

data_range <- data %>%
    group_by(date) %>%
    summarise(max = max(value),
              min = min(value),
              mean = mean(value))

data_range %>%
    ggplot(aes(x = date,y = mean)) +
    geom_line() +
    geom_point() +
    geom_errorbar(aes(ymin = min, ymax = max))


在此处输入图像描述


推荐阅读