我正在使用水平图来显示矩阵,下面的图表.虽然两个图都使用相同的col.regions,但颜色键是不同的.我们如何锁定(或设置)两个水平图的颜色键?我想要两个图的相同颜色键(0到60).


以下代码生成一个图像:
library(latticeExtra)
x=runif(40)
y=runif(40)
z=runif(40)
png(filename=paste(i,".png",sep=""))
levelplot(z ~ x + y, panel = panel.levelplot.points, col.regions = rainbow(50))
dev.off()
Run Code Online (Sandbox Code Playgroud)
但是下面的代码没有.为什么?
library(latticeExtra)
for(i in seq(1,5)) {
x=runif(40)
y=runif(40)
z=runif(40)
png(filename=paste(i,".png",sep=""))
levelplot(z ~ x + y, panel = panel.levelplot.points, col.regions = rainbow(50))
dev.off()
}
Run Code Online (Sandbox Code Playgroud) 我想为这个情节添加一个标题:
library(lattice)
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))
Run Code Online (Sandbox Code Playgroud)
哪个产生:

在R中是否可以创建一个类似下面的颜色键?(这个来自软件网格分析和显示系统 - Grads).
我无法在R中重现两个功能:
我正在使用rastervis的levelplot,它使用晶格级别图来绘制栅格:
require(raster)
require(rasterVis)
set.seed(200)
X = seq(-40,0,by=1)
Y = seq(-60,-40,by=1)
grid = expand.grid(list(X=X,Y=Y))
Z = rnorm(nrow(grid),mean=10,sd=100)
data = data.frame(grid,Z)
r = rasterFromXYZ(data)
mapTheme <- rasterTheme(region=c('#EEF7FA','#D6F8F7',"#BEDAFF",'#5DA4FF',"#0000FF","#D4F9E2","#00FF7F","#008000","#FFFF00","#FFD27F", "#FFB732" ,"#EE7600",
"#D53E4F","#FF6A6A"))
my.at = c(0,1,5,10,15,20,25,30,40,50,75,100,150,200)
myColorkey <- list(at=my.at,
space="bottom",
labels=list(at=my.at))
p=levelplot(r, par.settings=mapTheme,at = my.at, colorkey=myColorkey,margin=F)
print(p)
Run Code Online (Sandbox Code Playgroud)
结果:
如您所见,小于0且大于200的值都是白色,我不知道如何设置大于或小于某个值的值以显示为特定颜色.Morover,虽然间隔不一样,但如何使颜色键中连续的粗标记之间的空间具有相同的大小?
我想对图像进行一些小小的调整.我生成一个简单的相关热图的命令如下:
psticorr <- cor(psti)
rgb.palette <- colorRampPalette(c("blue", "yellow"), space = "lab")
levelplot(psticorr, col.regions=rgb.palette(120), scales=list(x=list(cex=.3), y=list(cex=.3)), main="PstI: Correlations of loci coverage", xlab="Samples", ylab="Samples" )
Run Code Online (Sandbox Code Playgroud)
我得到了我需要的东西,但我真的很喜欢,如果我可以设置色标的范围,例如从0到1,此时它从我的最低相关(r)值开始.
我有一个3d数据,x,y,z.我在R中使用了levelplot,但结果看起来并不正确.如果我查看任何水平线(例如y = 0),我希望在图中看到一些对应于值z = 0的蓝色区域.所以,基本上,如果你考虑任何水平线,你应该看到一些蓝色区域,但你只看到顶部的蓝色区域.
这是等高线图:

