Hola a Tod@s

Estoy tratando de graficar una forma de onda con matplotlib, pero pyplot me
pone por defecto en el eje x el número de muestras del audio, la idea es
que el eje x aparezca en segundos, en este caso e importado un audio
llamado "sax1.wav" que es un audio en estéreo a 16 bits y 44100Hz de
frecuencia de muestreo,

sonido_entrada= wavfile.read("sax1.wav")
freq_sampleo= sonido_entrada[0]

                # a continuación separo los canales L y R y los guardo en
listas diferentes.
l_mas_r = sonido_entrada[1]
canal_l = l_mas_r[:,0]
 canal_r = l_mas_r[:,1]

                # ahora establezco un arange desde 0 hasta la longitud del
audio, esto da                       # como resultado el número de muestras
que tiene el audio
 longitud = np.arange(0,len(l_mas_r))
print longitud

                # después calculo el tiempo en segundos tomando la
frecuencia de muestreo y                 # el número de muestras del audio
 segundos = max(longitud)/float(freq_sampleo)
print segundos

# GRAFICACIÓN
                # Deseo graficar cada canal en un subplot diferente.
                # La línea plt.xticks(np.arange(segundos)) es mi intento
por graficar el eje x en                 # segundos mas no en nro. de
muestras

plt.subplots_adjust(hspace=.1)
plt.subplot(211)
# plt.xticks(np.arange(segundos))
 plt.plot(longitud,canal_l)
plt.xlim(min(longitud),max(longitud))
 plt.subplot(212)
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
plt.plot(longitud,canal_r)
 plt.xlim(min(longitud),max(longitud))
plt.show()

Como se puede observar estoy tratando de graficar el eje x en segundos y no
en nro. de muestras, alguno conoce la forma gen'erica de hacerlo, es decir,
quiero que este c'odigo funcione para diferentes audios, por eso no lo hago
con los xticks de este modo:

xticks([valores,de,x], [r'$valores$',r'$de$',r'$X$'])


Gracias.
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a