matplotlib 部分透明散点图,但带有纯色条

ddarikpa  于 2023-10-24  发布在  其他
关注(0)|答案(3)|浏览(146)

在Python中,使用Matplotlib,如何简单地做一个透明度(alpha < 1)的散点图,但是用一个颜色条表示它们的颜色值,但是alpha = 1?
以下是from pylab import *; scatter(range(10), arange(0, 100, 10), c=range(10), alpha=0.2); color_bar = colorbar()的结果:

如何使颜色条不透明?

PS:我试过color_bar.set_alpha(1); draw(),但这并没有做任何事情.

jqjz2hbq

jqjz2hbq1#

好吧,我找到了一种方法,看起来相对干净:(使用问题中的ColorBar对象)

color_bar.set_alpha(1)
color_bar.draw_all()
# pylab.draw() or pyplot.draw() might be necessary

不过,如果能确认这是最可靠的方法,那就太好了!:)

t1qtbnec

t1qtbnec2#

这是一个巨大的,丑陋的黑客。但没有其他方法会工作。也许别人可以改善。

fig1 = pylab.figure()
fig2 = pylab.figure()
ax1 = fig1.add_subplot(111)
ax2 = fig2.add_subplot(111)
ax1.scatter(range(10), range(10), c=range(10), alpha=0.2)
im = ax2.scatter(range(10), range(10), c=range(10), alpha=1.0)
fig1.colorbar(im, ax=ax1)
fig1.show()

eoxn13cs

eoxn13cs3#

Joe Kington的注解是正确的方法,因为matplotlib 6.0已经弃用了cbar.draw_all()

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
im = ax.scatter(range(10), range(10), c=range(10), alpha=0.2)
cbar = fig.colorbar(im, ax=ax)
cbar.solids.set(alpha=1)

deprecation警告:
MatplotlibDeprecationWarning: The draw_all function was deprecated in Matplotlib 3.6 and will be removed two minor releases later. Use fig.draw_without_rendering() instead. cbar.draw_all()

相关问题