关于Matplotlib中+标记edgecolor警告及颜色生效状态的技术问询
关于Matplotlib标记
+的颜色警告问题解答 核心结论
这个警告确实是Matplotlib的术语表述混淆,实际它并没有忽略你指定的edgecolor,你的颜色设置完全生效。
原因解释
Matplotlib的标记分两类:
- 有填充区域的标记(比如圆形
o、方形s):这类标记明确区分edgecolor(边缘线颜色)和facecolor(填充面颜色) - 纯线条构成的标记(比如
+、x、|):这类标记没有填充面的概念,但Matplotlib内部逻辑会把你指定的edgecolor值映射到facecolor的处理路径上,因此弹出这个容易误导的警告,但实际还是用了你设置的edgecolor颜色。
验证方法
你可以用一段简单代码验证效果:
import matplotlib.pyplot as plt plt.scatter([0], [0], marker='+', fc='red', ec='blue', s=200, linewidth=2) plt.show()
运行后会看到+标记是蓝色的(也就是你指定的edgecolor),完全符合预期。
针对你的代码
你写的绘图命令:
plt.scatter( df2plus.long_km, df2plus.lat_km, marker='+', fc='None', ec=df2plus.MMSIcolr, s=100, linewidth=1 )
这里fc='None'会被Matplotlib忽略,它直接使用ec对应的RGB序列作为+标记的颜色,所以你的颜色设置是正常生效的,不用怀疑颜色不对。
可选操作(屏蔽警告)
如果觉得警告干扰,可以用以下代码屏蔽这个特定警告:
import warnings warnings.filterwarnings("ignore", message="You passed a edgecolor/edgecolors")
内容的提问来源于stack exchange,提问作者user2153235
相关产品推荐
相关产品推荐

