Sto provando ad aggiungere una barra colori a uno spettrogramma. Ho provato ogni thread di domande e domande che ho trovato online e nessuno ha risolto questo problemaAggiunta della barra colori a uno spettrogramma
Nota che 'spl1' (data splice 1) è una traccia di ObsPy.
Il mio codice è:
fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.75, 0.7, 0.2]) #[left bottom width height]
ax2 = fig.add_axes([0.1, 0.1, 0.7, 0.60], sharex=ax1)
ax3 = fig.add_axes([0.83, 0.1, 0.03, 0.6])
t = np.arange(spl1[0].stats.npts)/spl1[0].stats.sampling_rate
ax1.plot(t, spl1[0].data, 'k')
ax,spec = spectrogram(spl1[0].data,spl1[0].stats.sampling_rate, show=False, axes=ax2)
ax2.set_ylim(0.1, 15)
fig.colorbar(spec, cax=ax3)
viene fuori con l'errore:
Traceback (most recent call last):
File "<ipython-input-18-61226ccd2d85>", line 14, in <module>
ax,spec = spectrogram(spl1[0].data,spl1[0].stats.sampling_rate, show=False, axes=ax2)
TypeError: 'Axes' object is not iterable
miglior risultato finora:
Sostituzione delle ultime 3 righe di cui sopra con:
ax = spectrogram(spl1[0].data,spl1[0].stats.sampling_rate, show=False, axes=ax2)
ax2.set_ylim(0.1, 15)
fig.colorbar(ax,cax=ax3)
e questo errore per il colorbar:
axes object has no attribute 'autoscale_None'
Non mi sembra di essere in grado di trovare un modo per ottenere la barra colorata sul diritto al lavoro.
Soluzioni?
Una delle soluzioni che ho visto è che è necessario creare un 'immagine' dei dati usando imshow(), tuttavia non ottengo un output per quello da Spectrogram(), solo 'ax'. Ho visto i posti provare con l'output 'ax, spec' da spectrogram() ma sta causando l'errore TypeError.
- codice molto simile che ho trovato, ma non ha funzionato https://www.nicotrebbin.de/wp-content/uploads/2012/03/bachelorthesis.pdf ('colorbar' Ctrl + F)
- Guardò esempi di codice from a related question
- imshow() suggestions e example - non possono ottenere un output da spettrogramma per trasformarsi in un'immagine. Questo secondo link, anche io non può ottenere il modulo di mlpy al lavoro (non credo che ci sia una funzione mlpy.wavelet)
- Questo problema è stato affrontato in an improvement post for obspy ma la soluzione ha dichiarato ha trovato non è stato dato
Spero che qualcuno possa dare una mano con questo - ci ho lavorato tutto il giorno!
Avete tracciato con successo uno spettrogramma senza colorbar? Qual è la funzione '' spectrogram'' (da quale libreria) stai usando? – gsmafra
@gsmafra Ho aggiornato il post in alto con maggiori informazioni - Posso ottenere lo spettrogramma per tracciare normalmente sì. La funzione spettrogramma proviene da: obspy.imaging.spectrogram.spectrogram (in quanto ha una funzionalità incorporata più semplice) - anche se al di sotto utilizza la discussione specgram – mjp
in: https://github.com/obspy/obspy/issues/1086 che ha una trama colorbar di successo Non funziona per la mia situazione, ma se si trova una soluzione lì, aggiungerò la soluzione anche qui. – mjp