首页 > 解决方案 > 我想为每个站点绘制多个直方图

问题描述

我想要 x 轴上的 4 个直方图;每个站点一个,每组个人都有一个垃圾箱。这些组是 ; “摩尔”、“一个”、“地壳”和“其他”。y 轴将是平均丰度。数据框可以称为DF。

摩尔 一个 脆皮 其他 地点
1 1.00000 0.0000000 12.000000 2 1
2 0.00000 0.6666667 28.000000 0 2
3 0.00000 0.3333333 2.000000 0 3
4 4.00000 1.3333333 3.000000 0 4
5 12.66667 3.3333333 1.666667 0 5

ggplot(DF, aes(fill=?, y=?, x=Site)) + geom_bar(position="dodge", stat="identity")

我迷失在想要放入部分填充 = 和 y = 中,我一直在用向量单独做这件事,它有效,但想将所有内容分组。DF$Site 与我用于更简单直方图的另一个“站点”不同:Site <- c(rep("1" , 1) , rep("2" , 1) , rep("3", 1) ,代表(“4”,1),代表(“5”,1))

我会“填充”: fill = rep("whatever",5)

就我而言,我将创建一个向量并插入 y= ,如下所示: mol = c(1,0,0,4,12.66666667) 我还将使用均值向量和标准差向量作为误差线:

sdmol = c(0.471404521,0,0,5.656854249,16.51934892)

+geom_errorbar(aes(x=Site, ymin=mol-sdmol, ymax= mol+sdmol), width=0.4, colour="orange", alpha=0.9, size=1)+theme(text=element_text(size=20 ))

如果有帮助,我可以重新组合我的所有数据。谢谢!

标签: rggplot2

解决方案


像这样的东西?

library(tidyverse)
DF %>% 
  pivot_longer(
    cols = c(mol, an, crust)
  ) %>% 
  ggplot(aes(x=factor(Site), y=value, fill=name))+
  geom_col(position = position_dodge()) 

在此处输入图像描述

或者

library(tidyverse)
DF %>% 
  pivot_longer(
    cols = c(mol, an, crust)
  ) %>% 
  ggplot(aes(x=Site, y=value, fill=name))+
  geom_col(position = position_dodge()) +
  facet_wrap(.~Site, scales = "free")

在此处输入图像描述


推荐阅读