r - 如何在ggplot中制作条形图?
问题描述
我有一个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 中实现这个情节?
解决方案
您应该在 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()
推荐阅读
- python - 将变量从 STT 传递到 url 在 Python 中被分开
- xampp - XAMP 中的 MYSQL 服务器不运行
- macos - 从 MAC 到具有特殊文件系统的远程 DataDomain 的 ansible
- php - Laravel 中的动态滑块
- vue.js - 异步函数返回未定义(Vuejs)
- php - Laravel:将具有javascript的子视图注入多个页面的最佳实践是什么
- batch-file - 如何使用 .bat 文件读取文件中的特殊字符
- python - 如何将一列除以另一列,其中一个数据框的列值对应于 Python Pandas 中另一个数据框的列值?
- php - puzzling behavior using dropzone
- python - Running multiple functions concurrently