2015-09-04 145 views
2

早上好,上標熱繪圖標籤在ggplot [R

我正在在特定表型之間的相關性ggplot熱圖。我想用R^2來標記每個圖塊的關聯。
我有一個相關矩陣,max_all,它看起來像這樣:

phenolist2 pheno1 pheno2 pheno3 pheno4 pheno5 
max.pheno1  pheno1 0.05475998  0.05055959 0.05056578 0.10330301 0.05026997 
max.pheno2 pheno2 0.15743312  0.05036100 0.05151750 0.04880302 0.31008809 
max.pheno3  pheno3 0.05458550  0.07672537 0.04043422 0.16845294 0.14268895 
max.pheno4  pheno4 0.05484327  0.04391523 0.05151107 0.09521869 0.19776296 
max.pheno5   pheno5 0.08658449  0.05183693 0.16292683 0.22369817 0.53630569 

否則,我的代碼如下:

tmp_Rsq <- melt(max_all) 

tmp_Rsq <- ddply(tmp_Rsq, .(variable), transform, rescale=rescale(value)) 

labels_Rsq <- expression(paste(R^2, " = ", format(tmp_Rsq$value, digits=2), sep="")) 

ggplot(tmp, aes(variable, phenolist2)) + 
    geom_tile(aes(fill =-log10(value)), colour = "white") + 
    geom_text(aes(label=as.character(labels_Rsq), parse = TRUE, size=4)) + 
    scale_fill_gradientn(colours = myPalette(101), name="-log10(P)", limits=c(0 , 3.5)) + 
    theme(axis.title.x = element_blank(), axis.title.y=element_blank(), 
     plot.title=element_text(size=20))+ 
    theme(axis.text = element_text(colour="black", face="bold")) 

我的問題是,我不能表達寫出來所以2是R的上標。 我知道在這個網站上有很多關於類似問題的問題,例如ggplot2 two-line label with expression,Combining paste() and expression() functions in plot labelsAdding Regression Line Equation and R2 on graph,但是我一直無法得到這些答案中提出的解決方案適用於我的案例(可能是因爲我一直在嘗試使用標籤矢量)。

非常感謝您的幫助。

回答

4

解析需要在aes之外,標籤需要是一個字符向量。

labels_Rsq <- paste0("R^2 ==", format(tmp_Rsq$value, digits=2)) 

> head(labels_Rsq) 
[1] "R^2 ==0.055" "R^2 ==0.157" "R^2 ==0.055" "R^2 ==0.055" "R^2 ==0.087" "R^2 ==0.051" 

ggplot(tmp_Rsq, aes(variable, phenolist2)) + 
    geom_tile(aes(fill =-log10(value)), colour = "white") + 
    geom_text(aes(label=as.character(labels_Rsq)), parse = TRUE, size=4) + 
# scale_fill_gradientn(colours = myPalette(101), name="-log10(P)", limits=c(0 , 3.5)) + 
    theme(axis.title.x = element_blank(), axis.title.y=element_blank(), 
     plot.title=element_text(size=20))+ 
    theme(axis.text = element_text(colour="black", face="bold")) 

enter image description here