2013-12-12 2 views
2

В отчете я хотел бы представить матрицу изменений состояния между датами. Допустим, у меня есть матрица вроде этого:R: Предопределенные цвета фона для матрицы

B = data.frame(c(0, 0, 0, 5, 0, 0,5,0,0,5,0,0,5,0,0,0), nrow=4, ncol=4) 
dimnames(B)<-list(c("A","B","C","D"),c("D","C","B","A")) 

B будет что-то вроде этого:

D C B A 
A 0 0 0 5 
B 0 0 5 0 
C 0 5 0 0 
D 5 0 0 0 

Любое изменение от D-> C-> B-> A будет улучшение и изменения из A-> B-> C-> D была бы проблемой.

Я бы хотел, чтобы это было представлено (будет использовано в документе для ножей) с нейтральным цветом фона в диагонали (5 в моей матрице), а затем зеленым справа от диагонали (улучшение) и красным до левая (проблема). Любое предложение, как это сделать? Номера должны появляться в любом случае и не должны изменять цвета фона.

Любые дополнительные предложения по альтернативам для представления этого приветствуются.

ответ

4

Новая версия без «ручной» матрицы для image команды

## the input data as vector (as in the question) 
## size has to be a square number 
values <- c(0, 0, 0, 5, 0, 0,5,0,0,5,0,0,5,0,0,0) 

size <- sqrt(length(values)) 
a <- matrix(0, nrow=size, ncol=size) 
a[lower.tri(a)] <- +1 
a[upper.tri(a)] <- -1 
image(a,col=c('red','transparent','green'),xaxt='n',yaxt='n',xlab='',ylab='') 
text(rep(seq(1,0,len=size),len=size*size),rep(seq(0,1,len=size),each=size),values) 
+0

Как создать значение матрицы? рукой? – agstudy

+0

@agstudy: да, но я обновил ответ с помощью не ручной работы. –

+0

@ Jörg Да, вы отлично! Решение отлично работает. Спасибо. Я получаю свое «матричное» значение от xtabs, сделанного с довольно большим фреймворком данных, и в итоге получим матрицу с переменным размером (8x8 или 9x9). Любое предложение о том, как использовать этот выход xtabs с вашим решением? – Tnunes

Смежные вопросы