Я знаю, что в R есть разные способы правильного построения карт с проекциями. Но только для быстрого «достаточно хорошего» результата с использованием базовых функций, есть ли функция для расчета соотношения сторон для определенной широты, которая, если она будет предоставлена типичным аргументам R asp
, будет аппроксимировать правильный график? то есть что-то эквивалентное методу coord_quickmap ggplot2. Благодарен за любые предложения.
Получить соотношение сторон для графиков lat-long
Ответы (1)
Если то, что предоставляет coord_quickmap
, достаточно близко для вас, вы можете сделать:
library(ggplot2)
library(maps)
library(mapdata)
# shamelessly stolen from coord_quickmap
map_aspect = function(x, y) {
x.center <- sum(range(x)) / 2
y.center <- sum(range(y)) / 2
x.dist <- ggplot2:::dist_central_angle(x.center + c(-0.5, 0.5), rep(y.center, 2))
y.dist <- ggplot2:::dist_central_angle(rep(x.center, 2), y.center + c(-0.5, 0.5))
y.dist / x.dist
}
Что сделал бы ggplot
:
ggplot(data.frame(state.center)) + geom_point(aes(x=x, y=y)) + coord_quickmap()
То же самое, теперь, в базе:
plot(state.center$x, state.center$y,
asp=map_aspect(state.center$x, state.center$y))
Помните, однако, что coord_quickmap
(и, следовательно, рассчитанный на его основе коэффициент) был разработан для небольших областей. Я публикую некоторые ресурсы для выбора картографических проекций здесь: здесь, который прекрасно работает с spTransform
и базой).
person
hrbrmstr
schedule
31.07.2015
Точно! Немного смущен, зачем нужны вводы долготы, но эй.
ggplot(data.frame(state.center)) + geom_point(aes(x=x, y=y)) + coord_fixed(ratio = ar)
продемонстрирует, что это точно такой же сюжет
- person geotheory; 31.07.2015
maps::map
будетuse a rectangular projection with the aspect ratio chosen so that longitude and latitude scales are equivalent at the center of the picture
. Позвольте мне опубликовать пример того, как это в значительной степени эквивалентноcoord_quickmap
. - person hrbrmstr   schedule 31.07.2015plot(state.center$x, state.center$y, asp=1.6)
- person geotheory   schedule 31.07.2015