J'ai besoin d'aide pour définir les limites de l'axe des ordonnées 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 dont je dispose pour ce tracé, les limites de l'axe des y sont 20 et 200. Cependant, je veux les limites 20 et 250.
Essaye ça . Fonctionne aussi pour les intrigues secondaires.
axes = plt.gca()
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])
Votre code fonctionne aussi pour moi. Toutefois, une autre solution consiste à obtenir l’axe du graphe et à ne modifier que les valeurs y:
x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))
Une chose à faire est de définir vous-même la plage de vos axes en utilisant matplotlib.pyplot.axis.
matplotlib.pyplot.axis
from matplotlib import pyplot as plt
plt.axis([0, 10, 0, 20])
0,10 correspond à la plage de l'axe des x ..__ 0,20 correspond à la plage de l'axe des y.
ou vous pouvez également utiliser matplotlib.pyplot.xlim ou matplotlib.pyplot.ylim
matplotlib.pyplot.ylim
plt.ylim(-2, 2)
plt.xlim(0,10)
Pour ajouter à la réponse de @ Hima, vous pouvez utiliser les éléments suivants si vous souhaitez modifier une limite x ou y actuelle.
import numpy as np # you probably alredy do this so no extra overhead
fig, axes = plt.subplot()
axes.plot(data[:,0], data[:,1])
xlim = axes.get_xlim()
# example of how to zoomout by a factor of 0.1
factor = 0.1
new_xlim = (xlim[0] + xlim[1])/2 + np.array((-0.5, 0.5)) * (xlim[1] - xlim[0]) * (1 + factor)
axes.set_xlim(new_xlim)
Je trouve cela particulièrement utile lorsque je souhaite effectuer un zoom arrière ou un zoom avant à partir des paramètres de tracé par défaut.
Cela devrait marcher. Votre code fonctionne pour moi, comme pour Tamás et Manoj Govindan. Il semblerait que vous puissiez essayer de mettre à jour Matplotlib. Si vous ne pouvez pas mettre à jour Matplotlib (par exemple, si vous disposez de droits d’administrateur insuffisants), peut-être que l’utilisation d’un backend différent avec matplotlib.use()
pourrait vous aider.
Cela a fonctionné au moins dans la version 2.2.2 de matplotlib:
plt.axis([None, None, 0, 100])
C’est probablement une bonne façon de configurer, par exemple, xmin et ymax uniquement, etc.
Vous pouvez instancier un objet à partir de matplotlib.pyplot.axes
et appeler la set_ylim()
dessus. Ce serait quelque chose comme ça:
import matplotlib.pyplot as plt
axes = plt.axes()
axes.set_ylim([0, 1])
Si un axe (généré par un code inférieur au code indiqué dans la question) correspond à partage la plage avec les premiers axes, veillez à définir la plage après le dernier tracé de ces axes.