web-dev-qa-db-fra.com

définition de la limite d'axe y dans matplotlib

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.

276
Curious2learn

Essaye ça . Fonctionne aussi pour les intrigues secondaires.

axes = plt.gca()
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])
430
Hima

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))

103
thetarro

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)
21
Birat Bose

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.

9
Steven C. Howell

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.

6
Eric O Lebigot

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.

2
Antti A

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])
0
Reza Keshavarz

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.

0
Rainald62