graficos - matplotlib python 3
Matplotlib/pyplot: ¿Cómo aplicar el rango del eje? (4)
Intenta poner la llamada al axis
después de todos los comandos de trazado.
Me gustaría dibujar un gráfico de líneas 2D estándar con pylot, pero forzar los valores de los ejes a estar entre 0 y 600 en la x, y 10k y 20k en la y. Déjame ir con un ejemplo ...
import pylab as p
p.title(save_file)
p.axis([0.0,600.0,1000000.0,2000000.0])
#define keys and items elsewhere..
p.plot(keys,items)
p.savefig(save_file, dpi=100)
Sin embargo, los ejes aún se ajustan al tamaño de los datos. Estoy interpretando el efecto de p.axis para establecer el máximo y el mínimo, sin forzarlos a ser máximo o mínimo. Lo mismo sucede cuando trato de usar p.xlim () etc.
¿Alguna idea?
Gracias.
Llamar a p.plot
después de establecer los límites es el motivo por el cual se está p.plot
. Estás en lo cierto en cuanto a que desactivar el autoescalado obtendrá la respuesta correcta, pero también lo hará cuando xlim()
o ylim()
después de tu comando de plot
.
Utilizo esto bastante para invertir el eje x, trabajo en astronomía y usamos un sistema de magnitud que está al revés (es decir, las estrellas más brillantes tienen una magnitud menor) así que generalmente cambio los límites con
lims = xlim()
xlim([lims[1], lims[0]])
Para responder a mi propia pregunta, el truco es desactivar el escalado automático ...
p.axis([0.0,600.0, 10000.0,20000.0])
ax = p.gca()
ax.set_autoscale_on(False)
Probé todas las respuestas anteriores, y luego resumí una guía de cómo dibujar la imagen de ejes fijos. Se aplicó tanto para show
función como la función savefig
.
antes de trazar:
fig = pylab.figure() ax = fig.gca() ax.set_autoscale_on(False)
Esto es para solicitar un ax
que es una subplot(1,1,1)
.
Durante la trama:
ax.plot(''You plot argument'') # Put inside your argument, like ax.plot(x,y,label=''test'') ax.axis(''The list of range'') # Put in side your range [xmin,xmax,ymin,ymax], like ax.axis([-5,5,-5,200])
Después de la trama:
Para mostrar la imagen:
fig.show()
Para guardar la figura:
fig.savefig(''the name of your figure'')
Descubrí que poner el axis
en la parte frontal del código no funcionará aunque haya configurado autoscale_on
en False
.
Usé este código para crear una serie de animación. Y debajo está el ejemplo de peinar múltiples imágenes de ejes fijos en una animación.