tl;dr
Попробуйте передать horizontal = TRUE
вызову функции plot()
.
library('raster')
data(volcano)
r <- raster(volcano)
plot(r, legend.only=TRUE, horizontal = TRUE, legend.args = list(text='My values [m^3]'))
![введите описание изображения здесь](https://i.stack.imgur.com/FH3vg.png)
Твики
Теперь вы можете передать side=
или line=
аргументы в список legend.args
, чтобы указать, где вы хотите разместить метку легенды (по умолчанию side = 3
и line = 0
). Например, вы можете поместить текст «Мои значения [m ^ 3]» под легендой, используя side = 1
, и расположить его немного дальше от легенды (а не поверх нее!), Используя line = 2
.
plot(r, legend.only=TRUE, horizontal = TRUE,
legend.args = list(text='My values [m^3]', side = 1, line = 2))
Расширенные настройки
Если вы хотите нанести легенду где-нибудь, кроме правой или нижней части графика, вам нужно сначала построить свой растр с помощью axes = FALSE
, а затем построить его снова, но передавая в качестве аргументов legend.only = TRUE
и smallplot= c(xleft, xright, ybottom, ytop)
, чтобы указать, где в области построения. нарисовать цветную рамку.
Фон
Хитрость в том, что список legend.args
передается в функцию mtext()
, поэтому стандартный способ определения местоположения легенды в базовом R
построении с помощью функции legend()
и использования аргумента x=
(например, «снизу», «снизу справа») недоступен. .
Вы можете подумать, что список axis.args
может помочь, поскольку он также (возможно, парадоксально) определяет, как отрисовывается легенда. Список axis.args
передается в функцию axis()
для рисования некоторых элементов легенды, а функция axis()
имеет аргумент side=
, который устанавливает, с какой стороны графика будет отображаться ось (в нашем случае легенда)! Но нет, аргумент side=
устанавливается другими способами во время рисования растрового графика.
Что это за средства, спросите вы? Это аргумент horizontal=
!
Аргумент horizontal=
можно передать вызову plot()
, чтобы указать, хотите ли вы, чтобы растровая легенда располагалась справа от графика (по умолчанию horizontal = FALSE
устанавливает для аргумента side=
значение 4 в вызове функции axis()
, которая рисует легенду) или нижняя часть графика (когда horizontal = TRUE
, который устанавливает аргумент side=
в 1 в вызове функции `axis (), которая рисует легенду)
person
mikoontz
schedule
07.05.2018