在 ggplot2 命令中进行子集化

问题描述 投票:0回答:1

很抱歉,如果已经有一个关于此问题的线程,但我无法通过现有帖子找到解决我的问题的方法! 我尝试在 gplot2 代码中创建一个大数据框子集的条形图。这是我的 df 的简化示例:

地点 测量 价值 治疗
1 22 参数1 3 A
2 23 参数2 2 B
2 24 参数1 4 A
1 22 参数3 2 C

我试图得到的基本上是位置 1 和 2 的不同条形图,根据治疗随时间的变化比较不同测量值。值应显示在 y 轴上,年份显示在 x 轴上,处理方式应显示在填充上。我想了解如何将所有这些放入我的 ggplot 代码中,而不是创建 1000 个子集。 这就是我想出的代码:

  plot_location1<-
  ggplot(df[df$location=="1",]+
  aes(fill=treatment, y=total[total$measurement=="parameter1",] x=year) + 
  geom_bar(position="stack", stat="identity"))

我一直在研究这个结构,并不断收到不同的错误消息;上面的代码表示长度为 3 的列表没有意义。我很高兴学习如何在 ggplot 命令中有效地进行子集化,因为我猜这就是我做错的地方:P 非常感谢!

ggplot2 subset
1个回答
0
投票

像这样吗?

library(ggplot2)

df <- data.frame(
  location = c(1, 2, 2, 1),
  year = c(22, 23, 24, 22),
  measurement = c("parameter1", "parameter2", "parameter1", "parameter3"),
  value = c(3, 2, 4, 2),
  treatment = c("A", "B", "A", "C")
)

ggplot(df, aes(x = factor(year), y = value, fill = treatment)) +
  geom_bar(stat = "identity", position = "stack") +
  facet_wrap(~ location) +
  labs(x = "Year", y = "Value", fill = "Treatment") +
  theme_minimal()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.