本篇用以记载R语言的学习及实践,持续更新……
2022年9月6日
在闲暇时间决定重拾R语言的学习。暑假时候,我寻找到一些生态学相关的R语言教学书籍,抱着检验自己是否适合学习生态学的心态,我翻开书页。在阅读基本的内容时候,我发现完善数据包、更新R-package的过程已经是当前阶段的难题,于是便放下专业书籍,在视频网站寻找基础教程(目前在看2015年的教程视频,感慨其历久弥新)。
于是今天下午的时间便在视频指引下进行简单的绘图操作,感慨不需要分号结尾的语言是如此方便。同时在搜索资源时,看到国内公众号分享的阅读经历,十分可贵。
下为本日简单的学习成果,包括随机数、制图、数组、重命名等,较为基础。看到自己的图画出来的时候还是很激动的。手头积攒的气象站数据或许可以就此激活!
set.seed(123)
x=rnorm(100,mean=100,sd=10)
set.seed(234)
y=rnorm(100,mean=100,sd=10)
hist(x,breaks=20)
y=matrix(1:20,nrow=5,ncol=4,byrow=FALSE)
rnames=c("apple","banana","orange","melon","corn")
cnames=c("cat","dog","bird","pig")
x=matrix(1:20,nrow=5,ncol=4,byrow=TRUE)
rownames(x)=rnames
colnames(x)=cnames
目前的学习规划:看完当前的视频(2d)→追随国内同仁步伐阅读数值生态学(5d)
受教资备考等影响可能推迟
2022年9月7日
今日主要学习饼图的制作。
library(plotrix)
par(mfrow=c(2,2))
slices <- c(10,12,4,16,8)
lbls <- c("US","UK","Australia","Germany","France")
pie(slices,labels = lbls,main="First Pie Chart",edges = 300,radius = 1)
pct <- round(slices/sum(slices)*100)
lbls2 <- paste(lbls,"",pct,"%",sep = "")
pie(slices,labels = lbls2,col=rainbow(length(lbls2)),
main="Pie Chart with Percentages",edges = 300,radius = 1)
pie3D(slices,labels=lbls,explode=0.1,
main = "3D Pie Chart",edges=300,radius=1)
barplot(slices,
main="Counts",
xlab="Country",ylab="Part")
规划依照从前继续进行,今日教资材料到货。
2022年9月11日
今日对数值生态学的一些案例进行复现。
spe[1:5,1:10]
head(spe)
nrow(spe)
ncol(spe)
dim (spe)
colnames(spe)
rownames(spe)
summary(spe)
range(spe)
ab <- table(unlist(spe))
barplot(ab,las = 1, xlab = "Abundance class",ylab = "Frequency",col = gray(5:0/5))
sum(spe == 0)
sum(spe == 0)/(nrow(spe) * ncol(spe))
plot(spa,asp = 1,type = "n",main = "Site Locations",xlab = "xcoordinate (km)",ylab = "y coordinate (km)")
lines(spa,lwd = 4,col = "Black")
text(spa,row.names(spa),pos = 3,cex = 0.8,col = "red")
text(80,10,"Upstream",cex = 1.2,col = "red")
text(10,60,"Downstream",cex = 1.2,col = "red")
par(mfrow=c(2,2))
plot(spa,asp=1,col= "brown",cex=spe$SQCE,main = "Brown trout",xlab= "x coordinate (km)",ylab= "y coordinate (km)")
lines(spa,col= "light blue")
plot(spa,asp=1,col= "brown " ,cex=spe$OMB,main = "Grayling",xlab= "x coordinate (km)" ,ylab= "y coordinate (km)")
lines(spa,col= "light blue" )
plot(spa,asp=1,col= "brown" ,cex=spe$BAR,main = "Barbel",xlab= "x coordinate (km)" ,ylab= "y coordinate (km)")
lines(spa,col= "light blue")
plot(spa,asp=1,col = "brown" ,cex=spe$BCO,main = "Common bream" , xlab = "x coordinate (km)", ylab= "y coordinate (km)")
lines(spa,col= "light blue")
spe.pres <- apply(spe > 0,2,sum)
sort(spe.pres)
spe.relf <- 100*spe.pres/nrow(spe)
round(sort(spe.relf),1)
par(mfrow = c(1,2))
hist(spe.pres, main = "Species Occurrences" , right =FALSE,las=1,
family="serif",
xlab="Number of occurrences",
ylab="Number of species",
breaks=seq(0,30,by=5 ),col= "bisque")
hist(spe.relf,main="Species Relative Frequencies",
family="serif",
right=FALSE,las=1,xlab = "Frequency of occurrences ( % )",
ylab="Number of species", breaks=seq (0,100,by=10),col= "bisque")
sit.pres <- apply(spe>0,1,sum)
sort(sit.pres)
par(mfrow=c(1,2))
plot(sit.pres,type="s",las=1,col="gray",
main="Species Richness \n Upstream-Downstream Gradient",
family="serif",
xlab="Positions of sites along the river",
ylab="Species Richness")
text(sit.pres,row.names(spe),pos = 3,cex = .8,col="red")
plot(spa,asp=1,main="Map of Species Richness",pch=21,
col="white",bg="brown",cex=5*sit.pres/max(sit.pres),
family="serif",
xlab="x coordinate (km)",ylab="y coordinate (km)")
lines(spa,col="blue")
N0 <- rowSums(spe>0)
H <- diversity(spe)
N1 <- exp(H)
N2 <- diversity(spe,"inv")
J <- H/log(N0)
E1 <- N1/N0
E2 <- N2/N0
div <- data.frame(N0,H,N1,N2,E1,E2,J)
par(mfrow=c(2,2))
plot(env$das,spe$TRU,type="1",col=4,main="Raw data",
xlab="Distance from the source [km]",
ylab="Raw abundance code")
lines(env$das,spe$OMB,col=3)
lines(env$das,spe$BAR,col="orange")
lines(env$das,spe$BCO,col=2)
lines(env$das,spe$LOC,col=1,lty="dotted")
plot(env$das,spe.scal)
关于数据源,在Google检索到作者的网页、得到Rdata数据,使用load(file=)加载数据;
今日实验因vegan函数与当前R版本不兼容而停止,考虑跳过并继续阅读。
2022年9月22日
vegan包已补齐,相关函数缺失致尝试无法进行。今日继续翻阅书籍,尝试气泡图。除因数据缺失导致的问题,剩下可依据函数复刻书中案例。

核心函数表达式为:
plot(spa,asp=1,main="Nitrate",pch=21,col="white",
bg="brown",cex=5*env$nit/max(env$nit),
xlab="x",ylab="y")
lines(spa,col="light blue")
使用cex控制气泡图大小的系数,env$nit为参与绘图的数据,相当于5倍的数据量/最大数据量,得到一个矢量的表达。
后序参考周运来先生的博客进行改进。
2022年9月23日
今日重绘相异矩阵热图,具体过程及关键代码见专门文章,成果如下:

发表回复