Я ищу ggplot2
эквивалент для eqscplot
(пакет MASS
), который может заполнить все окно графика, сохраняя при этом масштаб на карте в ggplot
.
Там coord_fixed
, где декартовы координаты могут быть установлены с фиксированной крысой ios (аргумент aspect =
), но это не работает, если я использую geom_sf()
; geom_sf()
требует coord_sf
для построения графика и не может быть слоем ggplot
, если coord_sf
является слоем.
Есть ответ ( ggplot2: Отразить оси и сохранить соотношение сторон данных ), но это не автоматическое c, что является проблемой, когда нужно сделать много карт и когда идеальным рабочим процессом является автоматическое создание карт. Он также не увеличивает точки, как eqscplot
.
eqscplot
способен поддерживать соотношение сторон, когда значения range
из x
и y
сильно различаются, что полезно для построения карт.
library(rnaturalearth)
library(rnaturalearthdata)
library(MASS)
library(ggplot2)
world <- ne_countries(scale = 'medium', returnclass = 'sf',
country = c('India', 'Sri Lanka', 'Pakistan', 'Myanmar',
'Malaysia', 'Indonesia', 'Thailand',
'Nepal', 'Bhutan', 'Laos', 'China', 'Iran',
'Maldives'))
RNGkind('Mers')
set.seed(42)
lonlat <- data.frame(lon = rnorm(10, 80, 5),
lat = rnorm(10, 12, 5))
apply(lonlat, 2, range)
lon lat
[1,] 77.17651 9.343545
[2,] 90.09212 14.286645
eqscplot(lonlat$lon, lonlat$lat, type = 'n')
plot(world, add = T, col = NA)
points(lonlat$lon, lonlat$lat, col = 'red', pch = 16)
#Compare the lon/lat ranges on the map with the ranges of the data's longitude and latitude
Я искал, есть ли способ сделать это ggplot2
, но если Я не указываю пределы долготы и широты, она принимает размеры стран, которые я указала в объекте world
.
ggplot(data = world) +
geom_sf() +
geom_point(data = lonlat, aes(x = lon, y = lat))
У меня есть несколько сотен карт, поэтому автоматизировать процесс с семейством функций apply
или циклами for
предпочтительнее. Но мне нужно что-то, что может автоматически увеличивать точки, которые я строю, сохраняя соотношение сторон. Я собираюсь сделать это в ggplot2
, потому что мои соавторы не имеют такого опыта работы с R
, и их научили использовать tidyverse
, поэтому все, что я могу сделать, чтобы облегчить понимание кода, может go долгий путь.
Мой вопрос: Есть ли eqscplot
эквивалент в ggplot2
? Что-то, где соотношение сторон может быть установлено автоматически, увеличивает масштаб, где точки вместо экстента многоугольника world
, и заполняет все окно графика, сохраняя масштабы?