對於每個大約50個人,我有三個因子(set1,set2和set3)。 set1,set2和set3的值是「A」,「B」,「C」。我想製作這些數據的散熱圖樣圖,但圖例顯示了與值相關的顏色(例如,A ='紅色',B ='藍色',C ='黑色')。有什麼建議麼?類似於熱圖的圖,但對於分類變量
謝謝。
對於每個大約50個人,我有三個因子(set1,set2和set3)。 set1,set2和set3的值是「A」,「B」,「C」。我想製作這些數據的散熱圖樣圖,但圖例顯示了與值相關的顏色(例如,A ='紅色',B ='藍色',C ='黑色')。有什麼建議麼?類似於熱圖的圖,但對於分類變量
謝謝。
我決定這將是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"))
類似的情節也可以與基礎製造的圖形。這裏有一個方法使用基地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])
這將產生這張照片。
感謝一個很好的解決方案,我已經upvoted,但我認爲這是在庫中的錯字(重塑),其中「S」是從重塑缺少 – discipulus
謝謝!我們可以有多個圖例,實際上每行有一個圖例,因爲我對不同的行有不同的分類變量,但我只有四行。 – discipulus
是的,但我不知道如何。我鼓勵你提出一個新問題。 –