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 este gráfico, obtengo límites del eje y de 20 y 200. Sin embargo, quiero los límites 20 y 250.
python
matplotlib
Curious2learn
fuente
fuente
plt.show()
al final para mostrar la trama. ¿Qué versión y qué backend estás usando?plt.ylim((25,250))
yplt.ylim(ymax = 250, ymin = 25)
. Estoy usando elAgg
backend.axisbg
ahora está en desusoRespuestas:
Prueba esto . Funciona para subtramas también.
fuente
None
que deje el cálculo en matplotlib, por ejemploaxes.set_ylim([ymin,None])
Tu código también funciona para mí. Sin embargo, otra solución puede ser obtener el eje del gráfico y luego cambiar solo los valores y:
x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))
fuente
Una cosa que puede hacer es establecer su rango de eje usted mismo utilizando matplotlib.pyplot.axis.
matplotlib.pyplot.axis
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
fuente
Puede crear una instancia de un objeto
matplotlib.pyplot.axes
y llamarloset_ylim()
. Sería algo como esto:fuente
Esto funcionó al menos en matplotlib versión 2.2.2:
Probablemente esta sea una buena manera de configurar, por ejemplo, solo xmin e ymax, etc.
fuente
Para agregar a la respuesta de @ Hima, si desea modificar un límite x o y actual, puede usar lo siguiente.
Encuentro esto particularmente útil cuando quiero alejar o acercar un poco desde la configuración de trazado predeterminada.
fuente
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 tiene derechos administrativos insuficientes), tal vez
matplotlib.use()
podría ser útil usar un backend diferente .fuente
matplotlib.use('PDF')
). Estoy usando la versión que viene con la última versión de la distribución Enthought Python. ¿Puedes ver si funciona con el backend PDF? ¡Gracias!plt.savefig()
?aPlot =
en laplt.subplot
línea, a mí también me funciona. Parece que si se asigna la subtrama a una variable como esa, se debe utilizar algún otro método para establecer los límites de los ejes. ¿Es eso cierto?plt.ylim()
aplica los límites a los ejes actuales, que se establecen cuando lo haceplt.subplot()
. Tampoco puedo creer que meplt.subplot()
importe cómo se usan los ejes que devuelve (poner en una variable o no, etc.). Entonces diría que debería funcionar; funciona en mi máquinaSolo para un ajuste fino. Si desea establecer solo uno de los límites del eje y dejar que el otro límite no cambie, puede elegir una o más de las siguientes afirmaciones
Eche un vistazo a la documentación para xlim y para ylim
fuente
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 del último diagrama de esos ejes.
fuente