alguien
¿Cómo puedo configurar el rango del eje y de la segunda subtrama, 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 ningún efecto, por desgracia. Este es el guión 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()
¡También se agradecen otras mejoras!
alguien
Tú tienes pylab.ylim
:
pylab.ylim([0,1000])
Nota: ¡El comando debe ejecutarse después de la trama!
Actualización 2021
Ya que el uso de pylab ahora está fuertemente desaconsejado por matplotlibdeberías usar pyplot en su lugar:
from matplotlib import pyplot as plt
plt.ylim(0, 100)
#corresponding function for the x-axis
plt.xlim(1, 1000)
-
Cada vez que hago esto, voltea las imágenes al revés.
– ely
6 de diciembre de 2011 a las 1:52
-
si uso esto con hexbin, usa ylim después de plot() expone el fondo blanco en ambas parcelas
– linceide
19 de junio de 2013 a las 19:23
-
¿Qué pasa si no estás usando plot, sino savefig?
– ben
21 de diciembre de 2013 a las 4:39
-
Llamar
plot()
despuésylim()
y entoncessavefig()
.– therealrootuser
15 de abril de 2015 a las 4:01
-
en subtramas es
set_ylim()
.– javerim
2 de julio de 2021 a las 19:43
ʀᴏʙ
Usando hachas objetos es un gran enfoque para esto. Ayuda si desea interactuar con múltiples figuras y subtramas. 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()
-
Como sugiere Rob, la interfaz OO en matplotlib es preferible a la interfaz pylab basada en estado. “Aunque muchos ejemplos usan pylab, ya no se recomienda. Para el trazado no interactivo, se sugiere usar pyplot para crear las figuras y luego la interfaz OO para el trazado”. matplotlib.org/faq/…
– Bennet Brown
8 de julio de 2017 a las 3:09
A veces realmente quieres establecer los límites de los ejes. antes de usted traza los datos. En ese caso, puede configurar la función de “autoescalado” de la Axes
o AxesSubplot
objeto. 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 el autoscaley_on
propiedad a False
. Aquí hay una versión modificada del fragmento de subparcela 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))
Si conoce el eje exacto que desea, entonces
pylab.ylim([0,1000])
funciona como se respondió anteriormente. Pero si desea un eje más flexible que se ajuste a sus datos exactos, como hice cuando encontré esta pregunta, establezca el límite del eje para que sea la longitud de su conjunto de datos. Si su conjunto de datos es fft
como en la pregunta, luego agregue esto después de su comando de trama:
length = (len(fft))
pylab.ylim([0,length])
Si tiene varias subtramas, es decir,
fig, ax = plt.subplots(4, 2)
Puede usar los mismos límites y para todos ellos. Obtiene los límites del eje y del primer gráfico.
plt.setp(ax, ylim=ax[0,0].get_ylim())
Consulte también stackoverflow.com/questions/15858192/…
– tacoswell
7 junio 2015 a las 18:54
¿Responde esto a tu pregunta? establecer el límite del eje y en matplotlib
– iacob
24/03/2021 a las 20:37