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/