J'ai besoin d'aide pour définir les limites de l'axe y sur matplotlib. Voici le code que j'ai essayé, sans succès.
import matplotlib.pyplot as plt
plt.figure(1, figsize = (8.5,11))
plt.suptitle('plot title')
ax = []
aPlot = plt.subplot(321, axisbg = 'w', title = "Year 1")
ax.append(aPlot)
plt.plot(paramValues,plotDataPrice[0], color = '#340B8C',
marker = 'o', ms = 5, mfc = '#EB1717')
plt.xticks(paramValues)
plt.ylabel('Average Price')
plt.xlabel('Mark-up')
plt.grid(True)
plt.ylim((25,250))
Avec les données que j'ai pour ce graphique, j'obtiens des limites d'axe y de 20 et 200. Cependant, je veux les limites 20 et 250.
python
matplotlib
Curious2learn
la source
la source
plt.show()
à la fin pour montrer l'intrigue. Quelle version et quel backend utilisez-vous?plt.ylim((25,250))
etplt.ylim(ymax = 250, ymin = 25)
. J'utilise leAgg
backend.axisbg
est désormais obsolèteRéponses:
Essaye ça . Fonctionne également pour les sous-parcelles.
la source
None
qui laisse le calcul à matplotlib, par exempleaxes.set_ylim([ymin,None])
Votre code fonctionne aussi pour moi. Cependant, une autre solution de contournement peut être d'obtenir l'axe du tracé, puis de modifier uniquement les valeurs y:
x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))
la source
Une chose que vous pouvez faire est de définir vous-même la plage de votre axe en utilisant matplotlib.pyplot.axis.
matplotlib.pyplot.axis
0,10 est pour la plage de l'axe x. 0,20 est pour la plage de l'axe y.
ou vous pouvez également utiliser matplotlib.pyplot.xlim ou matplotlib.pyplot.ylim
matplotlib.pyplot.ylim
la source
Vous pouvez instancier un objet à partir de
matplotlib.pyplot.axes
et l'appelerset_ylim()
dessus. Ce serait quelque chose comme ceci:la source
Cela fonctionnait au moins dans la version 2.2.2 de matplotlib:
C'est probablement une bonne façon de configurer par exemple xmin et ymax uniquement, etc.
la source
Pour ajouter à la réponse de @ Hima, si vous souhaitez modifier une limite x ou y actuelle, vous pouvez utiliser ce qui suit.
Je trouve cela particulièrement utile lorsque je souhaite effectuer un zoom arrière ou un zoom avant juste à partir des paramètres de tracé par défaut.
la source
Cela devrait fonctionner. Votre code fonctionne pour moi, comme pour Tamás et Manoj Govindan. Il semble que vous puissiez essayer de mettre à jour Matplotlib. Si vous ne pouvez pas mettre à jour Matplotlib (par exemple si vous n'avez pas les droits administratifs suffisants), peut-être que l'utilisation d'un backend différent avec
matplotlib.use()
pourrait aider.la source
matplotlib.use('PDF')
). J'utilise la version fournie avec la dernière version de la distribution Enthought Python. Pouvez-vous s'il vous plaît voir si cela fonctionne avec le backend PDF. Merci!plt.savefig()
?aPlot =
dans laplt.subplot
ligne, ça marche aussi pour moi. Il semble que si l'on attribue le sous-tracé à une variable comme celle-ci, une autre méthode de définition des limites des axes doit être utilisée. Est-ce vrai?plt.ylim()
applique les limites aux axes actuels, qui sont définis lorsque vous le faitesplt.subplot()
. Je ne peux pas non plus croire que je meplt.subplot()
soucie de la façon dont les axes qu'il renvoie sont utilisés (mis dans une variable ou non, etc.). Je dirais donc que cela devrait fonctionner; cela fonctionne sur ma machine.Juste pour un réglage fin. Si vous souhaitez définir une seule des limites de l'axe et laisser l'autre limite inchangée, vous pouvez choisir une ou plusieurs des instructions suivantes
Jetez un œil à la documentation de xlim et de ylim
la source
Si un axe (généré par un code sous le code affiché dans la question) partage la plage avec les premiers axes, assurez-vous de définir la plage après le dernier tracé de ces axes.
la source