You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Plotly(Python)散点地理图中添加经纬度刻度标签?

解决Plotly北美地图添加经纬度刻度标签的问题

我之前也踩过这个坑!Plotly地理轴的刻度标签设置确实不像常规图表那么直观,官方文档的Geo-Axes章节里lonaxis/lataxis的参数说明容易让人误以为没有相关设置,但其实核心是你漏掉了一个关键开关——showticklabels,再配合自定义刻度参数就能实现需求。

核心设置逻辑

layoutgeo字典中,需要同时配置以下几点:

  • 开启showticklabels: True(默认是False,所以之前设置了也看不到)
  • 选择刻度模式:要么自定义刻度值和文本,要么让Plotly自动生成

自定义刻度标签的代码示例

下面是针对北美地图的完整示例,包含降水地图(这里用示例数据代替,你可以替换成自己的数据集):

import plotly.express as px

# 替换成你的降水数据,这里用选举数据做示例
df = px.data.election()
fig = px.choropleth(
    df,
    geojson=px.data.election_geojson(),
    locations='district',
    color='Bergeron',
    scope='north america'  # 指定地图范围为北美
)

# 关键的刻度标签配置
fig.update_layout(
    geo=dict(
        showticklabels=True,  # 必须开启这个才会显示刻度
        # 自定义经度刻度
        lonaxis=dict(
            tickmode='array',  # 使用自定义数组模式
            tickvals=[-120, -100, -80, -60],  # 经度数值
            ticktext=['120°W', '100°W', '80°W', '60°W']  # 显示的标签文本
        ),
        # 自定义纬度刻度
        lataxis=dict(
            tickmode='array',
            tickvals=[30, 40, 50, 60],
            ticktext=['30°N', '40°N', '50°N', '60°N']
        ),
        projection_type='albers usa'  # 北美常用的投影类型,适配区域显示
    )
)

fig.show()

自动生成刻度的替代方案

如果你不想手动指定刻度值,可以用linear模式,通过dtick控制间隔:

fig.update_layout(
    geo=dict(
        showticklabels=True,
        lonaxis=dict(
            tickmode='linear',
            dtick=20  # 经度每20度显示一个刻度
        ),
        lataxis=dict(
            tickmode='linear',
            dtick=10  # 纬度每10度显示一个刻度
        ),
        projection_type='albers usa'
    )
)

为什么之前没生效?

  • showticklabels默认关闭,这是最容易忽略的点,即使配置了tickvals也不会显示
  • 不同投影类型(比如albers usa)会自动裁剪地图范围,所以刻度值要落在北美区域内才会显示
  • 官方文档的参数分散在geolonaxis/lataxis下,需要结合起来看才会明白完整逻辑

内容的提问来源于stack exchange,提问作者spacetyper

火山引擎 最新活动