以下是生成图像图的代码示例。但由于某种原因,当我重新运行它时,没有创建新图像,但它覆盖了现有的图。但是我希望它能够创建一个新图像,当然它有一个特定的参数'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时的图像。
答案 0 :(得分: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.
答案 1 :(得分:0)
我认为如果您在legend.only=T
命令中设置image.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)