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

Matplotlib散点图标记尺寸参数疑问:为何markersize报错?

Matplotlib scatter 函数参数命名不一致问题解答

问题场景

运行以下Matplotlib代码时出现报错:

fig, ax = plt.subplots(1, 1, figsize = (6,3))

N = 100
mu = [4,3]
cov = [[0.25,0.50],[0.50, 2.50]]

rng = np.random.default_rng(seed = 1949)
draw = partial(pm.draw, random_seed = rng)

x_draws = draw(pm.MvNormal.dist(mu = mu, cov = cov), draws = N)

ax.scatter(x_draws[:, 0], 
           x_draws[:, 1], 
           color = "darkblue", 
           markersize = 5,
           alpha = 1)

plt.show()

报错信息:

PathCollection.set() got an unexpected keyword argument 'markersize'

发现scatter函数中颜色参数可以用c=或color=,但标记尺寸必须用s=而非markersize=,疑问:这是否存在不一致?能否用其他命名替代s=?

解答

  1. 参数命名不一致的原因
    Matplotlib不同绘图函数的参数命名存在历史遗留差异:
  • plot函数(绘制线+标记)使用markersize(或缩写ms)控制标记大小;
  • scatter是专门的散点绘制函数,它的标记大小参数是s,这个参数控制的是标记的面积(而markersize控制的是标记直径),两者数值对应关系为:s = markersize ** 2 * (dpi/72) ** 2;
  • 颜色参数c和color的兼容是因为Matplotlib为易用性给很多视觉属性参数提供了短/长命名别名,比如color还有fc(facecolor)这类别名,但s没有官方别名。
  1. 能否用其他命名替代s=
    目前Matplotlib官方没有为s提供markersize这类别名,必须使用s=指定散点标记大小。如果习惯markersize的写法,可以自行转换:把目标markersize值平方后代入s,比如s=5**2就能得到和plot里markersize=5视觉接近的大小。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:20:00