Scatter plot partiellement transparent, mais avec une barre de couleur solide

en Python, avec Matplotlib, comment faire simplement un nuage de points avec transparence (alpha < 1), mais avec une barre de couleur qui représente leur valeur de couleur, mais avec alpha = 1?

voici ce qu'on obtient, avec from pylab import *; scatter(range(10), arange(0, 100, 10), c=range(10), alpha=0.2); color_bar = colorbar() :

alt text

comment rendre la barre de couleur non transparente?

PS : j'ai essayé color_bar.set_alpha(1); draw() , mais cela n'a rien fait…

25
demandé sur Eric Lebigot 2010-12-18 18:44:49

2 réponses

D'accord, j'ai trouvé une façon de le faire, qui semble relativement propre: (en utilisant l'objet ColorBar de la question)

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

ce serait génial d'obtenir une confirmation que c'est la façon la plus robuste de procéder, cependant! :)

27
répondu Eric Lebigot 2014-09-24 08:54:54

c'est un énorme, vilain piratage. Mais aucun autre moyen ne fonctionnerait. Peut-être que quelqu'un d'autre peut s'améliorer.

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()

alt text

10
répondu Steve Tjoa 2010-12-18 20:27:52