【问题标题】:How to plot across time with multiple groups in r?如何在 r 中跨时间绘制多个组?
【发布时间】:2021-02-10 23:10:52
【问题描述】:

我有一个包含 2 列的数据集:

Group   Date
Group1  29/12/2008  
Group1  29/12/2008  
Group2  29/12/2008
Group3  10/05/2009
Group1  10/05/2009
Group1  10/05/2009

我希望创建一个气泡图,其中日期(通常按年份)是 x 轴,y 轴是每个组在该年出现的次数。

我不知道该怎么做,所以我一直从 ggplot 开始:

ggplot(df, aes(x=Date, y=Group, size = Group)) +
  geom_point(alpha=0.7)

这运行但给我 y 作为组(据我所知我已经设置)但我不知道将 y 设置为什么所以它只是每个组的计数,可以为每年绘制。当我希望它成为一般年份时,x 轴是所有特定日期。我是绘图新手,如何调整示例以将 y 作为 Group 中组出现的次数的计数,以及如何将 x 轴调整为年份而不是特定日期?

【问题讨论】:

  • geom_bar() 具有内置的“统计摘要”,例如在 y 轴上绘制计数而不是在列中绘制数字。所以你可以做ggplot(df, aes(x=Date, fill=Group)) + geom_bar()。但是如果你想要一个气泡图,你需要在绘制之前实际聚合你的数据,并给ggplot你想要绘制的值,而不是让它为你做计数。

标签: r ggplot2


【解决方案1】:

也许可以尝试聚合您的数据:

library(tidyverse)
#Code
df %>% mutate(Date=as.Date(Date,'%d/%m/%Y'),
              Year=format(Date,'%Y')) %>%
  group_by(Year,Group) %>%
  summarise(N=n()) %>%
  ggplot(aes(x=factor(Year), y=Group, size = N,color=Group)) +
  geom_point(alpha=0.7)

输出:

使用的一些数据:

#Data
df <- structure(list(Group = c("Group1", "Group1", "Group2", "Group3", 
"Group1", "Group1"), Date = c("29/12/2008", "29/12/2008", "29/12/2008", 
"10/05/2009", "10/05/2009", "10/05/2009")), class = "data.frame", row.names = c(NA, 
-6L))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 2021-12-15
    • 2017-04-23
    • 1970-01-01
    • 2011-04-22
    • 2011-01-15
    • 1970-01-01
    相关资源
    最近更新 更多