栅格和点的单一颜色键Levelplot R

时间:2016-04-06 03:19:57

标签: r maps raster geopoints levelplot

使用下面的示例数据,如何使用与下面显示的“手动”连接图中相同的颜色键生成栅格和空间点图?

library(rasterVis)
library(raster)
library(colorRamps)
col=colorRampPalette(matlab.like2(255))

s <- stack(replicate(2, raster(matrix(runif(100), 10))))
xy <- data.frame(coordinates(sampleRandom(s, 10, sp=TRUE)),
                 z1=runif(10), z2=runif(10))

levelplot(s, margin=FALSE, at=seq(0, 1, 0.05),col.regions=col)
x=xy$x;y=xy$y;z=xy$z1

levelplot(z ~ x + y,contour=F, panel = panel.levelplot.points, 
          margin=FALSE,col.regions=col,
          par.settings=list(axis.line=list(lwd=3), strip.border=list(lwd=3)),
         cex=1.4, scales=list(x=list(cex=1.7),y=list(cex=1.7)),xlab=list(label="Longitude",cex=2),
          ylab=list(label="Latitude",cex=2))

sample plot

感谢@fdestch我能够使用以下方式生成以下图:

latticeCombineGrid(mget(rep("pp", 24)), layout = c(3, 8))

跟随我对使用相同颜色键打印多个图表的评论。

一个有待澄清的问题:

1)如何决定面板的顺序?也就是说,哪一排&amp;使用levelplotindex.cond一样放置特定情节的列。

enter image description here

2 个答案:

答案 0 :(得分:2)

首先,您应该确保点图中的断点与第一个levelplot中定义的断点相同。

## raster plot with colorkey disabled
pr <- levelplot(s, margin = FALSE, at = seq(0, 1, 0.05), col.regions = col, 
                colorkey = FALSE, xlab = list("Longitude", col = "transparent"))

## points plot 
pp <- levelplot(z ~ x + y, panel = panel.levelplot.points, cex = 1.4, 
                contour = FALSE, margin = FALSE, col.regions = col, 
                colorkey = list(at = seq(0, 1, .05), width = .6, height = .6),
                xlab = "Longitude", ylab = "Latitude")

创建栅格图时请注意透明xlab的定义。稍后使用downViewport确保prpp的实际绘图边界重叠(在{{{{}}}之后立即运行grid.rect()时,这个小解决方法非常方便1}}看看我的意思)。

通过使用 grid 包中的视口,可以轻松实现实际的绘图排列。

print(pr, newpage = FALSE)

arranged_plots

答案 1 :(得分:1)

以下是我使用$("body").on("click",".parentClass .currentClass",function() { $("#show2").append($("<div/>", { id: "filediv" }).fadeIn("slow").append($("<input/>", { name: "file[]", type: "file", id: "file" })); }); 的解决方案:

latticeExtra::c.trellis
  • 使用library(raster) library(rasterVis) s <- stack(replicate(2, raster(matrix(runif(100), 10)))) xy <- data.frame(coordinates(sampleRandom(s, 10, sp=TRUE)), z1=runif(10), z2=runif(10)) ## Define theme and breaks myTheme <- BTCTheme() my.at <- seq(0, 1, 0.05)

    绘制Raster*对象
    rasterVis::levelplot
  • 使用p1 <- levelplot(s, margin=FALSE, at = my.at, par.settings = myTheme)

    绘制点数
    lattice::levelplot
  • 加入p2 <- levelplot(z1 ~ x + y, data = xy, at = my.at, panel = panel.levelplot.points, par.settings = myTheme)

    latticeExtra::c.trellis
  • 不幸的是,p3 <- c(p1, p2, layout = c(3, 1)) 没有正确分配条带标签,因此您必须直接定义它们:

    c.trellis

raster + points