如何使pyplot散点标记不透明?

How to make pyplot scatter markers opaque?

我想制作一个线条图,在某些点上叠加不透明的散点标记。但是,即使使用 alpha=1:

,线条仍会通过标记发光
import matplotlib.pyplot as plt
plt.close('all')
plt.plot([0, 2], [0, 0], color='black')
plt.scatter([1], [0], color='red', alpha=1)
plt.savefig('/tmp/foo.png')

如何使红色标记真正不透明,即使黑色线在其下方完全不可见?

你的问题是 z-order 的元素。默认情况下,线条将绘制在标记之上。使用 plt.scatter(..., zorder=3) 强制标记在顶部。

import matplotlib.pyplot as plt
plt.plot([0, 2], [0, 0], color='black')
plt.scatter([1], [0], color='red', alpha=1, zorder=3)
plt.show()