首页 > 解决方案 > 如何在ggplot中制作条形图?

问题描述

我有一个excel文件

excel文件

我想使用包 ggplot 在 R 中创建一个与此类似的图。

所需的情节

我通过“从 excel 导入数据集”将此 excel 文件导入 R

df1<-as.data.frame(GPPNPPMEAN)
> df1
  DATA MEAN  ..3
1 <NA>  GPP  NPP
2   MO 0.45  0.4
3   IP 0.21 0.25
4   MP 0.59 0.24
5   CC 0.62 0.25

我执行以下操作

ggplot(data=df1, aes(x=DATA, y=MEAN, fill=values)) +
  geom_bar(stat="identity", position=position_dodge())+
  geom_text(aes(label=len), vjust=1.6, color="white",
            position = position_dodge(0.9), size=3.5)+
  scale_fill_brewer(palette="Paired")+
  theme_minimal()

给出错误

错误:tibble 中的所有列都必须是 1d 或 2d 对象:* 列fill是标准的通用调用rlang::last_error()以查看回溯

数据框的结构是否正确以便在 gglot 中绘制?我怎样才能在 R 中实现这个情节?

标签: rggplot2

解决方案


您应该在 excel 中准备数据,例如

在此处输入图像描述

不要提供您在问题中显示的两个标题。然后保存为 .csv 文件中的 excel 文件,您可以使用以下代码读取 csv

df1 <- read.csv("Book1.csv", check.names = F)

df.m <- reshape2::melt(df1)

my_se <- df.m %>%
  group_by(DATA) %>%
  summarise(n=n(),
            sd=sd(value),
            se=sd/sqrt(n))

df.m %>% 
  left_join(my_se) %>% 
  ggplot(aes(x = DATA, y = value, fill = variable)) + 
  geom_bar(stat="identity", position = "dodge")+
  geom_errorbar(aes(x=DATA, ymin=value-se, ymax=value+se), width=0.4, position = position_dodge(.9))+
  theme_minimal()

在此处输入图像描述


推荐阅读