0

这是生成图像图的代码示例。但由于某种原因,当我重新运行它时,没有创建新图像,但它覆盖了现有图。但是我希望它能够创建一个新图像,当然因为它有一个特定的参数“add”来指定它必须被添加到现有的图中(但默认值为 FALSE)。

有人知道这里发生了什么吗?

require(fields)

mat <- matrix(runif(5*5), ncol=5) 

mat[1,3] <- NA

image.plot(seq(1,5,1),seq(1,5,1), mat, col = tim.colors(64), legend.only=TRUE)
par(oma=c(0,0,0,6))
par(new = TRUE)
image(seq(1,5,1),seq(1,5,1),matrix(1,5,5), col = gray(0.8), xlab = "", ylab = "", axes = F)
par(new = TRUE)
image(seq(1,5,1),seq(1,5,1),mat, xlab="Hour of the Day", ylab = "Day of the Week", col = tim.colors(64), axes = F)
par(oma=c(0,0,0,0))

编辑 我对设备等不太了解。但我确实知道(我在 RStudio 中工作),当我首先这样做时plot(1:10),然后plot(10:1)清除图形窗口并显示第二个图而不添加到第一个图(在 RStudio 中,您当然还有其他功能,您还可以浏览以前的图形,但如果我在普通的 R 控制台中执行相同操作,则在调用第二个绘图时,绘图窗口会被清除)。这就是我想要的,我只是希望在我第二次调用 image.plot 时清除图形窗口,而不是覆盖上一次调用 image.plot 的图像。

4

2 回答 2

3

您注意到“新”参数的含义出现了奇怪的反转par。以下是帮助页面说明:

new

logical, defaulting to FALSE. If set to TRUE, the next high-level plotting command 
(actually plot.new) should not clean the frame before drawing as if it were on a new 
device. It is an error (ignored with a warning) to try to use new = TRUE on a device 
that does not currently contain a high-level plot.
于 2012-08-03T16:39:06.913 回答
0

我想如果你legend.only=Timage.plot命令中设置,它会自动设置par(new=TRUE). 如果您先绘制图像,然后添加图例,则它可以工作。在这里你必须离开一个par(new=TRUE)

require(fields)

mat <- matrix(runif(5*5), ncol=5) 

mat[1,3] <- NA

par(oma=c(0,0,0,6))
#par(new = TRUE)
image(seq(1,5,1),seq(1,5,1),matrix(1,5,5), col = gray(0.8), xlab = "", ylab = "", axes = F)
par(new = TRUE)
image(seq(1,5,1),seq(1,5,1),mat, xlab="Hour of the Day", ylab = "Day of the Week", col = tim.colors(64), axes = F)
par(oma=c(0,0,0,0))
image.plot(seq(1,5,1),seq(1,5,1), mat, col = tim.colors(64), legend.only=TRUE)
于 2014-06-02T12:08:55.747 回答