首页 > 解决方案 > 如何在R中为y轴自定义间距?

问题描述

我想绘制一个图,R其中 y 轴上的刻度之间的间距都具有相同的距离,并且刻度标签是一个自定义值列表,例如:

set.seed(1)

n <- 10
x <- 1:n
y <- rnorm(n)

plot(x, y, axes = FALSE, ylim=c(-2,2))
axis(1)
axis(2, seq(-2,2,1), c(-100,-10,0,5,1000))

给我一个图,其中 y 轴刻度之间的距离相等,但显然值之间的真实距离不相等,即 -100 到 - 10 在数字上与 5 到 1000 的距离不同。

在此处输入图像描述

现在这可行,但此解决方案的问题是数据未正确映射到图中的正确位置。如,我希望根据原始比例正确绘制数据。因此,要么我需要一种方法来简单地将 y 轴更改为以不同的比例绘制,要么将数据转换为与我的axis(2, seq(-2,2,1), c(-100,-10,0,5,1000))命令匹配的新比例。

我想我要说的是我想要的等价物,plot(x, y, log = "y")但我实际上并不想要对数刻度,我只希望刻度线根据我想要显示的值均匀间隔,即-100,-10,0, 5,1000

标签: rplot

解决方案


您的示例有点难以实现,因为您将绘图边界设置为从 -2 到 2,然后想要从 -100 到 1000 的轴标签。如果您使用at并设置初始边界plot以匹配axis参数,它应该可以工作. 我已经修改了您的示例,以更均匀地将数据分布在绘图中:

set.seed(1)

n <- 10
x <- 1:n
y <- 100*rnorm(n)

yticks = c(-100,-10,0,5,200)
plot(x, y, axes = FALSE, ylim=c(-100,200))
axis(1)
axis(2,at = yticks,labels=yticks)

在此处输入图像描述


推荐阅读