【问题标题】:R grid() function on fixed aspect-ratio plot固定纵横比图上的 R grid() 函数
【发布时间】:2014-07-01 15:03:59
【问题描述】:

我在固定纵横比图上遇到了 R 的 grid() 函数的问题。

当使用固定的纵横比进行绘图时,R 的默认行为似乎是调整绘图窗口内部的大小,而不是调整绘图窗口本身的大小,如下所示:

除了情节两侧难看的空白空间(这是次要的,我可以处理)之外,这在尝试覆盖网格时会造成问题。如果我采用上一个图,并使用 grid() 函数覆盖一个 10x10 的网格,我会得到以下结果:

请注意,网格跟随整个绘图窗口,而不是固定纵横比绘图。这使得在固定纵横比图上覆盖规则网格变得非常困难(阅读:几乎不可能)。有谁知道这个问题的好方法吗?

编辑:如果你想让代码运行(那里真的没有太多信息),你去吧:

x <- 1:1200
y <- rep(x,times=800)
dim(y) = c(1200,800)
png(file="EXAMPLE1.PNG",width=1000,height=500)
image(y, asp=1)
dev.off()
png(file="EXAMPLE2.PNG",width=1000,height=500)
image(y, asp=1)
grid(col="black",nx=10,ny=10)
dev.off()

【问题讨论】:

  • 你可以添加你正在使用的代码
  • 我还是不明白你的问题。您似乎抱怨多余的空间,但没有尝试使用image 中提供的参数来删除它。至于grid,这只是将网格添加到整个绘图区域的快速方法。如果你想微调你的网格,我建议直接使用abline
  • 请注意,图像是 1200x800,即 /not/ 正方形。此外,考虑到需要更改边距以适应其他功能时,微调 par() 中的大小是不切实际的。 @rawr,我对额外空间没有任何抱怨,将窗口大小调整为最小(尽管仍然存在)是微不足道的。在示例中故意夸大了它以证明问题。不过,abline 似乎工作正常,所以谢谢。

标签: r plot visualization


【解决方案1】:

你的 x 轴是 y 轴的两倍,所以要么使用两倍的网格线

png(file="EXAMPLE3.PNG",width=1000,height=500)
image(y, asp=1)
grid(20,10)
dev.off()

或者直接使用abline

png(file="EXAMPLE4.PNG",width=1000,height=500)
image(y, asp=1)
invisible(sapply(seq(-1,2,0.1),function(i){
      abline(v=i,h=i,col = "lightgray", lty = "dotted",lwd = par("lwd"))
      }
      ))
dev.off()

【讨论】:

  • 后一种解决方案效果很好。不幸的是,前者是 PITA,因为我能找到的唯一尺寸规格包括边距,而边距不是以像素为单位指定的(而 PNG 设备以像素为单位指定尺寸)。
猜你喜欢
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 1970-01-01
  • 2013-07-07
  • 2017-02-13
  • 2013-10-31
相关资源
最近更新 更多