Без воспроизводимого вопроса я покажу один способ сделать это с помощью общих данных. Вам придется адаптировать его к своей работе.
Multi-plot можно сделать с помощью par(mfrow=c(2,3))
, и хотя это просто, это самый ограничительный. Другие варианты включают layout(...)
(для этого, я думаю, это не сработает) и par(fig=...)
(вот что я здесь использую). Разумная стартовая ссылка - here.
Начну с вашей картой (NB: пожалуйста, укажите необходимые библиотеки с кодом):
library(maps)
library(mapdata)
par(fig=c(0,1,0,1)) # force full-device plot
plot(1, 1, type="n", xlab="", ylab="", axes=F,
xlim=c(-39,-35.5),ylim=c(-55,-54))
map("worldHires", regions="Falkland Islands:South Georgia",col="#BFBFBF",
fill=F, add=T, bg="#7F7F7F", lwd=0.05)
Далее я создал матрицу, которая будет использоваться для определения региона участка, имитируя расположение вы определили с помощью par(mfrow=c(2,3))
:
xs <- seq(0, 1, len=4)
ys <- seq(0, 1, len=3)
m <- merge(cbind(head(xs, n=-1), tail(xs, n=-1)),
cbind(head(ys, n=-1), tail(ys, n=-1)),
by=NULL)
## V1.x V2.x V1.y V2.y
## 1 0.0000000 0.3333333 0.0 0.5
## 2 0.3333333 0.6666667 0.0 0.5
## 3 0.6666667 1.0000000 0.0 0.5
## 4 0.0000000 0.3333333 0.5 1.0
## 5 0.3333333 0.6666667 0.5 1.0
## 6 0.6666667 1.0000000 0.5 1.0
par(fig=...)
занимает левую и правую (х) и нижние и верхние (у) проценты. В первой строке m
указано, что следующий график будет содержать от 0 до 33% по горизонтали и от 0 до 50% по вертикали от экрана (то есть в левом нижнем углу). Первый вызов сюжета не обязательно требует вызова par(fig=...)
, но мне нравится его там, чтобы я сбросил макет сюжета, когда я переделаю сюжет. Он должен либо опустить new=TRUE
, либо использовать new=FALSE
, чтобы быть явным (возможно, это хорошо в разы).
Далее я просто заберу несколько графиков. Эта часть - моя изобретательная часть, но она показывает, как она используется. Программное определение m
и его использование ниже не являются полностью необходимыми; вы можете легко определить каждый вызов par(fig=...)
вручную. Несмотря на это, использование простой сетки 2х3 графиков также не является необходимым, и этот метод позволяет разместить гистограммы в значимых местах на карте. (Это, очевидно, может быть сделано программно, но полностью зависит от вас и ваших данных.)
columns <- c('mpg', 'hp', 'drat', 'wt', 'qsec')
for (i in 1:5) {
par(fig=unlist(m[i,]), new=TRUE)
col <- names(mtcars)[i]
hist(mtcars[[col]], col=1+i, main=col)
}
Это прекрасно работает! Спасибо, r2evans. – niafall
Будем предупреждать, что использование 'par (fig = ...)' примерно так же ручно-трудовое, как вы можете получить ... он может легко получить dorked, если он несовместим. * С большой силой приходит большая ответственность * :-) – r2evans
Возможно, вы уже знаете, что, напротив, 'par (mfrow = ...)', это заполнение слева направо и (по-разному) * снизу- Вверх*. Это достаточно легко исправить, например, 'rev (ys)'. – r2evans