Plotly plot_mapbox悬停功能缺失问题技术求助
解决Plotly Mapbox悬停不显示name字段的问题
嘿,你的代码已经离目标很近啦!悬停功能没生效是因为没明确指定要在悬停时展示的内容,咱们只需要在plot_mapbox里添加几个参数就能搞定:
核心修改点
- 添加
text = ~name参数,告诉Plotly要把name字段的内容作为悬停文本 - 设置
hoverinfo = 'text',确保悬停时只显示咱们指定的文本内容(如果需要同时显示其他信息,也可以灵活调整这个参数)
修改后的完整代码
library(plotly) library(RColorBrewer) # 设置Mapbox Token Sys.setenv("MAPBOX_TOKEN" = "my_token") # 你的数据 data <- structure(list(lat = c(32.6310392784338, 32.1837229125793, 31.7739571914213, 32.4667576871354, 31.549376888011, 32.7433574730586), lon = c(-97.1339747215662, -97.5812910874207, -97.9910568085787, -97.2982563128646, -98.215637111989, -97.0216565269414), count = c(1, 2, 5, 15, 20, 35), name = c("text_to_display1", "text_to_display2", "text_to_display3", "text_to_display4", "text_to_display5", "text_to_display6")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -6L), .Names = c("lat", "lon", "count", "name")) # 修改后的绘图代码 plot_ly <- data %>% plot_mapbox(lat = ~lat, lon = ~lon, color = ~count, colors = brewer.pal(n = 9, name = "Blues"), mode = 'markers', # 新增悬停相关参数 text = ~name, hoverinfo = 'text') %>% layout(title = 'A Title', font = list(color='white'), plot_bgcolor = '#191A1A', paper_bgcolor = '#191A1A', mapbox = list(style = 'dark'), legend = list(orientation = 'h', font = list(size = 8)), margin = list(l = 25, r = 25, b = 25, t = 25, pad = 2), showlegend = FALSE) plot_ly
进阶:同时显示多个字段
如果你想在悬停时同时展示name和count,可以把text参数改成带HTML换行的组合文本:
text = ~paste("名称: ", name, "<br>计数: ", count)
这样悬停时就会分行清晰显示两个字段的内容啦。
环境适配说明
你的R版本和plotly 4.7.1版本完全支持这个修改,不需要额外升级包就能生效。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

