繁体   English   中英

R图,x轴和y轴接触

[英]R plot, x-axis and y-axis touching

我的问题涉及为R中的出版物制作图表。我使用了如下的绘图函数:

plot(x=data$SL, y=data$BD, xlab = "SL (mm)", ylab = "BD (mm)", pch=data$pch)

SL范围从51.7到73.7,BD从13.5到20.4。 不幸的是我还不允许发布图片。

但是,想要摆脱我用“轴= F”的盒子。 现在的问题是缺乏对轴功能的控制。 我用了:

axis(side=1, lwd=3, xpd=TRUE, at=c(min(data$SL):max(data$SL)))
axis(side=2, lwd=3, xpd=TRUE, at=c(min(data$BD):max(data$BD)))

问题是我无法设法让y轴和x轴在与框图中的相同点上聚集在一起。 如何让x轴和y轴相互接触?

最有可能设置xaxs =“i”和yaxs =“i”将帮助您获得所需的行为。

plot(c(1,2,3),c(2,4,6),axes=F,xaxs = "i",yaxs="i",xlim=c(0,3),ylim=c(0,6))
axis(side=1, lwd=3, xpd=TRUE, at=0:3)
axis(side=2, lwd=3, xpd=TRUE, at=seq(0,6,2))

尝试box(bty='L')仅绘制框的左下部分。 您也可以使用linessegmentsabline自己绘制lines ,并使用grconvertXgrconvertY函数来查找绘制线条的位置。

我建议您按照您概述的程序进行操作,然后使用:

box(which = "plot", bty = "l")

例如:

plot.new()
plot.window(xlim = c(1, 18), ylim = c(2, 20))
points(1:18, 2:19, pch = 1, col = "#FF7F24", cex = 1.2)
lines(1:18,  2:19, col = "#FF7F24", lwd = 2)
axis(side      = 1,
     lwd       = 0,
     lwd.ticks = 1,
     at        = 1:18,
     cex.axis = 0.9)
title(main = "Plot",
      ylab = "Y-Axis")
legend("top",
       legend = c("Legend"),
       col = c("#FF7F24"),
       text.col = c("#FF7F24"),
       pch    = 1,
       bty    = "n",
       cex    = 1.2)
axis(side      = 2,
     lwd       = 0,
     lwd.ticks = 1)
box(which = "plot", bty = "l")

您应该将选项lwd = 0lwd.ticks = 1传递给您的单独axis()调用,以防止轴的某些部分比轴的其他部分显得更胖,因为有些部分会被您对box()调用覆盖有些人没有。

我认为最后使用box()的解决方案更为通用,因为你可以使用它,例如你不能或不想在plot.defaultplot.window调用中传递bty = "l"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM