标签: levelplot

使用 levelplot (RasterVis) 对栅格堆栈进行分类

我有一个由 7 个栅格组成的栅格堆栈,其数据范围差异很大,并且并非所有栅格都遵循完全相同的范围。(有些是低值范围,有些是高得多)。将 levelplot 函数与堆栈一起使用,它可以很好地绘制,例如:

r <- raster(ncol=10,nrow=10)
r[] <- sample(c(1:3),size=100,replace=T)
r1 <- raster(ncol=10,nrow=10)
r1[] <- sample(c(1:9),size=100,replace=T)
r2 <- raster(ncol=10,nrow=10)
r2[] <- sample(c(5:15),size=100,replace=T)
r3 <- raster(ncol=10,nrow=10)
r3[] <- sample(c(3:35),size=100,replace=T)
s <- stack(r,r1,r2,r3)

breaks <- 7
my.at <- round(seq(min(minValue(s)), max(maxValue(s)), length.out = breaks),digits=2)
myColorkey <- list(at=my.at,height=0.95, width=1, labels=list(at=my.at,cex=1.1))
cols <- (brewer.pal(length(my.at)-1, "YlGnBu"))
levelplot(s,at=my.at,col.regions=cols,colorkey = myColorkey)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

正如您所看到的,具有较低值数据的图像是一种颜色(实际上,在我的真实数据中,大多数图都是一种颜色,因为数据范围由后两个栅格主导)。使用 levelplot 函数,我想对整个栅格堆栈进行重新分类,用我定义的一些类梳理出较低值栅格中的一些模式,并简单地将任何超过值 x(可能是上面示例数据中的 10)的值分配为一种颜色。

批准和设置级别的常用方法不适用于堆栈,并且我尝试过的任何解决方法(使用矩阵和重新分类)都不会强制比栅格的类更多的级别

这是我的解决方法,使用标准图例,但如果可能的话我想使用ratify等;

# using s from above
m <- c(0,1,1,  1,3,2,  3,6,3,  6,10,4,  10,35,5)
mat <- matrix(m, ncol=3, byrow=TRUE)
src <- …
Run Code Online (Sandbox Code Playgroud)

r classification raster levelplot rastervis

6
推荐指数
0
解决办法
1139
查看次数

格子 levelplot 或 ggplot2 地图 R 的自定义图例

鉴于下面的code,map示例数据:而不是watersheds在地图上绘制etc 的名称,我如何使用ggplot2levelplot就像使用一样生成单独的图例ArcGIS?基本上,我想生成此地图上显示的图例在此处输入图片说明最好带有levelplotggplot2

Codemap以及用于在R.

require(colorRamps)
require(raster)
require(rasterVis)
require(mapproj)
library(raster)    
library(proj4)


# Get province borders and project it to same CRS than raster
can1 <- getData('GADM', country="CAN", level=1)
getData('ISO3') # country name
dem=getData('alt', country='CAN', mask=TRUE)


require( colorRamps )
my.at <- unique(round(seq(ceiling(5800), floor(1), length.out = 51),0))#at: numeric vector specifying where the colors change. must be of length 1 more …
Run Code Online (Sandbox Code Playgroud)

gis maps r ggplot2 levelplot

6
推荐指数
1
解决办法
1351
查看次数

在格子图中使用图案添加/代替背景颜色

我正在使用R晶格包的水平图.我得到的情节看起来如下图所示.

我现在的问题是我需要生成黑白版本进行打印.

有没有办法将颜色更改为灰度,并为矩形提供背景图案,以便红色可以与蓝色区分开来?例如,想到点或对角破折号.

谢谢!

示例图片

r colors lattice levelplot

5
推荐指数
2
解决办法
2828
查看次数

R:来自矩阵的多个晶格水平图

我的目标是使用共享相同颜色键的4个或更多个别图来构建一个水平图(来自晶格包).虽然使用函数似乎相对简单,但我还是找不到使用数据矩阵的解决方案.仅使用一个矩阵的工作级别图的示例:

d <- replicate(10,rnorm(10))
levelplot(d)
Run Code Online (Sandbox Code Playgroud)

我找到了使用print和split的部分解决方案,以在同一个屏幕上显示所有4个关卡图,但这些要求我要么关闭colorkey,要么在每个绘图上显示它.两种方案都不完全令人满意.

