3 votes

hachure de plus d'une série de données dans un histogramme

Lorsque je colorie un histogramme, il accepte une liste pour les différentes couleurs, cependant, pour les hachures, il n'accepte qu'une seule valeur.

Voici le code :

import numpy as np
import matplotlib.pylab as plt

data = [np.random.rand(100) + 10 * i for i in range(3)]
ax1 = plt.subplot(111)

n, bins, patches = ax1.hist(data, 20, histtype='bar',
                        color=['0', '0.33', '0.66'],
                        label=['normal I', 'normal II', 'normal III'],
                        hatch= ['', 'o', '/'])

Comment puis-je avoir des hachures différentes pour les différentes séries ?

5voto

wflynny Points 11141

Malheureusement, il ne semble pas que hist supporte les hachures multiples pour les tracés multi-séries. Cependant, vous pouvez contourner ce problème avec ce qui suit :

import numpy as np
import matplotlib.pylab as plt    

data = [np.random.rand(100) + 10 * i for i in range(3)]
ax1 = plt.subplot(111)

n, bins, patches = ax1.hist(data, 20, histtype='bar',
                        color=['0', '0.33', '0.66'],
                        label=['normal I', 'normal II', 'normal III'])

hatches = ['', 'o', '/']
for patch_set, hatch in zip(patches, hatches):
    for patch in patch_set.patches:
        patch.set_hatch(hatch)

L'objet patches retourné par hist est une liste de BarContainer dont chacun contient un ensemble de Patch (en BarContainer.patches ). Ainsi, vous pouvez accéder à chaque objet patch et définir ses hachures de manière explicite.

ou comme @MadPhysicist l'a souligné, vous pouvez utiliser plt.setp sur chaque patch_set donc la boucle peut être raccourcie à :

for patch_set, hatch in zip(patches, hatches):
    plt.setp(patch_set, hatch=hatch)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X