tiempo real matrices graficos graficas graficar ejes coordenadas python range axis matplotlib

real - matplotlib python 3



Python, Matplotlib, subplot: ¿Cómo configurar el rango del eje? (3)

A veces realmente desea establecer los límites de los ejes antes de trazar los datos. En ese caso, puede configurar la función de "escala automática" del objeto AxesSubplot . Las funciones de interés son set_autoscale_on , set_autoscalex_on y set_autoscaley_on .

En su caso, desea congelar los límites del eje y, pero permitir que el eje x se expanda para acomodar sus datos. Por lo tanto, desea cambiar la propiedad autoscaley_on a False . Aquí hay una versión modificada del fragmento de subplot de FFT de su código:

fft_axes = pylab.subplot(h,w,2) pylab.title("FFT") fft = scipy.fft(rawsignal) pylab.ylim([0,1000]) fft_axes.set_autoscaley_on(False) pylab.plot(abs(fft))

¿Cómo puedo configurar el rango del eje y de la segunda trama secundaria en, por ejemplo, [0,1000]? El gráfico FFT de mis datos (una columna en un archivo de texto) da como resultado un pico (inf.?) Para que los datos reales no sean visibles.

pylab.ylim([0,1000])

no tiene efecto, por desgracia. Este es el script completo:

# based on http://www.swharden.com/blog/2009-01-21-signal-filtering-with-python/ import numpy, scipy, pylab, random xs = [] rawsignal = [] with open("test.dat", ''r'') as f: for line in f: if line[0] != ''#'' and len(line) > 0: xs.append( int( line.split()[0] ) ) rawsignal.append( int( line.split()[1] ) ) h, w = 3, 1 pylab.figure(figsize=(12,9)) pylab.subplots_adjust(hspace=.7) pylab.subplot(h,w,1) pylab.title("Signal") pylab.plot(xs,rawsignal) pylab.subplot(h,w,2) pylab.title("FFT") fft = scipy.fft(rawsignal) #~ pylab.axis([None,None,0,1000]) pylab.ylim([0,1000]) pylab.plot(abs(fft)) pylab.savefig("SIG.png",dpi=200) pylab.show()

¡Otras mejoras también son apreciadas!



Usar objetos de ejes es un gran enfoque para esto. Ayuda si desea interactuar con múltiples figuras y subparcelas. Para agregar y manipular los objetos de ejes directamente:

import matplotlib.pyplot as plt fig = plt.figure(figsize=(12,9)) signal_axes = fig.add_subplot(211) signal_axes.plot(xs,rawsignal) fft_axes = fig.add_subplot(212) fft_axes.set_title("FFT") fft_axes.set_autoscaley_on(False) fft_axes.set_ylim([0,1000]) fft = scipy.fft(rawsignal) fft_axes.plot(abs(fft)) plt.show()