2012-10-21 32 views
14

對於每個大約50個人,我有三個因子(set1,set2和set3)。 set1,set2和set3的值是「A」,「B」,「C」。我想製作這些數據的散熱圖樣圖,但​​圖例顯示了與值相關的顏色(例如,A ='紅色',B ='藍色',C ='黑色')。有什麼建議麼?類似於熱圖的圖,但對於分類變量

謝謝。

回答

23

我決定這將是easist與GGPLOT2解決這個(我反正):

#recreate a data set 
dat <- data.frame(person=factor(paste0("id#", 1:50), 
    levels =rev(paste0("id#", 1:50))), matrix(sample(LETTERS[1:3], 150, T), ncol = 3)) 

library(ggplot2); library(reshape2) 
dat3 <- melt(dat, id.var = 'person') 
ggplot(dat3, aes(variable, person)) + geom_tile(aes(fill = value), 
    colour = "white") + scale_fill_manual(values=c("red", "blue", "black")) 

enter image description here

+0

感謝一個很好的解決方案,我已經upvoted,但我認爲這是在庫中的錯字(重塑),其中「S」是從重塑缺少 – discipulus

+0

謝謝!我們可以有多個圖例,實際上每行有一個圖例,因爲我對不同的行有不同的分類變量,但我只有四行。 – discipulus

+0

是的,但我不知道如何。我鼓勵你提出一個新問題。 –

3

類似的情節也可以與基礎製造的圖形。這裏有一個方法使用基地image函數。此示例具有分類響應而非數字響應。

dx <- data.frame(Tasks = c('1','2','3','4'), 
        Phase1 = c('Done','Done','Done','WIP'), 
        Phase2 = c('WIP','Done','Done',''), 
        Phase3 = c('','WIP','Done','')) 

ff<-factor(as.matrix(dx[,2:4]), 
    levels=c("Done","WIP",""), 
    labels=c("done","wip","-empty-") 
) 
fx<-matrix(as.numeric(ff), ncol=ncol(dx)-1) 

#use labels to assign colors 
col<-c(done="darkgreen",wip="orange","-empty-"="black") 

imgflip<-function(x) {t(x[nrow(x):1,])} 

image(imgflip(fx), 
    breaks=(1:(nlevels(ff)+1))-.5, 
    col=col[levels(ff)], 
    xaxt="n", yaxt="n" 
) 
axis(2, at=seq(0,1,length.out=nrow(dx)), labels=rev(paste("Task",dx$Tasks)), las=2) 
axis(3, at=seq(0,1,length.out=length(names(dx))-1), labels=names(dx)[-1]) 

這將產生這張照片。

sample image

相關問題