【发布时间】:2021-12-28 22:49:39
【问题描述】:
背景:我在不同地点进行了蛤蜊调查并测量了它们的大小。由于低潮、蛤蜊床的范围等不同,调查没有包括相同的总面积。因此,一些地点可能有较高的蛤密度(#/m^2)但面积较小,因此总计数为低,而其他人可能具有相反的特征(或任何其他组合)。
我正在尝试创建一个多面直方图以显示每个不同 site 的 size 频率,同时消除每个 site 调查的 area 数量的影响。从本质上讲,我希望频率能够反映每个站点的密度(每单位面积的出现次数),这样我就可以跨站点进行比较,并查看大小分布和相对频率的总体差异。
以下是一些示例数据:
site<-c(rep("D",5),rep("C",10),rep("B",10),rep("A",20))
size<-c(1,2,2,2,3,
1,1,2,2,2,2,2,2,3,3,
1,1,2,2,2,2,2,2,3,3,
1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3)
area<-c(rep(10,5),rep(20,10),rep(10,10),rep(20,20))
density<-c(rep(5/10,5),rep(10/20,10),rep(10/10,10),rep(20/20,20))
description<-c(rep("Low Density 0.5, Low Area 10",5),rep("Low Density 0.5, High Area 20",10),rep("High Density 1.0, Low Area 10",10),rep("High Density 1.0, High Area 20",20))
d<-data.frame(site,size,area,description)
我知道我可以用 y 轴上的基本计数绘制直方图,它显示了面积和密度的影响:
ggplot(d, aes(x=size,fill=site))+
geom_histogram(aes(y=stat(count),group=site))+
facet_grid(site~.)
受调查区域影响的计数直方图:
或者我可以缩放 y 轴以显示相对频率,因此所有站点的总和 = 1,这也说明了调查区域和密度的影响:
ggplot(d, aes(x=size,fill=site))+
geom_histogram(aes(y=stat(count)/sum(count),group=site))+
facet_grid(site~.)
所有站点的相对频率(受调查区域的影响):
或者我可以缩放 y 轴以通过 site 显示相对频率,因此每个站点内的总数 = 1,这消除了密度和面积的影响(不是我想要的,因为这只能让我比较差异尺寸分布,但不是密度):
ggplot(d, aes(x=size,fill=site))+
geom_histogram(aes(y=stat(density*width),group=site))+
facet_grid(site~.)
每个站点的相对频率:
我真的很想移除area 的影响,以便图表显示密度差异。对于此示例,它应如下图所示
注意我不得不操纵数据集来人为地创建这个图表作为例子
理想图示例:
谁能帮我弄清楚如何在消除调查总面积的影响的同时显示不同地点的密度差异?
提前谢谢你!
【问题讨论】:
标签: r ggplot2 histogram scale frequency