gpt4 book ai didi

r - 控制光栅图例高度

转载 作者:行者123 更新时间:2023-12-02 07:26:46 24 4
gpt4 key购买 nike

我想将颜色条的高度控制在绘图窗口的范围内。

例如,如果我使用:

if (dev.cur() == 1) x11(width=10,height=9)
par(mfrow=c(2,1))

如何将颜色条的高度增加到与绘图窗口相同的高度?例如

plot(r, legend.only=TRUE, legend.width=1.4, legend.shrink=1, 
col=colorRampPalette(c("darkred", "red3", "orange2", "orange",
"yellow", "lightskyblue","steelblue3",
"royalblue3", "darkblue"))(12),
breaks=brks, axis.args=list(at=seq(80, 205, by=10),
labels=seq(80, 205, by=10), cex.axis=0.9),
legend.args=list(text='Precipitation (mm)', side=4, font=2,
line=2.3, cex=0.8))

非常感谢亚利桑那州。

最佳答案

如果我理解正确,您想在布局由 par(mfrow=c(2, 1) 定义的两个图旁边绘制一个全高图例。

实现此目的的一种方法是生成两个图,然后设置 par(new=FALSE) 并使用 legend.only= 再次绘制 raster

library(raster)
r <- raster(matrix(runif(100), ncol=10))

# Set layout; ensure appropriate space at right for legend
par(mfrow=c(2, 1), mar=c(2, 3, 1, 3))

# Plot raster
plot(r, legend=FALSE, zlim=c(0, 1), las=1)

# Plot second object
plot(runif(10), runif(10), pch=21, cex=2, las=1,
bg=rev(terrain.colors(10)[sample(10, 10, replace=T)]))

# Revert to c(1, 1) layout and adjust legend margins
par(mfrow=c(1, 1), mar=c(2, 0, 1, 0), new=FALSE)

# Plot legend
plot(r, legend.only=TRUE, legend.shrink=1, legend.width=2, zlim=c(0, 1),
axis.args=list(at=pretty(0:1), labels=pretty(0:1)),
legend.args=list(text='Whatever', side=4, font=2, line=2.3))

raster_legend

如果您正在绘制具有匹配范围和分辨率的多个 raster 对象,您可以考虑 rasterVis::levelplot,它有一个 RasterStack 方法:

library(rasterVis)
s <- stack(replicate(2, raster(matrix(runif(100), nc=10))))

levelplot(s, layout=c(1, 2), names.attr=c('One', 'Two'),
at=seq(0, 1, length.out=100),
par.strip.text=list(font=2, cex=1.2))
# Plotting titles for vertical colorkeys is a little fiddly...
grid::grid.text('Precipitation (mm)', rot=90, y=unit(0.5, "npc"),
x=unit(0.95, "npc"))

raster_legend2

您可以使用 par.strip.text=list(cex=0) 抑制面板标签,并使用 col.regions 指定色带:

levelplot(s, layout=c(1, 2), 
col.regions=colorRampPalette(c('darkred', 'red3', 'orange2', 'orange',
'yellow', 'lightskyblue', 'steelblue3',
'royalblue3', 'darkblue')),
at=seq(0, 1, length.out=100), par.strip.text=list(cex=0),
scales=list(alternating=FALSE))
# Also demonstrating how to adjust fontface and size for legend title
grid::grid.text('Precipitation (mm)', y=unit(0.5, "npc"),
rot=90, x=unit(0.95, "npc"), gp=gpar(fontsize=14, font=2))

raster_legend3

关于r - 控制光栅图例高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27467229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com