如何将x和y轴的截距放在(0,0)处并将x和y轴延伸到绘图的边缘

时间:2013-01-26 17:54:08

标签: r plot curve axes

假设我要绘制x^2。我可以使用curve(),如下所示。

curve(x^2, -5, 5)

enter image description here 但是,我希望轴经过(0,0)。我可以做如下的事情:

curve(x^2, -5, 5, axes=FALSE)
axis(1, pos=0)
axis(2, pos=0)
abline(h=0)
abline(v=0)

我最终得到了类似下面的东西,看起来还不错。但我唯一的抱怨是,这种绘制轴的方式使得实际轴 - 例如x轴的-4到4之间的段 - 比右侧和左侧的段厚。 y轴也是如此。我想知道是否有更好的方法来绘制轴。谢谢!

enter image description here

2 个答案:

答案 0 :(得分:16)

默认情况下,axis()自动计算刻度线位置,但您可以使用at参数手动定义它们。因此,解决方法可能是:

curve(x^2, -5, 5, axes=FALSE)
axis(1, pos=0, at=-5:5)
axis(2, pos=0)

给出了:

enter image description here

问题是您必须手动确定每个刻度线的位置。稍微好一点的解决方案是使用axTicks函数(默认情况下使用的函数)计算它们,但使用自定义axp参数调用此函数,该参数允许您分别指定最小值,最大值和数量轴上刻度的间隔:

curve(x^2, -5, 5, axes=FALSE)
axis(1, pos=0, at=axTicks(1,axp=c(-10,10,10)))
axis(2, pos=0)

给出了:

enter image description here

答案 1 :(得分:2)

参数yaxsxaxs控制图周围的间距。设置为"i"以省略此内容:

curve(x^2, -5, 5, yaxs = "i")

另请参阅:https://stackoverflow.com/a/12300673/567015