如果您选择继续使用 R 中的 base 绘图功能,您可以解决您的每一个问题。以下回复只是为了回顾和说明此问题的先前 cmet,并包含其他与 SO 相关的材料以获得额外帮助。
首先,让我们解决 y 轴问题。正如原始 cmets 中所建议的,您当前相对于 y 轴调用了两次 axis 命令。通过尽早确定所需的 y 轴限制,可以使用 ylim 参数轻松应用它们。
df<-data.frame(anim=c(1.72,1.6,1.7,1.74,1.8),mirr=c(.80,.95,1.13,1.17,1.26))
gmin<-min(df) #<---- ESTABLISH MIN Y-AXIS VALUE
gmax<-max(df) #<---- ESTABLISH MAX Y-AXIS VALUE
plot(df$anim,type="o",col="blue",ylim=c(gmin,gmax),axes=FALSE,ann=FALSE)
box()
axis(1,at=1:5,lab=seq(0.5,0.9,0.1))
axis(2,seq(gmin,gmax,0.2),las=2)
lines(df$mirr,type="o",pch=22,lty=2,col="red")
title(main="corr vs dprime",col.main="forestgreen",font.main=4)
title(xlab="Correlation",col.lab="black",font.main=4)
title(ylab="dprime",col.lab="black",font.main=4)
其次,图例可以放置在绘图区域内或放置在外部。按照原始 cmets 中的建议,输入 ?legend 并查看 x, y 参数以定位您的图例。这可能是您最好的方法,因为您的 x 和 y 值范围很小,这将允许轻松放置图例。虽然不太具体,但您也可以使用关键字来指定图例的位置(详细信息下的?legend),例如“bottomright”、“bottom”、“bottomleft”、“left”、“topleft”、“top”、“topright” 、“右”和“中心”。例如:
legend('bottomright', c("anim", "mirr"), cex=0.8,col=c("blue","red"), pch=21:22, lty=1:2)
调整参数(例如x.intersp、y.intersp 和cex)将允许您更改图例的形状和相对大小。
此外,您可以使用ggplot2 在绘图区域之外创建图例,如上一个答案所示。在以下 SO 答案中推荐了几个选项:Plot a legend outside of the plotting area in base graphics?。最流行的方法利用par 中的xpd 参数,然后是legend 中的x, y 或inset 参数。
无需调整绘图区域的边距,您只需选择 x 和 y 参数,以便正确放置图例而不与其他项目重叠。例如:
par(xpd=TRUE)
legend(4.5,2.1,c('anim','mirr'),cex=0.8,col=c('blue','red'),pch=21:22,lty=1:2)
可以使用legend 中的bty 参数控制有关图例的框。
如果您希望您的图例更像上一个答案,则需要查看 par 中的 mai、mar 和 oma 参数,以便正确显示图例 (see here) .配置完成后,您可以使用 legend 中的 inset 参数指定图例在绘图区域之外的位置:
par(oma=c(0,0,0,1),mar=c(5.1,4.1, 4.1, 5.1),xpd=T)
plot(df$anim,type="o",col="blue",ylim=c(gmin,gmax),axes=FALSE,ann=FALSE)
box()
axis(1,at=1:5,lab=seq(0.5,0.9,0.1))
axis(2,seq(gmin,gmax,0.2),las=2)
lines(df$mirr,type="o",pch=22,lty=2,col="red")
title(main="corr vs dprime",col.main="forestgreen",font.main=4)
title(xlab="Correlation",col.lab="black",font.main=4)
title(ylab="dprime",col.lab="black",font.main=4)
legend('right',inset=c(-0.4,0),c('anim','mirr'),cex=0.8,col=c('blue','red'),pch=21:22,lty=1:2)
除了其他答案,我希望这篇小评论对您当前的情况有所帮助,并展示 R 使用 base 和其他绘图功能的灵活性。归功于以前的用户和他们的 cmets 以及其他 SO 答案。