R ggiraph与ggmap结合使用的交互式/反应式经纬度点-比例尺或坐标轴问题?

3
新的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")

这里是由上述代码生成的静态地图 - 没有问题

然而,当我使用ggiraph的geom_point_interactive()函数让地图上的点对用户的鼠标悬停做出反应时,会出现比例尺或坐标轴的问题:

#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)

这里是由上述代码生成的我的比例尺/轴问题的静态图像。请注意,上述代码使得鼠标悬停时工具提示反应良好,只是我需要解决这个比例尺问题。

我尝试更改ggmap()函数的maprange、extent和base_layer参数,例如:

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

然而,这并没有帮助。在我看来,ggiraph是一个很棒的包,因为它很新,在stackoverflow等网站上还没有太多关于它的内容。任何帮助都将不胜感激!


我知道ggiraph中的geom_map_interactive()函数非常好用,但是我需要使用ggmap()和geom_point_interactive()。如果我能解决这个比例尺问题,那就完美了。 - DanielPNewman
1
更新:此问题已记录在包的 GitHub 存储库上,包作者表示:“似乎栅格对象存在问题” https://github.com/davidgohel/ggiraph/issues/32 - DanielPNewman
与您的问题无关,您可能想看一下viridis颜色标度而不是那个彩虹调色板。 - Axeman
谢谢Axeman,我会去看看! - DanielPNewman
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接