繁体   English   中英

如何在绘图图中更改属性表弹出/悬停文本

[英]How to change the attribute table popup/hover text in a plotly map

我正在尝试从shapefile制作一个交互式的地图,并使用悬停/工具提示显示一些信息。

目前,当我将鼠标悬停在地图上的某个区域时,它仅提供VAR1 (A,B,C,D)的信息,而不是DATA$HOVER的信息

该地图(在我的代码中称为NUTS1 )可从以下网站获取: httpNUTS1

我无权使用SF。

sessionInfo()
R版本3.4.0补丁(2017-05-31 r72750)
平台:x86_64-w64-mingw32 / x64(64位)
在以下环境中运行:Windows 7 x64(内部版本7601)Service Pack 1

packageVersion( “plotly”)
[1]'4.7.1'

packageVersion( “GGPLOT2”)
[1]'2.2.1'

DATA <- c(NA)
DATA$NUTS1 <- c("UKC","UKD","UKE","UKF","UKG","UKH","UKI","UKJ","UKK","UKL","UKM",
"UKN")
DATA$VAR1  <- c("D","D","A","D","A","C","B","C","B","C","B","A")
DATA$VAR2  <- c("8","4","1","10","4","7","5","1","8","6","3","8")
DATA$VAR3  <- c("1","2","3","4","5","6","7","8","9","10","11","12")
NUTS1 <- readOGR(dsn = 
          "NUTS_Level_1_January_2018_Full_Clipped_Boundaries_in_the_United_Kingdom",
                 layer = 
          "NUTS_Level_1_January_2018_Full_Clipped_Boundaries_in_the_United_Kingdom")
NUTS1 <- fortify(NUTS1, region = "nuts118cd")
DATA$HOVER <- with(DATA, paste(NUTS1, "<br>", VAR1, "<br>", VAR2, "<br>", VAR3))

p <- ggplot(data = DATA, text = HOVER) + 
  geom_map(data = DATA, aes(map_id = NUTS1, fill = VAR1), map = NUTS1) + 
  expand_limits(x = NUTS1$long, y = NUTS1$lat)

p <- ggplotly(p, tooltip = "text")

我认为,首先,您的DATA对象应该是一个data.frame (从您的代码中获得一个列表,该列表ggplot()函数接受)。

然后,尝试将HOVER列映射到geom_map()而不是ggplot()text美感中。

此外,在您的DATA data.frame,列重命名NUTS1id ,所以它的列名相匹配idNUTS1 data.frame与获得fortify (你看,这是自中发现的例子重要的help(geom_map)

library(ggplot2)
library(plotly)
library(rgdal)

DATA <- data.frame(id = c("UKC","UKD","UKE","UKF","UKG","UKH","UKI","UKJ","UKK","UKL","UKM","UKN"),
                   VAR1 = c("D","D","A","D","A","C","B","C","B","C","B","A"),
                   VAR2 = c("8","4","1","10","4","7","5","1","8","6","3","8"),
                   VAR3 = 1:12)
DATA$HOVER <- with(DATA, paste(id, "<br>", VAR1, "<br>", VAR2, "<br>", VAR3))

NUTS1 <- readOGR(dsn = "NUTS_Level_1_January_2018_Full_Clipped_Boundaries_in_the_United_Kingdom",
                 layer = "NUTS_Level_1_January_2018_Full_Clipped_Boundaries_in_the_United_Kingdom")
NUTS1 <- fortify(NUTS1, region = "nuts118cd")

p <- ggplot(data = DATA) + 
  geom_map(aes(map_id = id, fill = VAR1, text = HOVER), map = NUTS1) +
  expand_limits(x = NUTS1$long, y = NUTS1$lat)

p2 <- ggplotly(p)
p2

在此处输入图片说明


请注意,使用mapview软件包可以更轻松地制作交互式地图。 对于您的特定问题,请检查mapview弹出窗口 这是mapview的尝试:

library(mapview)
library(rgdal)

NUTS1 <- readOGR(dsn = "NUTS_Level_1_January_2018_Full_Clipped_Boundaries_in_the_United_Kingdom",
                 layer = "NUTS_Level_1_January_2018_Full_Clipped_Boundaries_in_the_United_Kingdom")

DATA <- data.frame(NUTS1 = c("UKC","UKD","UKE","UKF","UKG","UKH","UKI","UKJ","UKK","UKL","UKM","UKN"),
                   VAR1 = c("D","D","A","D","A","C","B","C","B","C","B","A"),
                   VAR2 = c("8","4","1","10","4","7","5","1","8","6","3","8"),
                   VAR3 = 1:12)
# merge DATA with the SpatialPolygonsDataFrame NUTS1
nuts <- merge(x = NUTS1, y = DATA, by.x = "nuts118cd", by.y = "NUTS1")

mapview(nuts, popup = popupTable(nuts, zcol = c("nuts118cd", "VAR1", "VAR2", "VAR3")))

在此处输入图片说明

要填充VAR1 ,您需要遵循以下示例并在mapview调用zcol = "VAR1" ,例如:

mapview(nuts, zcol = "VAR1", 
        popup = popupTable(nuts, zcol = c("nuts118cd", "VAR1", "VAR2", "VAR3")))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM