R에 여러 래스터가 포함 된 다중 패널 플롯을 만들려고합니다. Windows 컴퓨터에서 작업하고 있습니다.R 래스터 레벨 플롯 (범주 범례 포함)
Raster로는 다음과 같은 형식으로 표시한다 :
첫 행 가시 "메인"타이틀과 함께 ylabel (중심) 단일 래스터를 포함한다.
행 2 - 6에는 두 개의 인접한 래스터 (즉, 두 개의 열)가 있습니다. "메인"제목은 2 행에서만 필요하며 나머지 제목 행은 표제가됩니다.
행 7에는 범례 범례가 포함되어야합니다. 이 질문에 대해 설명한 것과 마찬가지로 여기서 제공 :
https://gis.stackexchange.com/questions/73143/legend-of-a-raster-map-with-categorical-data
간격이 중요하다. 제목을 허용하기 위해 행 1과 행 2 사이에 약간의 여유 공간을 유지하면서 행 2와 행 8 사이의 거리를 최소화하고 싶습니다. 각 래스터는 같은 크기 여야합니다.
아래에서 제가 수행중인 작업의 재현 가능한 예를 찾으십시오. 나는 왜 "메인"제목에 색칠 된 배경이 만들어 지는지 확신 할 수 없으며 "top.padding"및 "bottom.padding"명령으로 공백을 줄이려고 시도한 후에 발생합니다.
library(raster)
library(rasterVis)
f <- system.file("external/test.grd", package="raster")
r <- raster(f)
rmat = as.matrix(r)
pc = c(0,0.6,0.8,0.9,0.92,0.95,0.97,0.98,0.99,1)
digits_n = c(0,1,c(rep(0,length(pc)-2)))
color_breaks = NULL
for (i in 1:length(pc)){color_breaks = c(color_breaks, signif(quantile(c(rmat[which(!is.na(rmat))]),pc[i]), digits = digits_n[i]))}
color_breaks = unique(color_breaks)
color_type = c(colorRampPalette(c("snow1","snow3","seagreen","orange","firebrick"))(length(color_breaks)))
ss = stack(r)
p0 = levelplot(ss, col.regions=color_type, colorkey=FALSE,margin=FALSE, at=color_breaks,names.attr=c(2000), xlab=NULL, ylab=c("A0"), scales=list(draw=FALSE), par.settings=list(layout.heights=list(bottom.padding=-2)))
ss = stack(r,r)
p1 = levelplot(ss,col.regions=color_type, colorkey=FALSE, margin=FALSE, at=color_breaks, names.attr=c(2050,2100), xlab=NULL, ylab=c("A1"), scales=list(draw=FALSE), layout=c(2,1), par.settings=list(layout.heights=list(top.padding=-2,bottom.padding=-2)))
ss = stack(r,r)
p2 = levelplot(ss,col.regions=color_type, colorkey=FALSE, margin=FALSE, at=color_breaks, names.attr=c("",""), xlab=NULL, ylab=c("A2"), scales=list(draw=FALSE), layout=c(2,1), par.settings=list(layout.heights=list(top.padding=-2,bottom.padding=-2)))
ss = stack(r,r)
p3 = levelplot(ss,col.regions=color_type, colorkey=FALSE, margin=FALSE, at=color_breaks, names.attr=c("",""), xlab=NULL, ylab=c("A3"), scales=list(draw=FALSE), layout=c(2,1), par.settings=list(layout.heights=list(top.padding=-2,bottom.padding=-2)))
ss = stack(r,r)
p4 = levelplot(ss,col.regions=color_type, colorkey=FALSE, margin=FALSE, at=color_breaks, names.attr=c("",""), xlab=NULL, ylab=c("A4"), scales=list(draw=FALSE), layout=c(2,1), par.settings=list(layout.heights=list(top.padding=-2,bottom.padding=-2)))
ss = stack(r,r)
p5 = levelplot(ss,col.regions=color_type, colorkey=FALSE, margin=FALSE, at=color_breaks, names.attr=c("",""), xlab=NULL, ylab=c("A5"), scales=list(draw=FALSE), layout=c(2,1), par.settings=list(layout.heights=list(top.padding=-2,bottom.padding=-2)))
windows()
print(p0, split= c(1,1,1,7), between = c(3,3))
print(p1, split= c(1,2,1,7), newpage=FALSE)
print(p2, split= c(1,3,1,7), newpage=FALSE)
print(p3, split= c(1,4,1,7), newpage=FALSE)
print(p4, split= c(1,5,1,7), newpage=FALSE)
print(p5, split= c(1,6,1,7), newpage=FALSE)
그때 뭔가 다음과 비슷한 행 7 범례에 추가 할
:
legend("center",
ncol = length(color_breaks)/2,
legend=c(color_breaks),
fill=color_type,cex=0.6,
title=expression(bold("Magnitude [ UNITS ]")), box.col = FALSE, xjust = 0, title.adj = 0
)
내가 얻을 이미지를 게시 할 것입니다하지만 난 것 같아요 평판 포인트가 필요합니다.
제목의 배경색이 나타나는 이유는 무엇입니까? 행 1과 행 2 사이의 공간을 늘리면서 행 2와 행 6 사이의 간격을 줄이려면 어떻게해야합니까? 이제 7 번 열에 범주 형 범례를 추가하는 방법은 무엇입니까?
감사합니다.
감사합니다. 7 번째 줄에 범례 범례를 추가하는 방법은 아직 명확하지 않습니다. 나는 범례 범례 (내 게시물에는 스크립트가 포함되어 있음)를 만드는 방법을 알고 있지만 레벨 플롯 창에서 배치를 제어하는 방법은 알지 못합니다. 내 현재의 해결 방법은 별도의 창에서 음모를 꾸미고 나서 R (두통의 비트) 외부의 플롯에 추가하는 것입니다. – scp390