我正在尝试可视化相关性图,我认为我已经让它工作了,除了x轴标签的混乱.有关如何旋转它们的任何建议?许多Base R图的一些参数似乎不适用于水平图.我可能不知道我在说什么.
这是我使用的数据:
cor2<-structure(c(1, -0.0389681095266643, -0.0389681095266643, 0.178476154216706,
-0.178476154216706, -0.168494117498168, -0.0531355593389041,
-0.0627159607856109, -0.11922152176561, 0.00887070126495505,
-0.0721998017906867, -0.140654273521441, 0.0257953297166468,
-0.0504004052031319, -0.057270788080051, -0.0918121581058645,
-0.0389681095266643, 1, 1, -0.207885482210833, 0.207885482210833,
0.221906241587463, 0.285338260198777, 0.370743678038144, 0.219208701879567,
0.266580102221828, 0.193378655575033, 0.23922965323291, 0.164352387360997,
0.229607796224011, 0.184412911672718, -0.250294366329347, -0.0389681095266643,
1, 1, -0.207885482210833, 0.207885482210833, 0.221906241587463,
0.285338260198777, 0.370743678038144, 0.219208701879567, 0.266580102221828,
0.193378655575033, 0.23922965323291, 0.164352387360997, 0.229607796224011,
0.184412911672718, -0.250294366329347, 0.178476154216706, -0.207885482210833,
-0.207885482210833, 1, -1, -0.836264694082863, 0.0968492347163521,
-0.529206721168992, -0.368511719318385, -0.370488391611307, -0.446552321746797,
-0.0946404317035884, -0.166601542941319, -0.371982811624152,
-0.0551151773556682, -0.0252777576827408, -0.178476154216706,
0.207885482210833, 0.207885482210833, -1, 1, 0.836264694082863,
-0.0968492347163521, 0.529206721168992, 0.368511719318385, 0.370488391611307,
0.446552321746797, 0.0946404317035884, 0.166601542941319, …Run Code Online (Sandbox Code Playgroud) 我正在制作一个格子levelplot,x并且y因子范围为[0,1]:
x y level
1 m3134 m3134 1.0000000
2 m3134 m416B 0.4189057
3 m416B m3134 0.2696508
4 m3134 mA20 0.3322170
5 mA20 m3134 0.2454191
6 m3134 mB 0.3176792
...
Run Code Online (Sandbox Code Playgroud)
这是我用来根据这些数据制作图形的R脚本:
#!/foo/bar/bin/Rscript --vanilla
args <- commandArgs(TRUE)
mtxFn <- args[1]
pdfFn <- args[2]
mtx <- read.table(mtxFn, col.names=c("x", "y", "level"))
mtx$level[(mtx$level == 1)] <- NA
library(lattice)
trellis.device(dev=pdf, file=pdfFn)
colors <- colorRampPalette(c('red', 'white'))(256)
fig <- levelplot(level~x*y,
data=mtx,
col.regions=colors,
xlab="",
ylab="",
aspect="iso",
scales=list(
x=list(rot=90)
),
panel=function(...) {
arg <- …Run Code Online (Sandbox Code Playgroud) 我非常绝望地尝试在一个地块上调整一个rasterstack的两个关卡.似乎rasterVis::levelplot没有par(mfrow = c(...))选择拆分窗格.使用两个rasterstacks的示例应在新的绘图窗口上并排排列:
f <- system.file("external/test.grd", package="raster")
r1 <- stack(raster(f),log(raster(f)))
r2 <- stack(raster(f)-500,raster(f)+500)
par(mfrow=c(2,2))
levelplot(r1)
levelplot(r2)
Run Code Online (Sandbox Code Playgroud)
在这里,levelplot(r1)正在全尺寸窗口上绘制,而levelplot(r2)不幸的是正在绘画levelplot(r1).
我试着玩,levelplot用print函数包装调用,这split和newpage = false选项一样.不幸的是,我没有得到如何使用split正确的扭曲,所以我最终只有沮丧.
我非常感谢你的帮助,谢谢
和我
我有raster使用rasterR中的包生成的映射.这些栅格图层可以使用rasterVis包的levelplot函数可视化:
levelplot(rasterstack, layout=c(1, 2),
col.regions=colorRampPalette(c('darkred', 'red3', 'orange2', 'orange',
'yellow', 'lightskyblue', 'steelblue3',
'royalblue3', 'darkblue')))
Run Code Online (Sandbox Code Playgroud)
现在,我想将xy cordinates定义的一些z值添加到levelplot映射中.包含z值的数据帧有4列.第1列和第2列包含x和y坐标,第3列包含布局(1,1)中的地图1的z值和布局(1,2)的第4列.
应该添加每个地图的点数,使得如果z <0.05,pch=2并且如果z> 0.05,则pch=3.
我在网上搜索并找到了Ripley的解决方案,但它在我的情况下不起作用:
levelplot(rcp852, xlab = "", ylab = "",
panel = function(x, y, subscripts, ...) {
panel.levelplot(x, y, subscripts, ...)
panel.xyplot(topo$x,topo$y, cex = 0.5, col = 1)
}
)
Run Code Online (Sandbox Code Playgroud)
我尝试了很多其他选项,但这些点与通过生成的地图不一致levelplot.
实际上,这个问题包含针对相同行为的两个问题.
如何将文本(因每个面板而异)添加到面板区域中的固定位置?我知道panel.text并latticeExtra::layer
解决方案,但它使用绘图区域坐标添加文本.例如,我想在每个面板的右下角添加文本,即使它们的比例不同.
如何从levelplot面板区域添加文本?这里解释的方法要求levelplot有一个plot_01.legend.top.vp区域来添加我没有的文本,并且trellis之前绘制了对象.此外,我想在左下ylab图中添加文字.我ylab在这里用来说明行的含义但我需要第二个ylab来表示y轴值.我发现了这个问题的另一个
问题,但它不起作用.
上图是由raster::stack对象和rasterVis::levelplot方法创建的.我同意一个肮脏的解决方案,即使我更喜欢优雅的解决方案.尽管有上述问题,我仍然对其他使用的方法持开放态度levelplot.
我试图用来levelplot绘制一个简单的数字高程模型(DEM).
这是我的代码:
r1 = raster("ned10dem.tif")
e = extent(460000,480000,4555000,4567500)
rr1 = crop(r1,e)
p = levelplot(rr1, scales=list(x=list(at=seq(450000,480000,4000))),
margin=F, cuts=200,
col.regions = terrain.colors(350,alpha=1),
colorkey=list(space="bottom"),
xlab="Easting(m)", ylab="Northing(m)")
plot(p)
Run Code Online (Sandbox Code Playgroud)
情节最终看起来像这样:

我无法弄清楚的是如何增加colorkey和x轴之间的空间,使得colorkey不会覆盖x轴标签.
我正在尝试从水平图中删除右侧的条形图,即表示颜色比例的条形图。我不知道是否有某种方法可以裁剪图形或创建不打印该图形的自定义函数。
这是一个简单的水平图:
data(mtcars)
cars.matrix <- as.matrix(mtcars[c(2:8)])
cars.corr <- cor(cars.matrix)
levelplot(cars.corr)
Run Code Online (Sandbox Code Playgroud) 我想要:
ras使用将光栅重新分类为九个类reclassify
提供一个颜色键,其中包含每种颜色旁边的值(请参见下面的示例图).不应像在样本图中那样拆分颜色键,而是将其显示为具有9种颜色的单色渐变.
使用levelplot函数显示数据(我可以这样做)
谢谢你的帮助.AEZ
library(rasterVis)
Run Code Online (Sandbox Code Playgroud)
请使用以下颜色:
col <- colorRampPalette(c("yellow4", "yellow", "orange", "red3", "darkred"))
levelplot(reclassras, col.regions = col)
Run Code Online (Sandbox Code Playgroud)
下面是dput我的栅格图层:
ras=new("RasterLayer"
, file = new(".RasterFile"
, name = ""
, datanotation = "FLT4S"
, byteorder = "little"
, nodatavalue = -Inf
, NAchanged = FALSE
, nbands = 1L
, bandorder = "BIL"
, offset = 0L
, toptobottom = TRUE
, blockrows = 4L
, blockcols = 230L
, driver = ""
, open …Run Code Online (Sandbox Code Playgroud) 我有一个由 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) 鉴于下面的code,map和示例数据:而不是watersheds在地图上绘制etc 的名称,我如何使用ggplot2或levelplot就像使用一样生成单独的图例ArcGIS?基本上,我想生成此地图上显示的图例
最好带有levelplot或ggplot2。
Code和map以及用于在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)