2015-06-04 17 views
9

ich die folgenden 4x4 Zahlenmatrix habe mit den Nummern 0-4:Konvertieren eine Anzahl Matrix auf eine Farbmatrix in R

0 1 0 3 
3 2 1 4 
4 1 0 2 
3 3 0 1 

Ich mag würde verstehen, wie Zahl konvertieren ein Farbmatrizen Matrizen in der Verwendung gewählt Farben und spezifische quadratische Dimensionen (Länge x Breite) mit R. Um klar zu sein, definiere ich die Farbmatrix als eine Figur unter Verwendung von farbigen Quadraten, um spezifische Werte in einer Matrixorientierung darzustellen. Ein Beispiel 4x4 aus einem anderen Programm folgt:

enter image description here

Ich muß Farbcodes zu den Zahlen, zum Beispiel zu:

0 = FFFFFF 
1 = 99FF66 
2 = 66FF33 
3 = 33CC00 
4 = 009900 

Aber ich weiß nicht, wo diese zusammen beginnen setzen . Ich stelle mir vor, ich müsste auch die Abmessungen für Farbquadrate angeben.

Mein Ziel ist es, einen Datenrahmen mit bis zu 10 numerischen Werten in R importieren zu können und diese Farbdiagramme für Matrizen bis zu 20x20 zu erstellen.

Antwort

10

Hier ist, was ich tun würde:

d<-read.table(text=" 
0 1 0 3 
3 2 1 4 
4 1 0 2 
3 3 0 1") 

cols <- c(
'0' = "#FFFFFF", 
'1' = "#99FF66", 
'2' = "#66FF33", 
'3' = "#33CC00", 
'4' = "#009900" 
) 
# the names aren't necessary here. 

image(1:nrow(d), 1:ncol(d), as.matrix(d), col=cols) 

enter image description here

Wenn Sie es vorziehen, für die Orientierung, anders zu sein, können Sie rotate the matrix:

image(1:nrow(d), 1:ncol(d), t(apply(d, 2, rev)), col=cols) 

aller Um loszuwerden der Text und die Ränder, könnten Sie versuchen:

image(1:nrow(d), 1:ncol(d), as.matrix(d), col=cols, 
    xaxt="n", yaxt="n", bty="n", xlab="", ylab="") 
+0

Ich habe den folgenden Code verwendet, um eine Farbmatrix ohne den Text und Grenzen zu erzeugen: 'Bild (1: nrow (d), 1: ncol (d), t (gelten (d, 2, rev)), col = cols, xaxt = 'n', yaxt = 'n', ann = FALSCH, bty = 'n') ' Es hat wunderbar funktioniert! Das einzige Problem, das ich jetzt habe, ist, dass die Quadrate etwas rechteckig herauskamen. Gibt es eine Möglichkeit, das Seitenverhältnis so zu sperren, dass die Farbquadrate perfekt quadratisch bleiben? – Cameron

+3

@Cameron Sie könnten versuchen, 'asp = 1' als eines der Argumente zu' image' hinzuzufügen: 'image (1: nrow (d), 1: ncol (d), t (apply (d, 2, rev)) , col = Spalten, xaxt = 'n', yaxt = 'n', ann = FALSCH, bty = 'n', asp = 1) '. – Jota

+1

Oder öffne ein neues Fenster mit quadratischen Abmessungen (zB 'windows (width = 6, height = 6)') und setze dann die Ränder als gleich auf jeder Seite 'par (mar = c (1,1,1,1)) ' – thelatemail

Verwandte Themen