如何x和y轴的截距放置在(0,0)和延伸x和y轴的情节的边缘[重复](How to place th

2019-07-18 18:03发布

这个问题已经在这里有一个答案:

  • 集合R曲线X轴为y = 0,以显示 2个答案

假设我想绘制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轴。 我不知道是否有绘制轴的更好的方法。 谢谢!

Answer 1:

默认情况下,轴()自动计算刻度线的位置,但你可以用手动定义他们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)

这使 :



Answer 2:

这些参数yaxsxaxs控制间距周围地块。 设置为"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]
标签: r plot curve axes