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

Matplotlib新版本scatter图无法用c=''设置透明填充色问题

解决Matplotlib散点图空心标记的兼容性问题

在Matplotlib 3.9.2新版本中,c=''的写法不再被允许,会触发ValueError: 'c' argument must be a color, a sequence of colors, or a sequence of numbers, not '',原因是新版本对颜色参数的校验逻辑更严格。要复刻旧版本中黑色空心方框的高亮效果,无需依赖c参数,直接明确设置填充色即可。

解决方法

将原代码中的c=''替换为facecolor='none'(缩写fc='none'也适用),同时保留edgecolor='black'设置边框颜色,就能得到完全空心的方形标记。

修改后的可运行代码

import matplotlib.pyplot as plt
import numpy as np

X = np.random.randint(1, 26, size=(100, 2))

plt.figure(1)
plt.scatter(X[0:50, 0], X[0:50, 1], c='blue', marker='+', s=100)
plt.scatter(X[50:100, 0], X[50:100, 1], c='red', marker='+', s=100)
# 替换c=''为facecolor='none',实现空心方框效果
plt.scatter(X[40:60, 0], X[40:60, 1], facecolor='none', marker='s', s=100, edgecolor='black')
plt.show()

原理说明

  • 旧版本Matplotlib会将c=''解析为无填充色,但新版本明确要求c参数必须是合法的颜色值、颜色序列或数值序列,空字符串不再被认可。
  • facecolor='none'是明确指定标记填充色为透明/无,配合edgecolor设置边框颜色,既符合新版本参数规范,又完美复刻了旧版本的空心高亮效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 07:07:38