Как уменьшить пустые поля карты мира

library(maptools)
data(wrld_simpl)
plot(wrld_simpl)
box()

Это дает мне карту мира и показывает множество пустых пространств вверху и внизу карты. Я бы хотел, чтобы этого места не было, так как мне нужно распечатать много (~ 60) карт. Я использую knitr для отчета, в который будут встроены карты. Например.

Here is some text.
<<chunk.maps, eval = TRUE>>=
library(maptools)
plot(wrld_simpl)
box()
@
And some more text.

Но я не думаю, что это knitr вопрос. Так:

  1. Как я могу избавиться от пробела?
  2. Как я могу убедиться, что карта заполняет мою страницу слева направо?

Я пробовал mai, mar, par, но не повезло! Я предполагаю, что out.width для опции chunk даст результат для моего вопроса 2, но, поскольку я так сильно застрял на вопросе 1, мне трудно сказать.

Большое спасибо! Здесь так многому можно научиться!


person Gerit    schedule 12.11.2012    source источник
comment
Вы пытались вставить par(mar=rep(0,4)) перед вызовом plot? На данный момент я не могу проверить это с помощьюknitr/latex, но это избавляет от пробелов на многих графических устройствах R.   -  person BenBarnes    schedule 12.11.2012
comment
К сожалению, вызов par(...) до или после вызова plot не помогает. Однако, спасибо. Это стоило попробовать.   -  person Gerit    schedule 13.11.2012


Ответы (1)


Я использую ggplot2 для таких карт:

require(ggplot2); theme_set(theme_bw())
wrld_simpl_df = fortify(wrld_simpl)
ggplot(wrld_simpl_df, aes(x = long, y = lat, group = group)) + 
   geom_path() + coord_equal()

введите здесь описание изображения

Это также включает пробелы, на которые вы жалуетесь. Проблема в том, что соотношение сторон между осями x и y фиксировано. Поэтому, если вы выберете квадратное графическое устройство, сверху и снизу останутся белые границы. Решение состоит в том, чтобы ваше графическое устройство имело примерно те же пропорции, что и ваш график. Для этого используйте fig.width и fig.height. См. эту ссылку для получения дополнительной информации. В качестве иллюстрации при сохранении графика выше с правильными пропорциями:

ggsave("/tmp/plt.png", width = 16, height = 9)

введите здесь описание изображения

проблема больше не присутствует.

person Paul Hiemstra    schedule 12.11.2012
comment
Только с fig.height и fig.width в параметрах фрагмента я мог изменить форму графиков. Это то, чего я хочу. Большой! Сначала мой заголовок и легенда были слишком маленькими, но я исправил это с помощью par(cex=2). Благодарю вас! (И мне не нужно было погружаться в очередной новый для меня пакет, т.е. ggplot2 -тьфу!) - person Gerit; 13.11.2012
comment
да, вам нужно быть осторожным с размером графика, когда вы рисуете карты (например, нужно установить соответствующие fig.height и fig.width, чтобы карта заполнила пустое пространство); другой подход — просто оставить его в покое и потом обрезать графики (см. графику руководство по обрезке изображений) - person Yihui Xie; 13.11.2012
comment
@Yihui Спасибо, я ценю ваш вклад. Теперь, когда я снова проверил руководство по графике, я вспомнил, что действительно пытался следовать вашим инструкциям, но потерпел неудачу. (Я согласен, что я должен был упомянуть и об этом.) Я мог бы попробовать еще раз, если это поможет сообществу, когда я опубликую сообщение об ошибке. Я бы открыл для него новый пост. Дай мне знать. - person Gerit; 13.11.2012