所以,我正在努力解决这个问题!它与panel.2dsmoother有什么关系吗?我的数据的x范围为3.12到14.88,增量为0.48,y值范围为0到24,增量为4.
完整的数据和代码在这里:
> d<-read.csv("test.csv", header=F, col.names=c("x", "y", "z"))
> library(latticeExtra)
> col.l <- colorRampPalette(c('blue', 'cyan', 'green', 'yellow', 'orange', 'red'))
> col.divs<-20
> levelplot(z ~ x * y, d, cuts=50, contour=TRUE, col.regions=col.l,
at=seq(from=-0.2,to=4,length=col.divs), panel=panel.2dsmoother)
> d
x y z
1 3.12 0 6.4239
2 3.60 0 2.5190
3 4.08 0 0.1210
4 4.56 0 0.0028
5 5.04 0 0.3355
6 5.52 0 1.7268
7 6.00 0 2.5390
8 6.48 0 2.9881
9 6.96 0 3.2323 …Run Code Online (Sandbox Code Playgroud) levelplot函数使用方框的所有侧面绘制带有刻度线的热图。我想在x和y轴上保留刻度线,但删除顶部和右侧的刻度线。
如何删除框周围的右边框和顶部边框?
#fake data
data(mtcars)
cars.matrix <- as.matrix(mtcars[c(2:8)])
cars.corr <- cor(cars.matrix)
library('lattice')
levelplot(cars.corr, xlab="car stuff",ylab="Car Stuff", main="car stuff")
Run Code Online (Sandbox Code Playgroud)
我在 R 的关卡图中绘制 RasterLayer 和 SpatialPolygonsDataFrame 时遇到了一些问题。投影有问题,但我不明白是什么。
在这里您可以找到我的可 重现示例数据和代码:
library(sp)
library(rgdal)
library(rgeos)
library(raster)
library(rasterVis)
library(maptools)
setwd("C:/...path_to/test2")
data<-read.csv("test.csv", header=TRUE)
#creating the raster from a data.frame and giving projection
raster<-rasterFromXYZ(data, crs="+proj=longlat")
raster_proj<-projectRaster(raster, crs="+proj=longlat +datum=WGS84
+ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs")
#loading shapes
nuts<-readShapePoly("NUTS_RG_WGS84.shp", proj4string=CRS("+proj=longlat"))
countries<-readShapePoly("countries.shp", proj4string=CRS("+proj=longlat"))
#subsetting the raster
raster_clip<- crop(raster_proj, countries, snap="near")
#plot
p.strip <- list(cex=1.5, lines=1, fontface='bold')
x.scale <- list(cex=1.5)
y.scale <- list(cex=1.5)
label <- list(labels=list(width=1, cex=1.5), height=0.95)
levelplot(raster_clip, par.settings = RdBuTheme, margin=FALSE,
at=seq(min(na.omit(values(raster_clip))), max(na.omit(values(raster_clip))), length.out=15),scales=list(x=x.scale, y=y.scale),
par.strip.text=p.strip, colorkey=label, …Run Code Online (Sandbox Code Playgroud) 我试图从格子包中制作一个水平图(也是显示轮廓线).我有几个问题(如下所述).
MyData:https: //www.dropbox.com/s/ht55g0qlkiou2x2/growth.matrix.stackoverflow.xlsx
require(lattice)
require(latticeExtra)
require(xlsx)
#matrix to be plotted
growth.matrix<-as.matrix(read.xlsx("C:/Users/eckmannm/Dropbox/growth.matrix.stackoverflow.xlsx",sheetName="p4.pct",colIndex=2:8,startRow=3,endRow=15,header=FALSE))
#column values
TempRange<-as.numeric(c(0, 2, 4, 6, 8, 10, 12))
#row values
MeanTemp<-as.numeric(c(6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18))
#x and y axis labels
x.range<-as.numeric(c(6, 8, 10, 12, 14, 16, 18))
#color ramp
col.l <- colorRampPalette(c('red', 'orange', 'yellow', 'green', 'cyan', 'blue'))
colorplot<-
levelplot(
growth.matrix,
row.values=(MeanTemp),
column.values=(TempRange),
col.regions=col.l,
at=seq(from=0,to=1.01,length=100),
lattice.options=list(key=list(cex=4)),
panel = panel.2dsmoother,
scales=list((x=list(labels=MeanTemp)), y=list(labels=TempRange)),
colorkey=list(at=as.numeric(factor(c(seq(from=0, to=1, by=.20)))),
labels=as.character(c( "0", "20%", "40%", "60%", …Run Code Online (Sandbox Code Playgroud) 我的下一个绘图具有增加的刻度和轴标签字体大小:
library(lattice)
x <- rep(seq(6,15,by=1), each=20)
y <- rep(seq(0,0.95,by=0.05), 10)
z <- x*y
levelplot(z ~ x * y,
scales=list(x=list(at=seq(6,15,1), cex=2), y=list(at=seq(0,0.9,0.1), cex=2)),
xlab=list(label="x", cex=2),
ylab=list(label="y", cex=2))
Run Code Online (Sandbox Code Playgroud)
但是如何在colorkey图例中增加字体大小?
