2017-06-27 9 views
0

raster::plotRGBで6枚の画像をプロットしようとしていますが、余白を調整するのに問題があります。既定では、plotRGBは、前に呼び出されたpar(mar)の設定をすべて上書きします。私の目標は、3 * 2対称グラフパネルを持つことです。 enter image description hereplotRGBグラフに余白を追加

あなたはpar(mar=c(1,1,1,1)が設定されている場合でも、同じライン上の2つのグラフの間の分離がない見ることができます。

library(raster) 
par.default <- par(no.readonly=T) 

png("c:\\temp\\img_plotRGB.png", width=6, height=9,unit="in", res=300) 
par(mfrow=c(3,2), oma=c(1,1,1,1), mar=c(1,1,1,1)) 
for(i in 1:6){ 
    r <- g <- b <- raster(ncol=10, nrow=10, res=1, crs=CRS("+init=EPSG:32198"), ext=extent(c(0,10,0,10))) 
    values(r) <- runif(ncell(r)) 
    values(g) <- runif(ncell(r)) 
    values(b) <- runif(ncell(r)) 
    rgb = rgb<-stack(r*255,g*255,b*255) 
    plotRGB(rgb) 
} 
par(par.default) 
dev.off() 

がいることを示します。

私はplotRGBに設定axes=TRUEを追加した場合、私は私がしたいレイアウトを得るが、軸と、私はしたくない:

png("c:\\temp\\img_plotRGB_axes.png", width=6, height=9,unit="in", res=300) 
par(mfrow=c(3,2), oma=c(1,1,1,1), mar=c(1,1,1,1)) 
for(i in 1:6){ 
    r <- g <- b <- raster(ncol=10, nrow=10, res=1, crs=CRS("+init=EPSG:32198"), ext=extent(c(0,10,0,10))) 
    values(r) <- runif(ncell(r)) 
    values(g) <- runif(ncell(r)) 
    values(b) <- runif(ncell(r)) 
    rgb = rgb<-stack(r*255,g*255,b*255) 
    plotRGB(rgb, axes=TRUE) 
} 
par(par.default) 
dev.off() 

enter image description here

間隔で最初のグラフを得るためにどのように任意のアイデアや軸が書き込まれていない2番目のグラフ?

答えて

0

私はついにそれを修正するためのハックを見つけました。それは理想的ではありませんが、実際には関数のバグだと思っていますので、関数を書き直すことなく他の方法で回避する方法はありません。

私の修正の考え方は異なる幅の境界線で二回SpatialPolygonsラスタの範囲の外とplotそれを作ることです。

png("c:\\temp\\img_plotRGB_border.png", width=6, height=9,unit="in", res=300) 
par(mfrow=c(3,2), oma=c(0,0,0,0), mar=c(0,0,0,0)) 
for(i in 1:6){ 
    r <- g <- b <- raster(ncol=10, nrow=10, res=1, crs=CRS("+init=EPSG:32198"), ext=extent(c(0,10,0,10))) 
    values(r) <- runif(ncell(r)) 
    values(g) <- runif(ncell(r)) 
    values(b) <- runif(ncell(r)) 
    rgb = rgb<-stack(r*255,g*255,b*255) 
    plotRGB(rgb) 

### New lines! 
    plot(as(extent(c(0,10,0,10)),"SpatialPolygons"),border="black", lwd=8, add=T) 
    plot(as(extent(c(0,10,0,10)),"SpatialPolygons"),border="white", lwd=4, add=T) 
### New lines! 
} 
par(par.default) 
dev.off() 

enter image description here

それは動作しますが、それがあれば、問題を引き起こす可能性がありますあなたはlegendかそのようなものを追加したいと思います。

関連する問題