R - 绘制光栅时移动图例的最简单方法

mat*_*ked 3 plot r r-raster

我需要绘制光栅文件。

在我的输出图像中,图例上的数字有时不可见 - 特别是当我将图形窗口拆分为两列或更多列时(例如:par(mfrow=c(1,2)))。

我想过将图例移动到底部(光栅图像下方)来解决这个问题。但是,我发现的大多数示例都建议使用全新的颜色和项目定义创建全新的图例。

我想使用默认图例。我只需要把它移到底部。我试过这样做:

library('raster')
data(volcano)
r <- raster(volcano)
# Trying to draw default legend below raster plot
plot(r, legend=F)
# Now trying to draw legend. Default is okay for me, I want to move it below only:
plot(r, legend.only=TRUE, legend.args=list("bottom", text='My values [m^3]'))
Run Code Online (Sandbox Code Playgroud)

不幸的是,我的代码不起作用(似乎没有使用“底部”参数)。

我需要达到的目标

mik*_*ntz 6

tl;博士

尝试传递horizontal = TRUEplot()函数调用。

library('raster')

data(volcano)
r <- raster(volcano)

plot(r, legend.only=TRUE, horizontal = TRUE, legend.args = list(text='My values [m^3]'))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

调整

您现在可以将side=line=参数传递给legend.args列表以指定您想要图例标签的位置(默认为side = 3and line = 0)。例如,您可以side = 1使用line = 2.

plot(r, legend.only=TRUE, horizontal = TRUE, 
        legend.args = list(text='My values [m^3]', side = 1, line = 2))
Run Code Online (Sandbox Code Playgroud)

高级调整

如果您想在图的右侧或底部以外的其他地方绘制图例,您必须首先考虑绘制您的光栅,axes = FALSE然后再次绘制,但作为参数传递legend.only = TRUEsmallplot= c(xleft, xright, ybottom, ytop)指定绘制区域中绘制的位置彩色盒子。

背景

诀窍是legend.args列表被传递给mtext()函数,因此在使用函数和使用参数(例如,“bottom”、“bottomright”)的基础R绘图中定义图例位置的标准方法不可用。legend()x=

您可能认为该axis.args列表会有所帮助,因为它也(可能违反直觉)控制了图例的绘制方式。该axis.args列表被传递给axis()函数以绘制图例的一些特征,该axis()函数有一个side=参数来设置轴(在我们的例子中是图例)将绘制在图的哪一侧!但是不,side=在绘制光栅图期间通过其他方式设置参数。

你可能会问那些是什么意思?是horizontal=辩题!

horizontal=参数可以被传递到plot()电话,说你是否希望光栅传说要上图的右侧(在默认情况下,horizontal = FALSE设置side=在参数4axis()函数调用绘制图例)或对剧情的底部(当horizontal = TRUEside=在绘制图例的 `axis() 函数调用中将参数设置为 1 时)