GGplot geom_map искажается при интерактивном построении с помощью ggplotly - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь создать интерактивную карту Германии с plotly и ggplot. Наконец, я хотел бы наложить geom_points на всплывающие подсказки, но пока я борюсь с соотношением сторон.

Я создаю сюжет следующим образом:

library(tidyverse)
library(ggplot2)
library(plotly)

p <- map_data("world") %>%
  filter(region=="Germany") %>%
  ggplot(aes(x=long, y = lat, group = group)) +
  geom_polygon(fill="grey") +
  coord_map()

Когда я просто рисую его с помощью ggplot, соотношение сторон Германии такое, как я знаю из школы.

p

germany_with_correct_aspect_ration

При преобразовании в график с ggplotly график искажается.

ggplotly(p)

enter image description here

Есть идеи, как это исправить? Не знаю, актуально ли это, но раньше я запускал этот код в документе R Markdown.

Большое спасибо.

1 Ответ

0 голосов
/ 20 июня 2020

Думаю, вы не сможете получить достойный уровень детализации на карте мира, которую вы использовали. Карты бывают двух типов: generi c и GIS (реальные картографические данные).

Ниже представлена ​​неискаженная карта Германии. Вот шаги и источники данных.

Скачать данные ГИС - карта Германии. Источник, https://gadm.org/download_country_v3.html Выберите уровень детализации. 0 - контур страны, 1 - страна с штатами. Эти файлы будут иметь расширения sp.rds.

Вырежьте и вставьте загруженный файл географических справочных данных в ваш рабочий каталог - это проще, чем создать путь из рабочего каталога в какое-либо другое местоположение папки. Поскольку эти данные являются фактическими геопространственными данными, использованными при создании этого графика Германии, эти данные / график можно использовать в качестве базовой карты или наложения карты с картами Google, картами Overstreet и т. Д. c ..

Используйте следующие библиотеки и две строки кода для создания графика Германии.

library(maptools)
library(raster)
library(rgdal)

gadm <- readRDS("gadm36_DEU_0_sp.rds")   # get the gis file from w/d.
plot(gadm)

enter image description here

...