首页 > 解决方案 > 使用每个变量的最大值创建 ggplot2 图的 R 函数是什么?

问题描述

我可以在 R 中编写什么来为每天的病例总数(基本上每天绘制带星号的点)创建折线图可视化(使用 ggplot2)?

  city    | date  | cases  | cumulative cases (by date) 
----------|-------|--------|------------------------
  London  | Day 1 |   4    |            4 
  Paris   | Day 1 |   5    |            9 
  Madrid  | Day 1 |   3    |            12 *
  London  | Day 2 |   6    |            6
  Paris   | Day 2 |   3    |            9 
  Madrid  | Day 2 |   8    |            17 *
  London  | Day 3 |   9    |            9
  Paris   | Day 3 |   7    |            16
  Madrid  | Day 3 |   5    |            21 *

标签: rggplot2dplyr

解决方案


尝试这种方法分组date以获得最大值,然后绘制。这里使用tidyverse函数的代码:

library(dplyr)
library(ggplot2)
#Code
df %>% group_by(date) %>%
  filter(`cumulative cases`==max(`cumulative cases`,na.rm=T)) %>%
  ggplot(aes(x=date,y=`cumulative cases`,group=1))+
  geom_point(color='purple')+geom_line(color='purple')

输出:

在此处输入图像描述

或添加限制:

#Code 2
df %>% group_by(date) %>%
  filter(`cumulative cases`==max(`cumulative cases`,na.rm=T)) %>%
  ggplot(aes(x=date,y=`cumulative cases`,group=1))+
  geom_point(color='purple')+geom_line(color='purple')+
  scale_y_continuous(limits = c(0,21))

输出:

在此处输入图像描述

使用的一些数据:

#Data
df <- structure(list(city = c("London", "Paris", "Madrid", "London", 
"Paris", "Madrid", "London", "Paris", "Madrid"), date = c("Day 1", 
"Day 1", "Day 1", "Day 2", "Day 2", "Day 2", "Day 3", "Day 3", 
"Day 3"), cases = c(4, 5, 3, 6, 3, 8, 9, 7, 5), `cumulative cases` = c(4, 
9, 12, 6, 9, 17, 9, 16, 21)), row.names = c(NA, -9L), class = "data.frame")

推荐阅读