R 用于光栅和点水平仪的单色键

R 用于光栅和点水平仪的单色键,r,maps,raster,geopoints,levelplot,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

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

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))
下面是我对使用同一颜色键打印多个绘图的评论

一个有待澄清的问题:

1) 如何决定小组的顺序?也就是说,使用
index.cond
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")

这是我使用
晶格额外::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)
p3 <- c(p1, p2, layout = c(3, 1))
  • 使用
    lattice::levelplot
    绘制点:

    p1 <- levelplot(s, margin=FALSE,
                        at = my.at,
                        par.settings = myTheme)
    
    p2 <- levelplot(z1 ~ x + y, data = xy,
                        at = my.at, 
                        panel = panel.levelplot.points,
                        par.settings = myTheme)
    
  • 不幸的是,
    c.grillis
    没有正确分配条形标签,因此您必须直接定义它们:

    update(p3,
        strip = strip.custom(factor.levels = c(names(s), "Points")))
    

  • 非常好的解决方案。谢谢。如果用一个颜色键显示8行3列,会怎么样?通常我会使用
    layout=c(3,8),index.cond=list(c(1,2,…)
    来获取我的网格<代码>视口
    在安排绘图时可能会很棘手。针对
    布局
    索引.cond
    的任何解决方法?为此,在我们的Rsenal包中调用了一个函数。只需通过
    devtools::install_github(“environmentalinformatics marburg/Rsenal”)
    安装软件包,然后运行例如
    latticeCombineGrid(mget(rep(“pp”),layout=c(3,8))
    。请注意,当所有绘图都有相同的x和y限制时,结果看起来最好。你救了我一天
    latticeCombineGrid
    看起来很有前途。我一定会试试的。再次感谢。为便于将来参考,
    latticeCombineGrid()
    已移至。在上面的图中,x和y记号标签如何打印为地理坐标(例如101W、102W、15N等)?请在上一期中发布不同的问题。这更简单,更容易实现。谢谢最后一行代码可用于确定每个绘图在面板中的位置。如果我知道
    s
    的名称,那么我可以轻松决定显示它们的顺序。
    p3 <- c(p1, p2, layout = c(3, 1))
    
    update(p3,
        strip = strip.custom(factor.levels = c(names(s), "Points")))