将水平图导出到png文件,同时保持轴的比例

时间:2013-11-21 21:33:25

标签: r lattice

作为Adding a background image to a levelplot的后续内容,我将levelplot导出到png文件,我想知道如何访问该格子对象的宽度和高度以通过它作为png的参数。

library("png")
library("lattice")
library("latticeExtra")

MyFunction <- function(x,y){
  return(
    dnorm(sqrt(x^2+y^2)))}

meshstep <- 0.2
x<- seq(-30,30,meshstep)
y <-seq(-20,20,meshstep)
image <- readPNG(system.file("img", "Rlogo.png", package="png"))

grid <- expand.grid(x=x, y=y)

grid$z<- MyFunction(grid$x,grid$y)

MyPalette <- colorRampPalette(c('white','yellow', 'red'))

levels <- 10
p<- levelplot(z~x*y, grid, cuts = levels, xlab="",
                ylab="",
                colorkey = TRUE, region = TRUE,col.regions=MyPalette(levels+1),
                alpha.regions=0.5) 
+ layer(grid.raster(as.raster(image)), under=TRUE) 

trellis.device(device="png", filename="MWE.png")
print(p)
dev.off()

对于生成的png文件,宽度和高度为480px,因为这是默认值。我想写trellis.device(device="png", filename="MWE.png", width=width(p), height=height(p))或类似的东西,以保持x和y轴均匀分布。

1 个答案:

答案 0 :(得分:0)

晶格图的高度和宽度是使用中的图形设备的尺寸。所以我认为你应该在这里设置你的png设备的大小。

 png(width=500, height=700) 
 p ## your plot command here
 dev.off()