Comment pourrais-je définir les étiquettes x_axis aux indices 1,2,3 .... n pour être quelque chose de différent.
lam_beta = [(lam1,beta1),(lam1,beta2),(lam1,beta3),....(lam_n,beta_n)]
chunks = [chunk1,chunk2,...chunk_n]
ht_values_per_chunk = {chunk1:[val1,val2,...],chunk2:[val1,val2,val3,.....]...}
color='rgbycmk'
j=0
for chunk in chunks:
plt.plot([hr_values_per_chunk[chunk][i] for i,item in enumerate(lam_beta)],[i for i,item in enumerate(lam_beta)],color=j%len(color))
j+=1
plt.set_xticks([i for i,item in enumerate(lam_beta)])
plt.set_xticklabels([item for item in lam_beta],rotation='vertical')
plt.show()
Erreur:
AttributeError: l'objet 'module' n'a pas d'attribut 'set_xticks'
Ici, je ne peux pas définir les valeurs du lambda_beta Tuple comme étant les valeurs de chacun des ticks sur l'axe des x car il dit que plt n'a pas une telle méthode. Comment pourrais-je y parvenir pour plt? J'ai utilisé des xticks car c'est ainsi que je l'avais fait en générant un histogramme dans matplotlib. Toute aide serait appréciée. Merci d'avance!
set_xticks et set_xticklabels sont des méthodes d'axes, pas des fonctions dans l'espace de noms du module plt
. C'est la signification du message d'erreur, 'module' object has no attribute 'set_xticks'
.
De plus,
[i for i,item in enumerate(lam_beta)]
peut être simplifié en
range(len(lam_beta))
et
[item for item in lam_beta]
peut être simplifié en
lam_beta
Un moyen pratique de mettre la main sur le axes
est d'appeler plt.subplots :
Alors:
fig, ax = plt.subplots()
...
ax.set_xticks(range(len(lam_beta)))
ax.set_xticklabels(lam_beta, rotation='vertical')
ax
est un objet Axes
. L'appel des méthodes Axes
est l'approche orientée objet de l'utilisation de matplotlib.
Vous pouvez également utiliser l'interface pylab
de style Matlab en appelant plt.xticks
. Si nous définissons
loc = range(len(lam_beta))
labels = lam_beta
puis
plt.xticks(loc, labels, rotation='vertical')
est équivalent à
fig, ax = plt.subplots()
ax.set_xticks(loc)
ax.set_xticklabels(labels, rotation='vertical')
plt.xticks
définit les emplacements et les étiquettes des graduations sur les axes actuels.
La compréhension de la liste
[hr_values_per_chunk[chunk][i] for i,item in enumerate(lam_beta)]
pourrait être simplifié
hr_values_per_chunk[chunk][:len(lam_beta)]
Et vous pouvez éviter de définir le paramètre color
pour chaque appel à ax.plot
en utilisant ax.set_color_cycle :
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
lam_beta = [(lam1,beta1),(lam1,beta2),(lam1,beta3),....(lam_n,beta_n)]
chunks = [chunk1,chunk2,...chunk_n]
ht_values_per_chunk = {chunk1:[val1,val2,...],chunk2:[val1,val2,val3,.....]...}
color='rgbycmk'
ax.set_color_cycle(colors)
for chunk in chunks:
vals = hr_values_per_chunk[chunk][:len(lam_beta)]
ax.plot(vals, range(len(lam_beta)))
ax.set_xticks(range(len(lam_beta)))
ax.set_xticklabels(lam_beta, rotation='vertical')
plt.show()