sono certo c'è un più elegante modo per farlo. Ad ogni modo, ecco qua: l'ultima riga è una ricreazione piuttosto ravvicinata della tua immagine originale nella domanda.

library(scales)
four.color.matrix <-
function(mycols){
m <- matrix(NA , 100 , 100)
m[ 1 , 1 ] <- mycols[ 1 ]
m[ 1 , 100 ] <- mycols[ 2 ]
m[ 100 , 1 ] <- mycols[ 3 ]
m[ 100 , 100 ] <- mycols[ 4 ]
m[ 1 , 1:100 ] <- gradient_n_pal(c(mycols[ 1 ] , 'white' , mycols[ 2 ]) , values = c(1 , 50 , 100))(1:100)
m[ 1:100 , 1 ] <- gradient_n_pal(c(mycols[ 1 ] , 'white' , mycols[ 3 ]) , values = c(1 , 50 , 100))(1:100)
m[ 1:100 , 100 ] <- gradient_n_pal(c(mycols[ 2 ] , 'white' , mycols[ 4 ]) , values = c(1 , 50 , 100))(1:100)
m[ 100 , 1:100 ] <- gradient_n_pal(c(mycols[ 3 ] , 'white' , mycols[ 4 ]) , values = c(1 , 50 , 100))(1:100)
a <- gradient_n_pal(c(mycols[ 1 ] , 'white' , mycols[ 4 ]) , values = c(1 , 50 , 100))
diag(m)<-a(1:100)
b <- gradient_n_pal(c(mycols[ 3 ] , 'white' , mycols[ 2 ]) , values = c(1 , 50 , 100))
for(i in 1:(nrow(m) - 1)){
for (j in 1:nrow(m)) if (i + j == nrow(m)+1){
m[i,j] <- b(j)
}
}
for (i in 2:50){
m[ i , i:(101-i) ] <-
gradient_n_pal(c(mycols[ 1 ] , 'white' , mycols[ 2 ]) , values = c(0 , 50 , 100))( i:(101-i))
m[ i:(101-i) , i ] <-
gradient_n_pal(c(mycols[ 3 ] , 'white' , mycols[ 1 ]) , values = c(0 , 50 , 100))((101-i):i)
}
for (i in 51:99){
m[ i , i:(101-i) ] <-
gradient_n_pal(c(mycols[ 3 ] , 'white' , mycols[ 4 ]) , values = c(0 , 50 , 100))( i:(101-i))
m[ i:(101-i) , i ] <-
gradient_n_pal(c(mycols[ 4 ] , 'white' , mycols[ 2 ]) , values = c(0 , 50 , 100))((101-i):i)
}
m
}
z <- four.color.matrix(c('red' , 'yellow' , 'green' , 'blue'))
library(grid)
grid.raster(z)
# original question asked for something like this
grid.raster(four.color.matrix(c('darkgreen' , 'darkgreen' , 'darkred' , 'darkgreen')))
Questa è una bella domanda tecnica in effetti, ma Vorrei anche suggerire che ci potrebbero essere altri modi di visualizzare i dati che sarebbe più facile da interpretare ... uno spettro di colori 2D cadrebbe abbastanza in basso nella gerarchia di Cleveland delle caratteristiche grafiche (anche se sono sicuro che non l'ha mai esplicitamente considerato) (Guardando la tua leggenda, sembra che tu abbia effettivamente uno spazio colore * 3D *? –
Ciao Ben, attualmente questo è il consenso in il mio gruppo di lavoro che questo è il grafico che vogliamo ..anche se potrebbero esserci davvero approcci visivi migliori. Nel mio caso la rappresentazione del colore sottostante non ha nemmeno bisogno di essere 'esatta'. Preferisco usarlo come un ampio indicatore per il pubblico per avere un'idea di cosa significhi una posizione nell'aereo. –
hhm, sì, hai ragione. La parte in alto a destra sembra includere tipi di gradiente più difficili ... –