R语言Plotly世界地图:颜色条存在时根砧数量图例不显示求助
解决方案:Plotly地图同时显示颜色条和点大小图例
问题核心在于:Plotly中地理热力图(choropleth)的颜色条会占用图例空间,且散点的size属性不会自动生成图例,需要手动配置。以下是调整后的代码:
首先清理数据(移除根砧数量为NA的行,避免无效点):
# 清理散点数据集,移除NA值 duse_clean <- duse_no_dupplicats[!is.na(duse_no_dupplicats$dotsize_rootstock), ]
然后构建图形:
fig_jittered <- plot_geo() %>% layout( geo = list( showframe = TRUE, showcoastlines = TRUE, showland = TRUE, landcolor = toRGB("white"), countrycolor = toRGB("darkgrey"), coastlinecolor = toRGB("black"), coastlinewidth = 0.5, lataxis = list( range = c(-55, 80), showgrid = FALSE ), lonaxis = list( range = c(-130, 160), showgrid = FALSE ) ) ) %>% # 添加国家论文数热力图 add_trace( data = occurence, z = ~count, color = ~count, colors = 'GnBu', text = ~COUNTRY, locations = ~code, marker = list( line = list(width = 0.5, color = "black") ), colorbar = list(title = "Number of papers published in each country", x = 1, y = 0.92), showlegend = FALSE # 隐藏该图层的图例,只保留颜色条 ) %>% # 添加根砧数散点(不显示图例) add_trace( data = duse_clean, type = "scattergeo", lat = ~lat_jittered, lon = ~lon_jittered, text = ~paste("Title: ", title, "<br>Number of Rootstocks: ", n_rootstock), mode = "markers", marker = list( size = ~dotsize_rootstock, symbol = "circle", color = "lightgrey", line = list(width = 1.5, color = "black") ), showlegend = FALSE # 主散点图层不生成图例,用手动添加的参考点替代 ) %>% # 手动添加根砧数大小图例(坐标设为地图外,不显示在地图上) add_trace( data = data.frame( rootstock_count = c(1, 5, 10, 15), dot_size = c(0.75, 3.75, 7.5, 11.25), lat = 999, lon = 999 # 超出地图范围,不显示 ), type = "scattergeo", lat = ~lat, lon = ~lon, mode = "markers", marker = list( size = ~dot_size, color = "lightgrey", line = list(width = 1.5, color = "black") ), name = ~paste(rootstock_count, "Rootstocks"), hoverinfo = "none" # 关闭悬停信息 ) %>% layout( title = "With jittered locations", legend = list( x = 0.05, y = 0.95, bgcolor = "rgba(255, 255, 255, 0.7)", bordercolor = "black", borderwidth = 1, title = list(text = "Number of Rootstocks") ) ) fig_jittered
关键调整说明:
- 热力图层隐藏图例:给第一个
add_trace添加showlegend = FALSE,避免热力图的图例与颜色条冲突,同时保留颜色条单独显示。 - 主散点图层隐藏图例:散点的
size属性不会自动生成图例,因此主散点图层不显示图例,改用手动添加的参考点生成图例。 - 手动创建大小图例:添加一个包含不同根砧数量对应点大小的参考图层,将坐标设为地图范围外(
lat=999, lon=999),这样这些点不会出现在地图上,但会生成对应的图例条目。
内容的提问来源于stack exchange,提问作者Christophe
相关产品推荐
相关产品推荐

