You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

px.scatter标记大小配置异常:仅显示首府城市问题咨询

问题分析与修复方案

嗨,我来帮你排查下代码里的问题~你现在只看到首府城市,主要有两个核心原因:

1. 初始size='capital'的自动缩放坑

当你在px.scatter里设置size='capital'时,Plotly会自动根据capital列的数值来缩放标记大小。因为你的capital值是0和1,非首府(0)的标记会被缩放到几乎看不见的极小尺寸,所以视觉上看起来只有首府(1)显示出来了。

2. Selector的类型不匹配问题

你用selector={'capital': '0'}和'1'来筛选点,但如果你的capital列是数值类型(比如int),这个字符串条件就匹配不到任何非首府的点,导致update_traces对非首府的大小修改根本没生效,它们还是保持初始的极小状态。


修复后的代码方案

我给你两种可行的修复方式,选一种适合你的就行:

方案一:直接用update_traces分别设置大小(推荐)

先去掉初始的size参数,确保selector的条件和数据类型完全一致:

import plotly.express as px

# 先确保capital是数值类型(如果你的数据里是字符串格式,先转成int)
dados['capital'] = dados['capital'].astype(int)

fig = px.scatter(dados, x='longitude', y='latitude', title='Mapa', color='uf')
# 设置非首府城市的标记大小
fig.update_traces(marker={'size': 10}, selector={'capital': 0})
# 设置首府城市的标记大小(比非首府更大)
fig.update_traces(marker={'size': 20}, selector={'capital': 1})
fig.show()

方案二:自定义size列

提前给每个城市分配好对应的标记大小,再传给size参数,逻辑更直观:

import plotly.express as px

# 新增一列,直接指定首府和非首府的标记尺寸
dados['marker_size'] = dados['capital'].apply(lambda x: 20 if x == 1 else 10)

fig = px.scatter(dados, x='longitude', y='latitude', title='Mapa', color='uf', size='marker_size')
fig.show()

这样修改后,你就能同时看到首府和非首府城市,而且首府的标记会明显更大啦~

内容的提问来源于stack exchange,提问作者Beatrice de Melo Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 09:27:30