Plotly为geo图形添加外边框,update_layout设置borderwidth不生效如何解决
Geo图形外围边框设置失效解决方案
你之前设置不生效的核心原因是地理图的边框参数不属于顶层layout的通用配置,而是嵌套在geo专属配置项中,且需要先开启边框显示开关才能生效,具体实现方案分两种常见场景:
场景1:单个Figure内包含两个Geo子图
import plotly.graph_objects as go from plotly.subplots import make_subplots # 初始化1行2列的Geo子图布局 fig = make_subplots( rows=1, cols=2, specs=[[{"type": "geo"}, {"type": "geo"}]] ) # 此处添加你自己的两个地理图trace逻辑 fig.add_trace(go.Scattergeo(lon=[-95, -80], lat=[35, 40]), row=1, col=1) fig.add_trace(go.Scattergeo(lon=[10, 30], lat=[45, 55]), row=1, col=2) # 给第一个子图设置Geo边框 fig.update_geos( showframe=True, # 必须显式开启边框显示 framewidth=2, # 边框宽度 framecolor="#000000", # 边框颜色 row=1, col=1 ) # 给第二个子图设置Geo边框 fig.update_geos( showframe=True, framewidth=2, framecolor="#000000", row=1, col=2 ) fig.show()
场景2:两个独立的Geo Figure
每个单独的地理图分别调用update_geos配置即可:
import plotly.graph_objects as go # 第一个地理图 fig1 = go.Figure(go.Scattergeo()) fig1.update_geos( showframe=True, framewidth=3, framecolor="#222222" ) # 第二个地理图 fig2 = go.Figure(go.Scattergeo()) fig2.update_geos( showframe=True, framewidth=3, framecolor="#222222" )
额外说明
如果你需要的是地理图周围留白区域的容器边框,而非Geo投影本身的边框,可以通过隐藏坐标轴后开启坐标轴边框实现:
# 给指定子图添加容器级边框 fig.update_xaxes( showline=True, linewidth=2, linecolor="black", mirror=True, visible=False, row=1, col=1 ) fig.update_yaxes( showline=True, linewidth=2, linecolor="black", mirror=True, visible=False, row=1, col=1 ) # 第二个子图重复以上配置即可
内容的提问来源于stack exchange,提问作者user8962730
相关产品推荐
相关产品推荐

