我怎样才能在图中的 x 轴和 y 轴标签中获得完整范围?

How can I have the full range in the x- and y-axis labels in a plot?

我有两个变量,xy

x = runif(8, 0, runif(1, 1, 5))
y = x^2

我想策划。请注意 x(因此 y=x^2)的范围并不总是相同的。

所以,命令

plot(x, y, pch=19, col='red')

生产

但是,我不想要图形周围的边框,所以我使用 bty='n' 参数进行绘图:

plot(x, y, pch=19, col='red', bty='n')

产生

恕我直言,这有点不幸,因为我希望 y 轴一直到 4,x 轴一直到 2。

因此,我在 plot 命令中使用了 xaxpyaxp 参数:

plot(x, y, pch=19, col='red', bty='n', 
     xaxp=c(
       floor  (min(x)),
       ceiling(max(x)),
       5
    ),
    yaxp=c(
       floor  (min(y)),
       ceiling(max(y)),
       5
    )
)

产生

这个稍微好一点,但还是没有显示完整范围。此外,我认为默认轴标签使用类似于 1,2,3,40.5,1,1.5,2 的步骤,而不仅仅是一些任意分数,这很好。

我猜 R 有一些参数或机制以 "humanly" 方式绘制轴上的整个范围(0.5,1,1.5 ...),但我没有找到它。那么,我可以尝试什么?

尝试:

plot(x, y, pch=19, col='red', bty='n', xlim=c(min(x),max(x)),
  ylim=c(min(y),max(y)), axes=FALSE)
axis(1, at=seq(floor(min(x)), ceiling(max(x)), 0.5))
axis(2, at=seq(floor(min(y)), ceiling(max(y)), 0.5))

或者,如果您希望对这些轴范围进行硬编码:

axis(1, at=seq(0, 2, 0.5))
axis(2, at=seq(0, 4, 0.5))

这是你想要的吗?