R:y轴未填满绘图区域吗?

时间:2018-08-20 23:26:16

标签: r plot

我有一个只有轴的小子图:

enter image description here

par(mar=c(0.1, 0.1, 1.0, 37))
plot(NULL, axes=FALSE, xlim=c(0,0), ylim=ylim.axis_right, type="n", ann=FALSE)
axis(4, at=c(ylim.axis_right[1], ylim.axis_right[1]/2, 0, ylim.axis_right[2]/2, ylim.axis_right[2]), labels=FALSE, lwd=6, col="#000000")
box()

其中ylim.axis_right是2个矢量,其形式为(-x,x)。
我的问题是,我为虚拟绘图和大多数外部标记的轴都提供了相同的ylim,并且我希望实际轴会拉伸到框的极限。为什么没有发生,我该如何纠正?

1 个答案:

答案 0 :(得分:1)

问题是默认情况下,R将使图的大小增加4%。您可以使用yaxs =“ I”禁止显示。帮助页面?par中对此进行了说明。

  

xaxs
  X轴使用的轴间隔计算方式。可能的值为“ r”,“ i”,“ e”,“ s”,“ d”。风格一般   由数据范围或xlim(如果有)控制。
  样式“ r”(常规)首先在两端将数据范围扩展4%,然后   然后找到带有适合扩展范围的漂亮标签的轴。
  样式“ i”(内部)仅找到带有漂亮标签的轴   符合原始数据范围。

     

yaxs
  y轴使用的轴间隔计算方式。请参见上面的xax。

因此,您可以通过指定yaxs="i"

来获得所需的效果。
par(mar=c(0.1, 0.1, 1.0, 29))
ylim.axis_right = c(-1,1)
plot(NULL, axes=FALSE, xlim=c(0,1), ylim=ylim.axis_right, type="n", ann=FALSE, yaxs="i")
axis(4, at=c(ylim.axis_right[1], ylim.axis_right[1]/2, 0, ylim.axis_right[2]/2, 
    ylim.axis_right[2]), labels=FALSE, lwd=6, col="#000000")
box()

Axes aligned