【问题标题】:wrong ylim in RR中的错误ylim
【发布时间】:2014-09-09 17:21:06
【问题描述】:

我有 2 个关于 r 绘图功能的问题:

  1. 当我尝试绘制此图时(如下示例),尽管我将 ylim 设置为 c(0,max(...)*1.5),但 y 轴上始终存在 -1 值。如何将 ylim 值设置为 0?

  2. 我的第二个问题是我想四舍五入 y 轴标签(十进制 0)。我知道我可以手动完成:(axis(side = 2, at=seq(1,3,1), labels = c(-1,0,1)))。但我想要一个“宇宙”解决方案,因为我会用不同轴的 for 循环制作许多图。

示例:

xy = c(NA,NA,NA,0,NA,0,NA,0,0)

plot(xy, ylim = c(0,max(c(NA,NA,NA,0,NA,0,NA,0,0),na.rm = TRUE)))

感谢您的帮助!

【问题讨论】:

  • 这是因为你的代码相当于ylim=c(0,0)。你希望剧情是什么样子的?如果 y(或 x)中的指定范围为 0,plot(...) 将恢复为计算轴限制的默认算法。

标签: r plot label axis


【解决方案1】:

我认为你的问题 1 中的问题是定义

ylim = c(0,max(c(NA,NA,NA,0,NA,0,NA,0,0),na.rm = TRUE))

等于

ylim = c(0,0)

即使您将第二个 0 乘以任何正数。所以你告诉 R 将 y 轴从 0 变为 0,我相信 R 明白这没有意义,因此将一种默认的 ylim 从 -1 变为 1。

为避免这种情况,您可以添加一个正数,例如1,而不是将其相乘,因此您的代码将是,例如:

plot(xy, ylim = c(0,max(xy,na.rm = TRUE)+1))

【讨论】:

  • 哦,我真傻... :) 感谢您的回复!你能也回答我的第二个答案吗?
  • 我认为这取决于数据。对于您提供的示例,我认为将 y 轴标签四舍五入为小数点后没有任何意义。像您在问题中所做的那样定义轴刻度的顺序会更有意义。
  • 是的,但很难定义它,因为我会用 for 循环制作 100 多个图,每个图都有不同的 y 轴长度。
  • 您需要定义一个新的绘图函数,该函数调用plot,但会抑制 t 轴,然后使用数据值范围内的舍入值标记 y 轴。我怀疑您想使用 floor() 和 ceil() 作为 ylim 的“舍入”函数
  • 也许我不是很清楚:我只想显示四舍五入的值(在我的示例中,只有 0 和 1)。那么如何隐藏 1,5 和 0,5?
猜你喜欢
  • 2015-11-27
  • 2015-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多