Я знаю, что в R есть разные способы правильного построения карт с проекциями. Но только для быстрого "достаточно хорошего" результата с использованием базовых функций, есть ли функция для расчета соотношения сторон для определенной широты, которая, если она будет предоставлена типичным аргументам R asp, будет аппроксимировать правильный график? то есть что-то эквивалентное методу coord_quickmap ggplot2. Благодарен за любые предложения.
Вопрос
Получить соотношение сторон для графиков lat-long
- Можете ли вы привести пример того, как вы делаете карты в базе (т.е. откуда вы получаете данные)? hrbrmstr 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. hrbrmstr 31.07.2015
- Пример сюжета plot(state.center$x, state.center$y, asp=1.6) geotheory 31.07.2015
Ответы
Ответ 1 · рейтинг 7 · hrbrmstr
Если то, что предоставляет 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 и базой).
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Целевая функция кодирования с R
- Наиболее используемые языки программирования для биоинформатики
- Решение проблемы FizzBuzz: восемь творческих решений в программировании на R
- Прогнозирование цен на такси с использованием XGBoost и Random Forest
- R, ggplot2: Как построить кривые Безье, проходящие через фиксированные координаты?
- Аннотировать значения AUC для фасетных графиков отдельно