R 如何使用ggplot2为每列创建条形图?

R 如何使用ggplot2为每列创建条形图?,r,ggplot2,bar-chart,R,Ggplot2,Bar Chart,我知道这很简单,如果已经有人问过我,我很抱歉。我是R的新手。我希望使用ggplot2从当前数据帧创建条形图 我的数据框看起来像这样 10 uM ATR 10 uM N 10 uM P 0 1 4 6 0 1 2 10 2 0 3 0 7

我知道这很简单,如果已经有人问过我,我很抱歉。我是R的新手。我希望使用ggplot2从当前数据帧创建条形图

我的数据框看起来像这样

10 uM ATR     10 uM N    10 uM P
0                  1           4
6                  0           1
2                  10          2
0                  3           0
7                  0           0
1                  1           0

您可以从
tidyverse
组合使用
tidyr
dplyr
ggplot2

library(tidyr)
library(dplyr)
library(ggplot2)

df %>%
        pivot_longer(cols = everything(), names_to = "var") %>%
        group_by(var) %>%
        summarise(mean_var = mean(value), sd_var = sd(value)) %>%
        ggplot(aes(x = var, y = mean_var, fill = var)) +
        geom_col(colour = "black", lwd = 2,
                 fill = c("black", "lightgray", "gray"), show.legend = FALSE) +
        geom_errorbar(aes(ymin = mean_var, ymax = mean_var+sd_var), width = 0.2) +
        labs(x = "", y = "Number of cells")

有关错误条的信息,您可以查看


数据

df <- structure(list(`10_uM_atropine` = c(0, 6, 2, 0, 7, 1), `10_uM_NE` = c(1, 
0, 10, 3, 0, 1), `10_uM_PHE` = c(4, 1, 2, 0, 0, 0)), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))

df您可以通过组合
tidyr
dplyr
ggplot2
tidyverse
执行此操作:

library(tidyr)
library(dplyr)
library(ggplot2)

df %>%
        pivot_longer(cols = everything(), names_to = "var") %>%
        group_by(var) %>%
        summarise(mean_var = mean(value), sd_var = sd(value)) %>%
        ggplot(aes(x = var, y = mean_var, fill = var)) +
        geom_col(colour = "black", lwd = 2,
                 fill = c("black", "lightgray", "gray"), show.legend = FALSE) +
        geom_errorbar(aes(ymin = mean_var, ymax = mean_var+sd_var), width = 0.2) +
        labs(x = "", y = "Number of cells")

有关错误条的信息,您可以查看


数据

df <- structure(list(`10_uM_atropine` = c(0, 6, 2, 0, 7, 1), `10_uM_NE` = c(1, 
0, 10, 3, 0, 1), `10_uM_PHE` = c(4, 1, 2, 0, 0, 0)), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))
df