私は、約50人ごとに3つの要素(set1、set2、およびset3)を持っています。 set1、set2、およびset3の値は、 "A"、 "B"、 "C"です。私はこれらのデータのヒートマップのようなプロットを作成したいが、伝説に値(例えば、A = '赤'、B = '青'、C = '黒')と関連付けられている色を示す。助言がありますか?ヒートマップのようなプロットですが、カテゴリ変数の場合
ありがとうございました。
私は、約50人ごとに3つの要素(set1、set2、およびset3)を持っています。 set1、set2、およびset3の値は、 "A"、 "B"、 "C"です。私はこれらのデータのヒートマップのようなプロットを作成したいが、伝説に値(例えば、A = '赤'、B = '青'、C = '黒')と関連付けられている色を示す。助言がありますか?ヒートマップのようなプロットですが、カテゴリ変数の場合
ありがとうございました。
私は(とにかく私のために)ggplot2でこれをアプローチするeasistだろうことを決めた:
#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
関数を使用する1つのメソッドです。このサンプルには、数値的ではなくカテゴリ的な応答があります。
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
感謝があると思います!行ごとに異なることを意味するカテゴリ変数があるので、私は複数の伝説、つまり行ごとに1つの伝説を持つことができますが、それらの行は4つしかありません。 – discipulus
はい、どうしたらいいかわかりません。新しい質問をすることをお勧めします。 –