Matplotlib: tracé de l'histogramme transparent avec un bord non transparent
Je suis tracer un histogramme, et j'ai trois ensembles de données qui je veux tracer ensemble, chacun avec différentes couleurs et de type de ligne (dashed, dotted, etc).
Je suis aussi de donner une certaine transparence, afin de voir le chevauchement des barres.
Le point est que je voudrais le bord de chaque barre pour ne pas devenir transparent que la partie intérieure.
Voici un exemple:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.random(20)
y =np.random.random(20)
z= np.random.random(20)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.hist(x, bins=np.arange(0, 1, 0.1), ls='dashed', alpha = 0.5, lw=3, color= 'b')
ax.hist(y, bins=np.arange(0, 1, 0.1), ls='dotted', alpha = 0.5, lw=3, color= 'r')
ax.hist(z, bins=np.arange(0, 1, 0.1), alpha = 0.5, lw=3, color= 'k')
ax.set_xlim(-0.5, 1.5)
ax.set_ylim(0, 7)
plt.show()
source d'informationauteur Argentina
Vous devez vous connecter pour publier un commentaire.
plt.hist
accepte de mots-clés supplémentaires arguments qui sont passés au constructeur de lamatplotlib.les patchs.Patch
. En particulier, vous pouvez passer unfc=
argument qui vous permet de régler le patch facecolor à l'aide d'un(R, G, B, A)
tuple lorsque vous créez les histogrammes. La modification de la valeur alpha de la facecolor n'affecte pas la transparence des bords:Je pense que peut-être la chose la plus stupide solution est la plus simple et la meilleure? Juste replot les histogrammes, sans couleur intérieure et sans alpha. Qui devrait replot juste l'histogramme des lignes.
En outre, vous pourriez vouloir éliminer la possibilité d'avoir les lignes/des tirets et des points se chevauchent pas en supprimant totalement le premier histogramme de la parcelle
sans la deuxième commande le graphique doit ressembler à votre figure, sans frontières. Avec le fond 3 de l'histogramme des commandes frontières sont ajoutés pour produire l'image ci-dessous. Fonctionne sur Python3.4 Win7
[coupé, parce que apparemment je n'ai pas assez de rep pour poster des photos]
J'ai besoin d'une solution qui n'a pas besoin de moi pour définir la couleur de façon explicite, c'est à dire, je voulais toujours utiliser la couleur par défaut du cycle. La solution suivante s'appuie sur @ljetibo l'idée de dessiner l'histogramme à deux reprises à l'aide de @ali_m l'idée de l'extrait de l'état de la couleur de cycle:
Noter que la spécification de
color=color
en plus deedgecolor
semble être nécessaire. Sinon, lehist
appel en lui-même incrément de la couleur nouveau cycle.