2011-11-17 16 views
6

Devo creare una mappa termica personalizzata come illustrato nella figura allegata. È diverso da una mappa termica convenzionale nel senso che voglio che utilizzi due gradienti di colore, uno per i valori positivi e uno per i valori negativi.Mappa termica personalizzata in R

enter image description here

Come mostrato nella figura allegata, desidero un colore per rappresentare l'intensità dei valori che sono positivi (o idealmente sopra di una certa soglia) e un altro colore per rappresentare l'intensità dei valori che sono negativi (in alternativa, sotto la soglia).

Un po 'di background: ho un set di opzioni binarie, un'opzione è preferibile per un certo intervallo di dati mentre l'altra è preferita per i dati rimanenti. Voglio fornire un aiuto visivo che descriva quale opzione/scelta è migliore per le diverse combinazioni di dati, ma voglio che l'aiuto visivo fornisca anche la scala di "betterness" che una opzione ha sull'altra per quell'istanza. Quindi il colore direbbe quale opzione scegliere mentre l'intensità del colore indica quanto è migliore l'opzione rispetto all'altra.

+0

Questo si chiama una tavolozza di colori divergenti, e c'è un sacco di loro nel pacchetto RColorBrewer. Fintanto che è centrato correttamente su 0, allora è la cosa giusta da fare. – Spacedman

risposta

9

Ecco un esempio utilizzando ggplot2:

# sample data 
df <- data.frame(expand.grid(x = 1:4, y = 1:4), v = runif(16, -10, 10)) 

# plot 
ggplot(df, aes(x, y, fill = v, label = sprintf("%.1f", v))) + 
    geom_tile() + geom_text() + 
    scale_fill_gradient2(low = "blue", high = "red") 

enter image description here

+0

Grazie, questo funziona. – Arjun

+0

Questo è un bit di codice davvero eccellente e utile, grazie! – mfk534

Problemi correlati