Plot in matlab con limiti diversi di colori colorbar/colormap
Salve a tutti.
Sto cercando di plottare con imagesc una matrice su matlab e ho bisogno del vostro aiuto.
Il mio codice è il seguente:
load Corr_matrix_IMS_All_Riordinato_Uncorrelated.txt
Valore_vect=min(Corr_matrix_IMS_All_Riordinato_Uncorrelated);
Min_matrix=min(Valore_vect);
Valore_vect_max=max(Corr_matrix_IMS_All_Riordinato_Uncorrelated);
Max_matrix=max(Valore_vect_max);
imagesc(Corr_matrix_IMS_All_Riordinato_Uncorrelated)
colormap(gray(4))
colorbar
caxis([Min_matrix Max_matrix]);
Metto in allegato la figura che ottengo dal codice.
Il problema che riscontro riguarda i limiti dei colori. Mettendo 4 colori, matlab equispazia tra il valore minimo (circa -1.55) e valore massimo (1).
Io vorrei mettere quattro colori in scala di grigio nei seguenti intervalli: da -0.55 a 0; da 0 a 0.5; da 0.5 a 0.9; da 0.9 a 1.
Purtroppo sto tribolando da 2 giorni e spero in un vostro aiuto.
Grazie mille in anticipo.
Sto cercando di plottare con imagesc una matrice su matlab e ho bisogno del vostro aiuto.
Il mio codice è il seguente:
load Corr_matrix_IMS_All_Riordinato_Uncorrelated.txt
Valore_vect=min(Corr_matrix_IMS_All_Riordinato_Uncorrelated);
Min_matrix=min(Valore_vect);
Valore_vect_max=max(Corr_matrix_IMS_All_Riordinato_Uncorrelated);
Max_matrix=max(Valore_vect_max);
imagesc(Corr_matrix_IMS_All_Riordinato_Uncorrelated)
colormap(gray(4))
colorbar
caxis([Min_matrix Max_matrix]);
Metto in allegato la figura che ottengo dal codice.
Il problema che riscontro riguarda i limiti dei colori. Mettendo 4 colori, matlab equispazia tra il valore minimo (circa -1.55) e valore massimo (1).
Io vorrei mettere quattro colori in scala di grigio nei seguenti intervalli: da -0.55 a 0; da 0 a 0.5; da 0.5 a 0.9; da 0.9 a 1.
Purtroppo sto tribolando da 2 giorni e spero in un vostro aiuto.
Grazie mille in anticipo.

Risposte
Non conosco la risposta ma ho trovato del materiale che potrebbe esserti utile:
https://stackoverflow.com/questions/17230837/how-to-create-a-custom-colormap-programmatically
https://stackoverflow.com/questions/20613841/how-to-generate-a-non-linear-colormap-colorbar/20629872#20629872
https://it.mathworks.com/help/matlab/ref/colormapeditor.html
https://stackoverflow.com/questions/17230837/how-to-create-a-custom-colormap-programmatically
https://stackoverflow.com/questions/20613841/how-to-generate-a-non-linear-colormap-colorbar/20629872#20629872
https://it.mathworks.com/help/matlab/ref/colormapeditor.html
Confermo che il modo più veloce per ottenere il risultato rchiesto è usare il [tt]colormapeditor[/tt].
Ti mostro un esempio di quello che si può fare
Osserva che non ho diviso l'intervallo di colori in 4 parti ma in un numero elevato di parti.
Digito [tt]colormapeditor[/tt] nella command window.
Ora aggiungo delle tacche per creare gli intervalli voluti. Nota bene che la tacca memorizza il colore in cui è stata creata.
Quindi creo una tacca subito a destra della prima tacca nera e la trascino fin dove voglio per creare il primo intervallo. Poi creo una tacca subito a destra di questa e la trascino e così via.
Ti mostro un esempio di quello che si può fare
surf(peaks) colormap(gray(100)) colorbar
Osserva che non ho diviso l'intervallo di colori in 4 parti ma in un numero elevato di parti.
Digito [tt]colormapeditor[/tt] nella command window.
Ora aggiungo delle tacche per creare gli intervalli voluti. Nota bene che la tacca memorizza il colore in cui è stata creata.
Quindi creo una tacca subito a destra della prima tacca nera e la trascino fin dove voglio per creare il primo intervallo. Poi creo una tacca subito a destra di questa e la trascino e così via.