如何解决使用mapplots绘制现有图中多年的饼图
我有一个多年的空间数据集,希望能看到每个位置的物种分布。我选择开始使用饼图查看数据。 我使用了for循环来绘制多年,并希望有一个图例来代表所有年份。
目前,我每年都有一个传奇。该图例每年的大小也各不相同,因此很难比较各年之间的丰度。如何更改脚本以使一个图例代表所有年份?
An example of my script. My dataframe is called spp.
spp
lat lon year fish abundance
1 49.75 -6.5 2007 a 310.98
2 49.75 -6.5 2007 b 1.58
3 49.75 -6.5 2007 c 0.01
4 50.75 -9.5 2008 a 110.23
5 50.75 -9.5 2008 b 42.92
6 50.75 -9.5 2008 c 0.04
7 50.75 -8.5 2009 a 53.57
8 50.75 -8.5 2009 b 41.48
9 50.75 -8.5 2009 c 0.57
library(maps)
library(mapdata)
library(mapplots)
col<-c("red","violet","blue")
opar <- par(mfrow = c(2,2),mar = c(1,1,1),oma = c(1,4,1))
for(i in c(2007,2008,2009)){
aa <- spp[(spp$year == i),]
map('worldHires',xlim = c(-11.2,-5),ylim = c(48,51.9),mar = c(.2,.2,.2));box()
legend("bottomright",as.character(i))
map.axes()
xyz<-make.xyz(x=aa$lon,y=aa$lat,z=aa$abundance,group=aa$fish)
draw.pie(x=xyz$x,y=xyz$y,z=xyz$z,radius=0.5,col=col,clockwise=TRUE,cex=0.1)
legend.z <- round(max(rowSums(xyz$z,na.rm=TRUE))/1,0)
legend.bubble(-10.3,48.9,z=legend.z,round=1,maxradius=0.5,inset=0.02,bty='n',txt.cex=0.9)
text(-10.2,49.6," Weight (tons)",cex=0.9)
}
legend.pie(-6.1,51.2,labels=c("a","b","c"),radius=0.4,bty="n",cex=0.8,label.dist=1.4)
mtext(side = 3,outer = TRUE,"Species composition")
par(opar)
提前谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。