はpossibileソリューションです。それがあなたを助けることを願っています。
df <- structure(list(ID = structure(c(3L, 5L, 2L, 1L, 6L, 4L), .Label = c("aorta",
"carotid", "echocardiography", "hemorrhage", "infarction", "myocardial"
), class = "factor"), PCA1 = c(-0.88, -0.18, 1.13, -0.03, -0.72,
0.23), PCA2 = c(0.87, 0.57, -0.8, -0.06, -0.02, -0.67), cluster = c(9L,
7L, 2L, 5L, 3L, 5L)), .Names = c("ID", "PCA1", "PCA2", "cluster"
), class = "data.frame", row.names = c(NA, -6L))
# Define a distance function based on euclidean norm
# calculated between PCA values of the i-th and j-th items
dst <- Vectorize(function(i,j,dtset) sqrt(sum((dtset[i,2:3]-dtset[j,2:3])^2)), vectorize.args=c("i","j"))
# Here is the distance between echocardiography and infarction
dst(1,2,df)
# [1] 0.7615773
# This value is given by
sqrt(sum((df[1,2:3] - df[2,2:3])^2))
# Calculate the distance matrix
nr <- nrow(df)
mtx <- outer(1:nr, 1:nr, "dst", dtset=df)
colnames(mtx) <- rownames(mtx) <- df[,1]
# Plot the heatmap using ggplot2
library(reshape2)
library(ggplot2)
mtx.long <- melt(mtx)
ggplot(mtx.long, aes(x = Var1, y = Var2, fill = value)) + geom_tile()+xlab("")+ylab("")
、詳細にあなたのヒートマップの構造を説明してください。行と列によってどのような変数が必要ですか?各セルにどのような情報を表示する必要がありますか? –
ヒートマップを上記の紫色のヒートマップに似せて欲しいです。私は各IDをお互いに関連づけたいと思っています(別名行= IDと列= ID)。プロット上のPCA座標は、IDが別のIDとどのように相関しているかを示しています。だから、ヒートマップの各セルに、おそらく各ID間の距離を(PCA座標を使用して)表示する必要があります。 IDが近いほど、セルは暗くなり、相関が示されます。 – sweetmusicality