Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 控制光栅图例高度_R_Raster_Colorbar - Fatal编程技术网

R 控制光栅图例高度

R 控制光栅图例高度,r,raster,colorbar,R,Raster,Colorbar,我想将颜色条的高度控制在绘图窗口的范围内 例如,如果我使用: if (dev.cur() == 1) x11(width=10,height=9) par(mfrow=c(2,1)) 如何将颜色栏的高度增加到与绘图窗口相同的高度?e、 g plot(r, legend.only=TRUE, legend.width=1.4, legend.shrink=1, col=colorRampPalette(c("darkred", "red3", "orange2", "orange",

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

例如,如果我使用:

if (dev.cur() == 1) x11(width=10,height=9)
par(mfrow=c(2,1))
如何将颜色栏的高度增加到与绘图窗口相同的高度?e、 g

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))
非常感谢
AZ.

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

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

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))

您可以使用
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))

您的意思是希望图例跨越两行/绘图的高度吗?您在第二行中绘图的是什么?另一个
光栅
对象(如果是,它的范围和分辨率是否与第一行相同?)?@jbaums,如果我能重新找到这个答案的话:你知道如何让levelplot/rastervis中的图例变小一点吗?变薄一点,变薄一点shorter@Sam-
levelplot(…,colorkey=list(高度=0.5,宽度=0.5))
。请参见
?lattice::levelplot
@jbaums,再次您好,您知道是否可以将levelplot图例移动到自定义位置吗?不仅仅是底部、右侧等,而是绘图上的自定义xy位置
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))