Eli*_*eth 3 plot r axes labels
我有以下情节
xleft<-c(1,2,3)
xright<-c(2,3,4)
ybottom<-c(1,2,3)
ytop<-c(2,3,4)
plot(c(1,4),c(1,4),type="n",main="title",xlab="site.x",ylab="ylab")
rect(xleft,ybottom,xright,ytop,col=c("blue","red","green"))
Run Code Online (Sandbox Code Playgroud)
我想使用这些位置和标签向两个轴添加相当长的物种名称
#Label position along axes
x.label.position<-(xleft+xright)/2
y.label.position<-(ybottom+ytop)/2
#Labels
x.label<-c("Long species Name1","Long species Name2","Long species Name3")
x.label<-c("Long species Name4","Long species Name5","Long species Name5")
Run Code Online (Sandbox Code Playgroud)
我想将数字轴和轴标题保留在原位.我还想添加一个传奇.所以最终产品看起来像这样

在不必完全清除轴的情况下,最好的方法是什么
par(xaxt = "n", yaxt = "n")
Run Code Online (Sandbox Code Playgroud)
并添加文字?谢谢你的建议.
我认为这样做的方法和R FAQ 7.27"如何创建旋转轴标签?" 同意,是在边缘留出空间,然后添加长标签文本.
mx=12
my=12
par(mar = c(mx,my, 4, 2) + 0.1)
plot(c(1,4),c(1,4),type="n",main="title",xlab="site.x",ylab="ylab")
rect(xleft,ybottom,xright,ytop,col=c("blue","red","green"))
text(par()$usr[1]-0.5,y.label.position,y.label,xpd=TRUE,adj=1)
text(y=par()$usr[3]-0.5,x=x.label.position,x.label,xpd=TRUE,adj=1,srt=90)
Run Code Online (Sandbox Code Playgroud)
你需要调整mx并my为您的字符串的长度,也许还可以调整文本的负偏移阻止它与标签的冲突.还要注意使用xpd=TRUE停止绘图被剪裁到图形区域.这也是获得传奇的关键:
par(xpd=TRUE)
legend(locator(1),legend=c("Species A","Species B","Species C"),
fill=c("blue", "red", "green"))
Run Code Online (Sandbox Code Playgroud)
然后单击您想要图例的位置 - 或替换locator(1)为list(x=-0.7,y=0.6)
您可能会发现使用该ggplot包的更简单方法.