假设我想绘制x^2
。 我可以用curve()
如下。
curve(x^2, -5, 5)
不过,我想轴要经过(0,0)。 我可以做一些如下:
curve(x^2, -5, 5, axes=FALSE)
axis(1, pos=0)
axis(2, pos=0)
abline(h=0)
abline(v=0)
我最终得到类似下面,看起来OK。 但是我有唯一的抱怨是绘制轴的这种方式使得实际轴 - 例如-4和x轴的4之间的段 - 比段到右侧和左侧厚。 这同样与y轴。 我不知道是否有绘制轴的更好的方法。 谢谢!
默认情况下,轴()自动计算刻度线的位置,但你可以用手动定义他们at
说法。 因此,一个解决办法可能是这样的:
curve(x^2, -5, 5, axes=FALSE)
axis(1, pos=0, at=-5:5)
axis(2, pos=0)
这使 :
问题是,你必须手动确定每个刻度标记的位置。 一个稍微好一点的解决办法是计算它们与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)
这使 :
这些参数yaxs
和xaxs
控制间距周围地块。 设置为"i"
来省略此:
curve(x^2, -5, 5, yaxs = "i")
参见: https://stackoverflow.com/a/12300673/567015
文章来源: How to place the intercept of x and y axes at (0 , 0) and extend the x and y axes to the edge of the plot [duplicate]