python - real - estableciendo limite del eje y en matplotlib
matplotlib title position (7)
Necesito ayuda para establecer los límites del eje y en matplotlib. Aquí está el código que intenté, 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 los límites 20 y 250.
Esto debería funcionar. Tu código funciona para mí, como para Tamás y Manoj Govindan. Parece que podrías intentar actualizar Matplotlib. Si no puede actualizar Matplotlib (por ejemplo, si no tiene suficientes derechos administrativos), tal vez le matplotlib.use()
usar un backend diferente con matplotlib.use()
.
Esto funcionó al menos en la versión 2.2.2 de matplotlib:
plt.axis([None, None, 0, 100])
Probablemente esta es una buena forma de configurar, por ejemplo, solo xmin y 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 solo un poco de la configuración de trazado predeterminada.
Prueba esto . Funciona para subplots también.
axes = plt.gca()
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])
Si un eje (generado por el código debajo del código que se muestra en la pregunta) comparte el rango con los primeros ejes, asegúrese de establecer el rango después de la última gráfica de esos ejes.
Tu código funciona también para mí. Sin embargo, otra solución puede ser obtener el eje de la trama y luego cambiar solo los valores de y:
x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))
Una cosa que puedes hacer es establecer tu rango de ejes por ti 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)