2009-10-13 6 views
1

J'ai un programme Python qui génère un histogramme en utilisant matplotlib. Le problème est que les images générées sont parfois recadrées en haut. Tout d'abord, voici l'extrait de code correspondant, où plt est matplotlib.pyplot et fig est matplotlib.figure:L'histogramme de matplotlib est recadré en haut

plt.hist(grades, bins=min(20, maxScore), range=(0,maxScore), figure=fig.Figure(figsize=(3,2), dpi=150)) 
plt.xlabel("Raw Score") 
plt.ylabel("Count") 
plt.title("Raw Score Histogram") 
plt.savefig(histogramFile) 

Le problème apparaît dans une situation comme celle-ci. Je pourrais avoir 300 éléments dans grades, 3 des bacs ont plus de 20 éléments dans eux, et le reste moins de 20. Ceux qui ont plus de 20 auront leurs sommets coupés et l'axe des y va seulement jusqu'à 20 Cela ne se produit pas toujours cependant: 300 éléments différents dans grades avec une distribution similaire peuvent s'afficher correctement, avec la mise à l'échelle de l'axe des y pour s'adapter à figsize. Notez également que l'axe des x sort toujours à droite.

Que puis-je faire pour que l'axe des y soit correctement mis à l'échelle et qu'il produise des barres qui correspondent à l'image?

Répondre

1

Envoyez un rapport de bogue aux développeurs de matplotlib et demandez-leur d'écrire un test sur celui-ci.

Vous devriez pouvoir régler l'axe y avec la fonction ylim: est-ce ce que vous demandez? Pouvez-vous montrer une capture d'écran de votre problème?

+0

Je peux, mais en utilisant 'ylim' le fixe; pour une raison quelconque, hist ne le définit pas toujours correctement. Merci! –

Questions connexes