如果我在levelplot中使用layout-option,就像这样:

levelplot(d, layout=c(2,2))
Run Code Online (Sandbox Code Playgroud)

,我得到了所需的布局,有一个大的colorkey,main和xlab/ylab,但只有一个levelplot打印.

我一直试图构建一个能产生所需结果的公式,但我担心我对数据帧,数组和矩阵的理解还不够深入.如果有人知道有效的解决方案,我将非常感激.我想象的是(不工作代码)的东西:

d1 <- replicate(10,rnorm(10))
d2 <- replicate(10,rnorm(10))
d3 <- replicate(10,rnorm(10))
d4 <- replicate(10,rnorm(10))

d <- list(d1,d2,d3,d4)
di <- c(1,2,3,4)

levelplot(x ~ y | di, data = d, layout=c(2,2))
Run Code Online (Sandbox Code Playgroud)

NB!避免使用矩阵不是一种选择.其中一些是从原始文本文件中获得的.

先感谢您,

-J.P

r matrix lattice levelplot

5
推荐指数
1
解决办法
1789
查看次数

R levelplot删除外边框(调整图边框)

我正在使用levelplot(晶格)在R中创建相关热图.我喜欢盒子之间的边界,但不喜欢外面,因为它会干扰情节边界.如何从框中删除外边框?

这是我的代码:

levelplot(matrix, border="black", 
          colorkey=list(height=.25, space="right", at=seq(-1, 1, .25), cuts=7), 
          scales=list(y=(list(cex=1)), tck = c(1,0), x=list(cex=1, rot=90)),
          main="Leaf Correlations", xlab="", ylab="", 
          col.regions=scalebluered)
Run Code Online (Sandbox Code Playgroud)

这就是它的样子..我不喜欢边缘上的双线..

在此输入图像描述

编辑:这是一个可重复的例子:

data(mtcars)
cars.matrix <- as.matrix(mtcars[c(2:8)])
cars.corr <- cor(cars.matrix)
levelplot(cars.corr, border="black", colorkey=list(height=.25, space="right", 
          at=seq(-1, 1, .25), cuts=7), 
          scales=list(y=(list(cex=1)), tck = c(1,0), x=list(cex=1, rot=90)), 
          xlab="", ylab="")
Run Code Online (Sandbox Code Playgroud)

r lattice correlation levelplot

5
推荐指数
1
解决办法
3408
查看次数

具有负值和正值 R 的离散色标的栅格图

我有两个要映射的数据框。dfs 具有相同的 xy 坐标,我需要一个带有可见离散色标的颜色,用于两个 dfs,如此处所示。我希望 colorkey 中的颜色与自定义的中断相匹配。非常感谢可以在本示例之外应用的更通用的解决方案

在此输入图像描述

RcolorBrewer包中的 RdYIBu 调色板正是我所追求的。

在此输入图像描述

到目前为止我的代码:

library(rasterVis)
ras1 <- raster(nrow=10,ncol=10) 
set.seed(1) 
ras1[] <- rchisq(df=10,n=10*10) 
ras2=ras1*(-1)/2 
s <- stack(ras1,ras2) 
Uniques <- cellStats(s,stat=unique) 
Uniques.max <- max(Uniques)
Uniques.min <- min(Uniques)
my.at <- round(seq(ceiling(Uniques.max), floor(Uniques.min), length.out= 10),0)
myColorkey <- list(at=my.at, labels=list(at=my.at)) 
levelplot(s, at=my.at, colorkey=myColorkey,par.settings=RdBuTheme())
Run Code Online (Sandbox Code Playgroud)

如何设置 colorkey 中的值以匹配地图上的值,如上面的示例地图所示?请注意,颜色键中的颜色数量应与地图上显示的数量相同。

非常感谢您的帮助。您的建议将帮助我开发许多此类地图。

谢谢。

maps r raster colors levelplot

5
推荐指数
1
解决办法
7015
查看次数

levelplot框线宽R.

有没有人知道如何更改levelplot图形的线宽,特别是多个面板的线宽?箱线宽度应与刻度线一起变化.在基地R可以使用plot(x);box(lwd=10).

