【问题标题】:Uneven axis in R plotR图中的轴不均匀
【发布时间】:2011-09-27 00:33:54
【问题描述】:

是否可以在 R 中绘制不均匀的轴?我知道我可以在特定位置指定标签,但我的意思是,我希望将图表的特定部分展开。例如,想象一个 X 轴,例如:

-10 -5 0 1 2 3 4 5 10

上述每个值之间的间距相等。

【问题讨论】:

  • 你可以,但我相信你必须精确定义如何创建这个新的比例,转换你的数据,绘制它,然后用旧的、未转换的值标记轴。但我建议不要这样做。这种使用尺度的胡闹通常被认为是不好的做法(除了众所周知的转换,如对数)。
  • 是的,这是个好建议 - 不要这样做 :) 大局是什么,对于您最终想要做的事情,可能有更好的方法。
  • 我知道这是不好的做法,但在某些情况下(例如我的),它是有帮助的。你能展示一些示例代码吗
  • 重点是:你想展示什么?如果您只想“放大”部分数据,最好绘制两条带有不同 x 轴比例的曲线,或者甚至在主图内的窗口中“嵌入”第二个图。跨度>
  • 基本上,我在 [-3,3] 之间的点比在 [-10,-3] 和 [3,10] 之间的点多,我想更好地展示它们。

标签: r plot


【解决方案1】:

你需要考虑你的水平,说“fac”,然后绘图。稍后使用带有标签=as.character(fac) 的axis()。

 dat <- data.frame(x=factor(c(-10 ,-5, 0, 1, 2, 3, 4, 5, 10)), y=1:9)

 with(dat, plot(x, y))   # a step-like plot
 with(dat, plot(as.numeric(x), y, type="p", xaxt="n")) # points instead of steps
 axis(1, at=1:9, labels=as.character(dat$x))           # the "irregular" axis

进一步思考@Ben Bolker 的问题,还应该可以定义一个辅助x 值来确定水平上的绘图“x=”和axis“at=”坐标,然后使用@987654323 @ 应用于“real x”作为axis 的“labels=”参数,如上所示,但不需要因子构造。使用这种方法可以实现更复杂的方案,其中可以使用跨辅助变量特定范围的连续值进行绘图,但为这些范围边界处的标签构建截断值。我认为在构建实施示例之前需要进一步的设计理由和规范。

【讨论】:

  • 如果在中断之间有 x 值的点,这会起作用吗?
  • 这不是原始问题的一部分,如果不希望轴中有额外的“空间”,我可以预见一些问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 2013-08-01
  • 1970-01-01
相关资源
最近更新 更多