curioso2aprender
Necesito ayuda para establecer los límites del eje y en matplotlib. Aquí está el código que probé, sin éxito.
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))
Con los datos que tengo para esta gráfica, obtengo límites del eje y de 20 y 200. Sin embargo, quiero que los límites sean 20 y 250.
hima
Obtener el eje actual a través de plt.gca()
y luego establezca sus límites:
ax = plt.gca()
ax.set_xlim([xmin, xmax])
ax.set_ylim([ymin, ymax])
-
Por cierto, esta es una abreviatura tonta que significa “gramoy el Cactual axes”.
– Lenar Hoyt
8 mayo 2017 a las 10:57
-
también puede establecer un valor
None
lo que deja el cálculo a matplotlib, por ejemploaxes.set_ylim([ymin,None])
– linqu
13 de septiembre de 2018 a las 10:14
-
Hay otras opciones en lugar de usar
None
como en la publicación de @linqu:set_ylim(bottom=None, top=None, [...], *, ymin=None, ymax=None)
.bottom
yymin
(equivalente) para mínimo.top
yymax
) equivalente al máximo. No puedes usar ambosbottom
yymin
En seguida. Lo mismo contop
yymax
.– MaciekS
4 de noviembre de 2021 a las 8:24
Una cosa que puede hacer es configurar el rango de su eje usted mismo usando matplotlib.pyplot.axis.
matplotlib.pyplot.axis
from matplotlib import pyplot as plt
plt.axis([0, 10, 0, 20])
0,10 es para el rango del eje x. 0,20 es para el rango del eje y.
o también puede usar matplotlib.pyplot.xlim o matplotlib.pyplot.ylim
matplotlib.pyplot.ylim
plt.ylim(-2, 2)
plt.xlim(0,10)
-
También puede arreglar solo uno de los ejes como:
plt.ylim(-2, None)
,plt.xlim(None, 10)
– xmantas
18 de febrero a las 15:41
el tarro
Otra solución es obtener los ejes de la gráfica y reasignarlos cambiando solo los valores de y:
x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))
-
No necesitas agarrar
x1
yx2
puede hacer que matplotlib infiera esto conNone
.– iacob
24/03/2021 a las 20:35
Reza Keshavarz
Puede instanciar un objeto desde matplotlib.pyplot.axes
y llama al set_ylim()
en eso. Sería algo como esto:
import matplotlib.pyplot as plt
axes = plt.axes()
axes.set_ylim([0, 1])
amado.por.jesus
Solo para afinar. Si desea establecer solo uno de los límites del eje y dejar el otro límite sin cambios, puede elegir una o más de las siguientes declaraciones
plt.xlim(right=xmax) #xmax is your value
plt.xlim(left=xmin) #xmin is your value
plt.ylim(top=ymax) #ymax is your value
plt.ylim(bottom=ymin) #ymin is your value
antti a
Esto funcionó al menos en matplotlib versión 2.2.2:
plt.axis([None, None, 0, 100])
Probablemente esta sea una buena manera de configurar, por ejemplo, solo xmin e ymax, etc.
Para agregar a la respuesta de @ Hima, si desea modificar un límite x o y actual, puede usar lo siguiente.
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)
Encuentro esto particularmente útil cuando quiero alejar o acercar un poco la configuración de trazado predeterminada.
Funciona para mí con Matplotlib 1.0.0 si agrego
plt.show()
al final para mostrar la trama. ¿Qué versión y qué backend estás usando?– Tamas
23 de septiembre de 2010 a las 11:41
Trabajando para mí con Matplotlib 0.98.5.2, Python 2.6.2. Probé ambos
plt.ylim((25,250))
yplt.ylim(ymax = 250, ymin = 25)
. estoy usando elAgg
back-end– Manoj Govindan
23 de septiembre de 2010 a las 11:50
nota:
axisbg
ahora está en desuso– SherylHohman
26 de marzo de 2017 a las 19:34
plt.ylim
es la solución correcta y moderna a este problema. Aquí hay un buen recurso: showmecode.info/matplotlib/axes/set-limits– luc
25/06/2020 a las 20:50
@luc: o más orientado a objetos usando un miembro de objeto hacha
ax.set_xlim
(también descrito en la página que vinculó)– minutos
26 de noviembre de 2020 a las 11:43