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

如何在Matplotlib中绘制散点图后修改标记大小?

解决Matplotlib散点图绘制后修改标记大小的问题

嘿,这个问题我之前调试代码时也踩过坑!你用plt.setp()的思路没问题,但问题出在参数名上——咱们来一步步解决它。

首先得明确:ax.scatter()返回的是一个PathCollection对象,这个对象用来管理所有散点标记的样式。你之前尝试的s=10是调用scatter()时的初始化参数,但修改已绘制完成的标记时,对应的对象属性名是sizes,不是s,这就是为什么你的代码没生效。

下面是两种可行的解决方法:

方法1:使用set_sizes()方法(推荐)

这是最直观的方式,PathCollection对象自带set_sizes()方法,你只需要传入一个和数据点数量匹配的大小列表即可。如果想让所有标记大小一致,就生成一个全是目标数值的列表:

fig, ax = plt.subplots()
a = list(range(20))
b = list(range(20, 40))
p = ax.scatter(a, b)

# 把所有标记改成大小10
p.set_sizes([10] * len(a))

plt.show()

要是想给不同点设置不同大小,直接把列表换成对应数值的数组就好,比如p.set_sizes([5, 10, 15, ..., 100])。

方法2:用plt.setp()指定sizes参数

如果你习惯用plt.setp(),只要把参数名改成sizes就能生效:

plt.setp(p, sizes=[10] * len(a))

补充说明:如果是在Jupyter这类交互环境中修改,修改后可以调用plt.draw()让更新立刻生效;如果是脚本运行,直接plt.show()就能看到调整后的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:36:39