R ggiraph с ggmap для интерактивных / реактивных точек долготы и широты - проблема масштаба или оси?

Новый пакет ggiraph действительно отлично подходит для того, чтобы ggplot2 реагировал на пользовательскую мышь, никаких проблем.

Однако у меня возникли проблемы с настройкой правильной работы с ggmap() для интерактивных / реактивных точек долготы и широты.

Интерактивность работает нормально, я могу получить ответ на всплывающую подсказку, когда мышь наводит точку, но при использовании ggmap() возникает проблема с масштабом или осью.

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

Сначала установите необходимые пакеты, затем создайте небольшой примерный набор данных, а затем загрузите требуемую карту, используя функцию get_map():

#Install required_packages:
required_packages <- c("ggmap", "ggplot2", "ggiraph")
new.packages <- required_packages[!(required_packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)
#Load required_packages:
lapply(required_packages, require, character.only = TRUE)

#Make small example data set:
suburb<-c("BURNLEY","COLLINGWOOD","MALVERN","PRAHRAN","RICHMOND","SOUTH YARRA","ST KILDA","ST KILDA WEST","TOORAK","WINDSOR")
lon<-c(145.0176466,144.98815,145.036,144.998,144.998,144.989,144.982,144.9732,145.018,144.988)
lat<-c(-37.8299258, -37.8019,-37.857,-37.852,-37.823,-37.84,-37.864,-37.8604,-37.841,-37.854)
`Change 2005-2015 (%)`<-c(112, 120, 136, 127, 122, 115, 110, 146, 120, 128)
df<-data.frame(suburb, lon, lat, `Change 2005-2015 (%)`)

#Download map from google maps
SOUTH_YARRA <- get_map(location = 'South Yarra, Australia', zoom = 13, maptype="terrain")

Теперь у меня нет проблем с использованием приведенного ниже кода для создания статической карты:

ggmap(SOUTH_YARRA) + 
    geom_point(data = df, 
               aes(x =lon, y= lat, size=`Change 2005-2015 (%)`, colour = `Change 2005-2015 (%)`),
               alpha=0.75) +  
    scale_colour_gradientn(colours=rainbow(5)) +
    scale_radius (range = c(6, 12), trans = "identity", guide = "legend") +
    ggtitle("Total change in Median \n House Price (%) from 2005-2015 \n")

вот статическая карта, созданная с помощью кода выше - нет проблем

Однако, когда я использую gegi_point_interactive() ggiraph, чтобы заставить точки на карте реагировать на наведение мыши на пользователя, возникает проблема с масштабом или осью:

#Try add reactivity using ggiraph's geom_point_interactive() instead of geom_point()
interactive_map<-ggmap(SOUTH_YARRA) + 
    geom_point_interactive(data = df, 
                           aes(x =lon, y= lat, size=`Change 2005-2015 (%)`, colour = `Change 2005-2015 (%)`, tooltip=suburb, data_id = suburb),
                           alpha=0.75) +  
    scale_colour_gradientn(colours=rainbow(5)) +
    scale_radius (range = c(6, 12), trans = "identity", guide = "legend") +
    ggtitle("Total change in Median Melbourne \n House Price (%) from 2005-2015 \n")

ggiraph(code = {print(interactive_map)}, zoom_max = 5,
        tooltip_offx = 20, tooltip_offy = -10, 
        hover_css = "fill:black;",
        tooltip_opacity = 0.7)

вот неподвижное изображение моей проблемы масштаба / оси, созданное кодом выше. Обратите внимание, что приведенный выше код заставляет реакционную способность всплывающей подсказки работать нормально при наведении мыши, именно эту проблему масштаба мне нужно решить

Я попытался изменить аргументы maprange, экстента и base_layer для функции ggmap(), например:

ggmap(SOUTH_YARRA, maprange=TRUE, extent = "panel", base_layer = ggplot(data = df, aes(x =lon, y= lat)))

Однако это не помогло. ggiraph - это отличный пакет imho, так как он новый, пока еще нет много возможностей для работы со стеком и т. д. Любая помощь могла бы быть полезна!

1 ответ

Решение

Это была ошибка в пакете ggiraph, и сопровождающий пакета только что исправил ее, подробности смотрите в отчете об ошибках github здесь: https://github.com/davidgohel/ggiraph/issues/32

Другие вопросы по тегам