在R的Plotly中叠加SF对象多边形:地图颜色控制问题求助
解决Plotly叠加泛大陆地图时的样式控制问题
要分别控制标准底图和泛大陆图层的线条、填充样式,核心是将基础底图和泛大陆图层分开配置:通过layout(geo)控制底图样式,通过add_sf()单独添加泛大陆图层并设置其专属样式。
修改后可控制样式的代码
library(sf) library(plotly) # 加载泛大陆数据并设置坐标系 pangea <- st_read("https://gws.gplates.org/reconstruct/coastlines_low/?&time=200&model=SETON2012&avoid_map_boundary") st_crs(pangea) <- "+proj=longlat +ellps=WGS84 +datum=WGS84" # 初始化地图并分别配置两层样式 plot_geo() %>% # 添加泛大陆图层,自定义填充与线条 add_sf(data = pangea, fill = I("#8B4513"), # 泛大陆填充色(深棕色) color = I("#000000"), # 泛大陆线条颜色(黑色) line = list(width = 1)) %>% # 线条宽度 # 配置标准底图样式 layout(geo = list( projection = list(type = 'orthographic'), # 底图陆地设置 showland = TRUE, landcolor = I("#E0E0E0"), # 底图陆地填充色(浅灰色) # 底图海洋设置 showocean = TRUE, oceancolor = I("#87CEEB"), # 海洋填充色(浅蓝色) # 关闭现代边界避免干扰 showcountries = FALSE, showcoastlines = FALSE ))
关键参数说明
泛大陆图层控制:
fill = I(颜色值):直接指定泛大陆区域的填充色,I()函数用于强制使用自定义颜色,避免Plotly自动生成颜色映射。color = I(颜色值):控制泛大陆海岸线的线条颜色。line = list(width = N):调整海岸线线条的宽度。
标准底图控制:
showland/landcolor:开关底图陆地显示并设置其填充色。showocean/oceancolor:开关海洋显示并设置填充色。showcoastlines/coastlinecolor:如果需要保留现代海岸线,可开启并设置其颜色、宽度,避免和泛大陆线条混淆。
内容的提问来源于stack exchange,提问作者Mark R
相关产品推荐
相关产品推荐