这是否可以在levelplot中?

非常感谢.

library(rasterVis)
mycolors=c("darkred","red3", "orange", "yellow", "lightskyblue", 
          "royalblue3","darkblue")
s <- stack(replicate(6, raster(matrix(runif(100), 10))))
levelplot(s, layout=c(3, 2), col.regions=mycolors, index.cond=list(c(1, 3, 5, 2, 4, 6)))
Run Code Online (Sandbox Code Playgroud)

r width lattice levelplot box

5
推荐指数
1
解决办法
4892
查看次数

R - 如何将图例标题添加到保存到变量的水平图中?

我想在保存到变量的水平图中添加图例的标题。

例如,这段代码可以工作:

library(lattice)
library(grid)
x = 1:10
y = rep(x,rep(10,10))
x = rep(x,rep(10))
z = x+y  
levelplot(z~x*y, colorkey=list(labels=list(cex=1,font=2,col="brown"),height=1,width=1.4),main=list('b',side=1,line=0.5))
trellis.focus("legend", side="right", clipp.off=TRUE, highlight=FALSE)
grid.text(expression(m^3/m^3), 0.2, 0, hjust=0.5, vjust=1)
trellis.unfocus()
Run Code Online (Sandbox Code Playgroud)

但是这段代码(将相同的图保存为变量)不起作用:

p1 <- levelplot(z~x*y, colorkey=list(labels=list(cex=1,font=2,col="brown"),height=1,width=1.4),main=list('b',side=1,line=0.5))
trellis.focus("legend", side="right", clipp.off=TRUE, highlight=FALSE)
grid.text(expression(m^3/m^3), 0.2, 0, hjust=0.5, vjust=1)
trellis.unfocus()
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这个目标?

r legend title levelplot

5
推荐指数
1
解决办法
4505
查看次数

R:在levelplot上的叠加图

我有一个光栅文件'airtemp'和一个多边形shapefile'大陆'.我想把'大陆'叠加在'airtemp'上,所以'大陆'的边界在'airtemp'的顶部可见.我用levelplot(晶格)绘制光栅文件.我readShapeSpatial首先通过(maptools)读取多边形然后plot.

问题是levelplot并且plot有不同的规模.Plot往往有较小的框架.对不起,我没有可重复的样本,但我觉得这对地球物理学家来说是一个相当普遍的问题.我在这里发现了一个类似的问题:

http://r.789695.n4.nabble.com/overlaying-a-levelplot-on-a-map-plot-td2019419.html

但我不太明白解决方案.

plot r levelplot

4
推荐指数
2
解决办法
6729
查看次数

R levelplot 调整轴

我想使用“lattice”包的 levelplot 函数将概率分布函数 (PDF) 绘制为 R 中的热图。我将 PDF 实现为一个函数,然后使用两个向量作为值范围和外部函数生成 levelplot 的矩阵。我希望轴显示我的问题是我无法在两个轴上添加适当间隔的刻度线,分别显示两个实际值范围而不是列数或行数。

# PDF to plot heatmap
P_RCAconst <- function(x,tt,D)
  {
    1/sqrt(2*pi*D*tt)*1/x*exp(-(log(x) - 0.5*D*tt)^2/(2*D*tt))
  }

# value ranges & computation of matrix to plot
tt_log <- seq(-3,3,0.05)
tt <- exp(tt_log)
tt <- c(0,tt)
x <- seq(0,8,0.05)
z <- outer(x,tt,P_RCAconst, D=1.0)
z[,1] <- 0
z[which(x == 1),1] <- 1.5
z[1,] <- 0.1

# plot heatmap using levelplot
require("lattice")
colnames(z) <- round(tt, 2)
rownames(z) <- x
levelplot(z, cex.axis=1.5, cex.lab=1.5, col.regions=colorRampPalette(c("blue", "yellow","red", "black")), at=seq(0,1.9,length=200), …
Run Code Online (Sandbox Code Playgroud)

r lattice levelplot

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

levelplot ×10

r ×10

lattice ×5

colors ×2

maps ×2

raster ×2

box ×1

classification ×1

correlation ×1

ggplot2 ×1

gis ×1

legend ×1

matrix ×1

plot ×1

rastervis ×1

title ×1

width ×1