У меня есть Z-баллы matrix
:Общих условные обозначения для Z-баллов и соответствующих р-значение в тепловой карте
set.seed(1)
z.score.mat <- matrix(rnorm(1000),nrow=100,ncol=10)
, которые являются результатом некоторых биологических экспериментальных данных, а соответствующая матрица р-значения :
p.val.mat <- pnorm(abs(z.score.mat),lower.tail = F)
Оба имеют идентичные dimnames
:
rownames(z.score.mat) <- paste("p",1:100,sep="")
colnames(z.score.mat) <- paste("c",1:10,sep="")
rownames(p.val.mat) <- paste("p",1:100,sep="")
colnames(p.val.mat) <- paste("c",1:10,sep="")
Я сюжет тин иерархически кластерный heatmap
из Z-оценки, как это:
hc.col <- hclust(dist(z.score.mat))
dd.col <- as.dendrogram(hc.col)
col.ord <- order.dendrogram(dd.col)
hc.row <- hclust(dist(t(z.score.mat)))
dd.row <- as.dendrogram(hc.row)
row.ord <- order.dendrogram(dd.row)
clustered.mat <- z.score.mat[col.ord,row.ord]
clustered.mat.names <- attr(clustered.mat,"dimnames")
clustered.mat.df <- as.data.frame(clustered.mat)
colnames(clustered.mat.df) <- clustered.mat.names[[2]]
clustered.mat.df[,"process"] <- clustered.mat.names[[1]]
clustered.mat.df[,"process"] <- with(clustered.mat.df,factor(clustered.mat.df[,"process"],levels=clustered.mat.df[,"process"],ordered=TRUE))
require(reshape2)
clustered.mat.df <- reshape2::melt(clustered.mat.df,id.vars="process")
colnames(clustered.mat.df)[2:3] <- c("condition","z.score")
clustered.mat.df$p.value <- sapply(1:nrow(clustered.mat.df),function(x) p.val.mat[which(rownames(p.val.mat) == clustered.mat.df$process[x]),which(colnames(p.val.mat) == clustered.mat.df$condition[x])])
lab.legend <- colnames(clustered.mat.df)[3]
lab.row <- colnames(clustered.mat.df)[1]
lab.col <- colnames(clustered.mat.df)[2]
require(ggplot2)
ggplot(clustered.mat.df,aes(x=condition,y=process))+
geom_tile(aes(fill=z.score))+
scale_fill_gradient2(lab.legend,high="darkred",low="darkblue")+
theme_bw()+
theme(legend.key=element_blank(),
legend.position="right",
panel.border=element_blank(),
strip.background=element_blank(),
axis.text.x=element_text(angle=45,vjust=0.5)
)
Мой вопрос, если это возможно, и как, чтобы иметь на одной стороне легенды бар диапазон Z-счет (который в настоящее время находится справа), а с другой стороны - соответствующий диапазон p-значений?
это результаты от МПА для анализа путей права? что именно вы хотите показать? – Learner
выше вы должны иметь 'pnorm (abs (z.score.mat), lower.tail = F)' – Learner
На самом деле это результат измерения через множество контрастов (которые я указываю как условия в сообщении), но в равной степени может быть результат ПНД или любого другого анализа обогащения по этому вопросу. В моем сообщении указывается: p.val.mat <- pnorm (abs (z.scare.mat), lower.tail = F) – dan