Участок в R вне пропорции. Почему? - PullRequest
1 голос
/ 22 марта 2020

Я хочу построить карту мира в R, но по какой-то причине в верхней и нижней части изображения есть ненужные поля. Я уменьшил код до минимального.

png('mundi.png',1000,500)
par(mar=c(0,0,0,0),bg='green')
plot(NA,xlim=c(-180,180),ylim=c(-90,90),xaxs='i',bty='n',xaxt='n',yaxt='n',asp=1)
par('usr')
rect(-180,-90,180,90,col='white')
dev.off()

Сгенерированное изображение:

rectangle 1000x500

Зеленые области - это ненужные поля. Размер изображения и координат составляет 2x1 (1000x500 и 360x180 соответственно). xaxs='i' должен указывать точные координаты. asp=1 не нужно, и это не имеет никакого значения. par('usr') возвращается

-180.0  180.0  -97.2   97.2

Почему он не возвращает

-180.0  180.0  -90.0   90.0

Как это (предположительно) должно быть?

1 Ответ

1 голос
/ 23 марта 2020

Вы были почти там, на самом деле. Чтобы контролировать пределы окна графика через xlim / ylim без лишних пробелов, которые R имеет тенденцию добавлять, вы должны указать опцию x/yaxt = 'i'. Вы устанавливаете его для оси x, но не для оси y.

Когда я устанавливаю его для оси y, выводимые значения соответствуют ожидаемым, и график полностью белый (извините, что не выложил его изображение ;-))

png('mundi.png', width = 1000, height = 500)
par(mar=c(0,0,0,0), bg='green')
plot(NA, xlim = c(-180,180), ylim = c(-90,90), 
     xaxs='i', yaxs='i', # set both axes to 'i' option
     bty='n',xaxt='n',yaxt='n',asp=1)
par('usr')
# [1] -180  180  -90   90
rect(-180,-90,180,90,col='white')
dev.off()
...