Jestem pewien, że jest bardziej elegancki sposób to zrobić. W każdym razie, proszę bardzo: ostatnia linia to całkiem blisko odtwarzanie oryginalnego obrazu w pytaniu.
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')))
Jest to bardzo ładne rzeczywiście kwestia techniczna, ale chciałbym także sugerują, że mogą istnieć inne sposoby wyświetlania danych, które byłyby łatwiejsze do interpretacji ... widmo kolor 2D spadłby dość daleko w dół w hierarchii graficznej Clevelanda (chociaż jestem pewien, że nigdy tego nie rozważał) (Patrząc na swoją legendę, wydaje się, że faktycznie masz przestrzeń kolorów * 3D *) –
Witaj Ben, obecnie jest to zgoda moja grupa robocza, że to jest wykres, który chcemy ..chociaż naprawdę mogą być lepsze podejścia wizualne. W moim przypadku ukryta reprezentacja kolorów nie musi być nawet "dokładna". Raczej używam go jako szerokiego wskaźnika dla widzów, aby dowiedzieć się, co oznacza pozycja w samolocie. –
hhm, tak, masz rację. Górny prawy wydaje się zawierać trudniejsze typy gradientów ... –