all-vs-allの比較からヒートマップを生成したいと思います。すでに0-1にスケーリングされたデータがあります。ただし、値は1つの方法での比較のみであり、同じグループ(常に1)間の比較ではありません。つまり、行列の半分があり、残りの半分と対角線が欠落しています。ggplot2がヒートマップに使用できる形式にするための良い方法は何ですか?
これは私が持っているデータの例です:
A B value
T1 T2 0.347
T1 T3 0.669
T2 T3 0.214
私は以下がggplotに必要なものだと思います(または、ggplotが何らかの方法でそれを生成できる場合は、そうではないかもしれません):
A B value
T1 T2 0.347
T1 T3 0.669
T2 T3 0.214
T2 T1 0.347
T3 T1 0.669
T3 T2 0.214
T1 T1 1
T2 T2 1
T3 T3 1
それから私は走ります
sorted<-data[order(data$A, data$B), ]
ggplot(sorted, aes(A, B)) +
geom_tile(aes(fill = value), colour = "white") +
scale_fill_gradient(low = "black", high = "red") +
私はこれを解決しましたが、(私が想定していることですが)forループを含む本当に悪い方法です。上記の最初のデータフレームから2番目のデータフレームを形成するためのより良い方法があるはずです!
乾杯