2017-04-09 21 views
0

ggplotを使用して、相関行列のヒートマップを生成しようとしていますが、データに先行ゼロを含めません。ggplot2 figureから先行ゼロを削除する

は、「データセット」のパッケージにLifeCycleSavingsからこの例を考えてみましょう:

 pop75 dpi ddpi 
sr  0.317 0.220 0.305 
pop15 -0.908 -0.756 -0.048 

私はそうのようheatmapをプロットすることができます

library(reshape2) 
melted_cors <- melt(cors) 
library(ggplot2) 
ggplot(melted_cors, aes(Var2, Var1, fill = value)) + 
    geom_tile(color = "white") + 
    geom_text(aes(Var2, Var1, label = value), color = "black", size = 4) + 
    scale_fill_gradient2(low = "blue", mid = "white", high = "red", 
         midpoint = 0, limit = c(0,1), space = "Lab", 
         name="Pearson\nCorrelation") + 
    theme_minimal() + 
    theme(title = element_blank(), legend.position="none") + 
    coord_fixed() 

この出力から先行ゼロを除去する方法はあります?

+1

あなたがゼロをリードすることにより、正確に何を意味するのですか?相関がゼロの項を隠したいですか?小数点の前にあるゼロを削除するために、すべての相関に10を掛けたいですか? – Eumenedies

+0

は再生できません。 'コルス'とは何ですか? – hrbrmstr

答えて

0

列と行が逆になることがあります。 gsubを使うと非常にエレガントではありません。

cors <- read.table(text= 
"label pop75 dpi ddpi 
sr  0.317 0.220 0.305 
pop15 -0.908 -0.756 -0.048", header=TRUE) 

library(reshape2) 
melted_cors <- melt(cors) 
library(ggplot2) 
ggplot(melted_cors, aes(label, variable, fill = value)) + 
    geom_tile(color = "white") + 
    geom_text(aes(label, variable, label = gsub("0\\.", "\\.", value)), color = "black", size = 4) + 
    scale_fill_gradient2(low = "blue", mid = "white", high = "red", 
         midpoint = 0, limit = c(0,1), space = "Lab", 
         name="Pearson\nCorrelation") + 
    theme_minimal() + 
    theme(title = element_blank(), legend.position="none") + 
    coord_fixed() 

enter image description here

+0

それはうまくいった、ありがとう! – cgdodd

+0

フォローアップの質問:すべてのセルに小数点以下の桁数を表示することは可能ですか(たとえば、.03、.3、および0ではなく.03、.30、.00)? – cgdodd

+0

はい。 geom_textでは値は文字どおりの文字列なので、何らかの操作を行うことができます。 'sprintf("%。2f "、3.141)'関数は小数点第2位を四捨五入します。 'gsub(" 0 \\。 "、" \\。 "、(sprintf("%2f、value)) ' – epi99