2010-09-23 17 views
211

Necesito ayuda para establecer los límites del eje y en matplotlib. Aquí está el código que probé, sin éxito.estableciendo el límite del eje y en matplotlib

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 parcela, consigo límites del eje y de 20 y 200. Sin embargo, quiero que los límites de 20 y 250.

+1

Funciona para mí con Matplotlib 1.0.0 si agrego 'plt.show()' al final para mostrar la trama. ¿Qué versión y qué back-end estás usando? –

+9

Trabajando para mí con Matplotlib 0.98.5.2, Python 2.6.2. Intenté tanto 'plt.ylim ((25,250))' como 'plt.ylim (ymax = 250, ymin = 25)'. Estoy usando el backend 'Agg'. –

+1

Gracias a ambos. Funciona con back-end PDF para usted. – Curious2learn

Respuesta

6

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), puede ser útil utilizar un backend diferente con matplotlib.use().

+0

¡Gracias por su visita! Estoy usando el backend pdf ('matplotlib.use ('PDF')'). Estoy usando la versión que viene con la última versión de Enthought Python Distribution. ¿Puedes ver si funciona con el backend de PDF? ¡Gracias! – Curious2learn

+0

Funciona con el backend de PDF, en Mac OS X. ¿Está seguro de que el archivo de salida efectivamente se actualiza con 'plt.savefig()'? – EOL

+0

Me di cuenta del problema, creo. Si saco 'aPlot =' en la línea 'plt.subplot' también me funciona. Parece que si uno asigna la subtrama a una variable como esa, se debe usar algún otro método para establecer los límites de los ejes. ¿Es eso cierto? – Curious2learn

89

Tu código también funciona para mí. Sin embargo, otra solución puede ser conseguir el eje de la trama ya continuación cambiar sólo los valores de y:

x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))

316

probar esto. También funciona para subtramas.

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

Por cierto, esta es una abreviatura tonta que significa "** g ** et ** ** ** ** a ** xes". –

+1

Lenar, excelente. Escuché este término casualmente, también escuché que se originó en matlab. comentario útil – Arjee

4

Para añadir a la respuesta de @ Hima, si desea modificar una x corriente o límite y se puede utilizar el 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) 

Me resulta especialmente útil cuando quiero alejar o acercar un poco la configuración de trazado predeterminada.

Cuestiones relacionadas