【问题标题】:How to make custom spacing for y-axis in R?如何在R中为y轴自定义间距?
【发布时间】:2021-03-01 09:45:28
【问题描述】:

我想在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

【问题讨论】:

  • 你能告诉我你想要的 x 和 y 限制吗?
  • @Damandeep -100 到 1000
  • -100 到 1000?

标签: r plot


【解决方案1】:

您的示例有点难以实现,因为您将绘图边界设置为从 -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)

【讨论】:

  • 但是现在刻度线之间的空间甚至不是我想要的。
  • 我希望图中的点绘制在真正的 x,y 坐标处。
  • 点绘制在它们的真实坐标上。我在数据生成器中添加了一个 100x 乘数,因此它们不在 1 附近的直线上,因为轴值非常极端。使用代码,您将能够得到您想要的原因。如果您刚开始使用 R,我建议您也查看 ggplot。
  • -100 到 10 之间的距离(视觉上)与 -10 到 0 之间的距离不同。这不是我想要的。
  • 不知道自己想要什么。代表任意间隔的均匀间隔的刻度线?就像轴上的 100 像素距离代表 -10 到 0 但高于 100 像素距离代表 10 到 100?并在刻度之间线性插值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多