Tôi chắc chắn có cách thanh lịch hơn để thực hiện việc này. Dù sao, ở đây bạn đi: dòng cuối cùng là một giải trí khá gần của hình ảnh ban đầu của bạn trong câu hỏi.
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')))
Đây là một câu hỏi kỹ thuật rất tốt đẹp thực sự, nhưng tôi cũng sẽ đề nghị rằng có thể có cách khác để hiển thị dữ liệu đó sẽ được dễ dàng hơn để giải thích ... một phổ màu 2D sẽ rơi khá xa hạ bậc của Cleveland về đặc điểm đồ họa (mặc dù tôi chắc chắn ông không bao giờ xem xét nó một cách rõ ràng) (Nhìn vào huyền thoại của bạn, có vẻ như bạn thực sự có một không gian màu * 3D *?) –
Hi Ben, hiện tại đây là sự đồng thuận nhóm làm việc của tôi rằng đây là biểu đồ chúng tôi muốn ..mặc dù thực sự có thể có cách tiếp cận trực quan tốt hơn. Trong trường hợp của tôi, biểu diễn màu cơ bản không cần thậm chí là 'chính xác'. Tôi thích sử dụng nó như là một chỉ báo rộng cho khán giả để có được một ý tưởng về vị trí của chiếc máy bay. –
hhm, vâng, bạn nói đúng. Phía trên bên phải xuất hiện để bao gồm các loại gradient khó khăn hơn ... –