[英]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')
仅绘制框的左下部分。 您也可以使用lines
, segments
或abline
自己绘制lines
,并使用grconvertX
和grconvertY
函数来查找绘制线条的位置。
我建议您按照您概述的程序进行操作,然后使用:
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 = 0
和lwd.ticks = 1
传递给您的单独axis()
调用,以防止轴的某些部分比轴的其他部分显得更胖,因为有些部分会被您对box()
调用覆盖有些人没有。
我认为最后使用box()
的解决方案更为通用,因为你可以使用它,例如你不能或不想在plot.default
或plot.window
调用中传递bty = "l"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.