【问题标题】:Creating several bar graphs simultaneously from tidy data in R从 R 中的整洁数据同时创建多个条形图
【发布时间】:2019-05-08 16:56:50
【问题描述】:

我有一个如下所示的数据框。在真实数据集中,有 14 个 dv 和 9 个条件。

dv   condition  mean  sd
dv1  1          4     1
dv1  2          5     1
dv1  3          3     2
dv2  1          3     1
dv2  2          6     2
dv2  3          4     1

我知道我可以通过以下方式分别绘制这些图表。我可以为每个 dv 创建一个单独的数据框,然后绘制它。

dv1 <- df[1:3,]
dv1_graph <- ggplot(dv1, aes(x=condition, y = mean, fill = condition)) + 
geom_bar(stat = "identity", color = "black", position = position_dodge()) +
labs(title = "DV1") +
geom_errorbar(aes(ymin = mean-sd, ymax = mean+sd), width = 0.2, position = position_dodge(.9))

有没有办法同时为每个 dv 创建一个带有误差线的单独条形图?

【问题讨论】:

标签: r loops ggplot2 plot tidyverse


【解决方案1】:

我想你想要这个:

ggplot(df, aes(condition, mean)) +
  geom_col(color = "black", position = position_dodge()) +
  geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd), width = 0.2,
                position = position_dodge(.9)) +
  facet_wrap(~dv)

更新:对于一堆单独的地块

library(dplyr)
library(purrr)

plotter <- function(df, dv) {
  plot(ggplot(df, aes(condition, mean)) +
    geom_col(color = "black", position = position_dodge()) +
    geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd), width = 0.2,
                  position = position_dodge(.9)) +
    ggtitle(dv))
}

nested_df <-
  df %>% 
  group_by(dv) %>% 
  nest()

walk2(nested_df$data, nested_df$dv, plotter)

【讨论】:

  • 谢谢!有没有办法让每个图表单独显示?我有很多,所以他们有点拥挤。
猜你喜欢
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-07
  • 2017-03-04
  • 1970-01-01
相关资源
最近更新 更多