我正在处理一些鱼类电击数据并查看河流中每个横断面的鱼类丰度。从本质上讲,我每个横断面都有大量不同的物种,我在堆积的条形图中绘制。但是,我想要做的是标记条形的顶部,或者在x轴刻度标记下面标记该特定横断面的N = Total Preds。绘制的丰度是特定物种的数量除以在该横断面捕获的鱼类(preds)的总数。我无法弄清楚如何做到这一点,因为我不想用正在绘制的实际y值标记该图。
原谅原始代码。我是R的新手,并不是非常熟悉生成随机数据集。以下是我提出的建议。显然,在我的真实数据中,每个横断面的丰度百分比总是高达100%,但我们的想法是能够用横断面的TotalPreds标记图形。
#random data
Transect<-c(1:20)
Habitat<-c("Sand","Gravel")
Species<-c("Smallmouth","Darter","Rock Bass","Chub")
Abund<-runif(20,0.0,100.0)
TotalPreds<-sample(1:139,20,replace=TRUE)
data<-data.frame(Transect,Habitat,Species,Abund,TotalPreds)
#Generate plot
AbundChart<-ggplot(data=data,aes(x=Transect,y=Abund,fill=Species))
AbundChart+labs(title="Shocking Fish Abundance")+theme_bw()+
scale_y_continuous("Relative Abundance (%)",expand=c(0.02,0),
breaks=seq(0,100,by=20),labels=seq(0,100,by=20))+
scale_x_discrete("Transect",expand=c(0.03,0))+
theme(plot.title=element_text(face='bold',vjust=2,size=25))+
theme(legend.title=element_text(vjust=5,size=15))+
geom_bar(stat="identity",colour="black")+
facet_grid(~Habitat,labeller=label_both,scales="free_x")
我得到的这个情节我想用TotalPreds标记,如前所述。
同样,我的情节会有足够数量达到100%的条形图,在我的实际数据中,横断面1-10是砾石,11-20是沙子。请原谅我糟糕的样本数据集。
*更新
我的实际数据如下:
在这种情况下,变量是鱼类物种,价值是该物种在该特定电休克断面上的丰度。当数据移动到新物种时,重复Total_Preds,因为总preds指示在该特定样带处捕获的总preds(即每个样带仅具有1个总preds值)。也许融化功能不是分析这种情况的正确方法,但我喜欢在这20个样带中以不同速率捕获的17种鱼类。我想栖息地类型对于横断面来说也是单数的,其中1-10是砾石,11-20是沙子,并且在我的数据集中也反复出现在鱼类中。
答案 0 :(得分:1)
为响应更新而编辑,您应该能够创建包含TotalPred数据(不重复)的新数据框,并在geom_text中使用它。没有数据但无法测试,但可能:
# select non-repeated half of melted data for use in geom_text
textlabels <- data[c(1:19),]
#Generate plot
AbundChart<-ggplot(data=data,aes(x=Transect,y=Abund,fill=Species))
AbundChart+labs(title="Shocking Fish Abundance")+theme_bw()+
scale_y_continuous("Relative Abundance (%)",expand=c(0.02,0),breaks=seq(0,100,by=20),labels=seq(0,100,by=20))+
scale_x_discrete("Transect",expand=c(0.03,0))+
theme(plot.title=element_text(face='bold',vjust=2,size=25))+
theme(legend.title=element_text(vjust=5,size=15))+
geom_bar(stat="identity",colour="black")+
facet_grid(~Habitat,labeller=label_both,scales="free_x") +
geom_text(data = textlabels, aes(x = Transect_ID, y = value, vjust = -0.5,label = TotalPreds))
您可能需要使用不同的vjust值来获取所需的标签。
有关详细信息,请参阅geom_text help page。
希望编辑适用于您的数据。