Я пошел вперед и симулировал mat
. Вам просто нужно повторно присвоить свои поля Var1
и Var2
, и вы можете сделать это, используя порядок имен столбцов в mat
.
mat <- data.frame(x_1 = rnorm(100,3,0.5), x_2 = rnorm(100,8,0.5), x_3 = rnorm(100,12,0.5))
corr_mat=cor(mat,method="s")
ord=hclust(1-as.dist(corr_mat))$order
co=reshape2::melt(corr_mat[ord,ord])
# Re-ordering Var1 and Var2 by the order of when the columns appear in mat
co$Var1 <- factor(co$Var1, levels = names(mat))
co$Var2 <- factor(co$Var2, levels = names(mat))
co %>%
ggplot(aes(Var1, Var2)) +
geom_tile(aes(fill = value)) +
geom_text(aes(fill = co$value, label = round(co$value, 2))) +
scale_fill_gradient(low = "lightblue", high = "darkslategray") +
theme(panel.grid.major.x=element_blank(),
panel.grid.minor.x=element_blank(),
panel.grid.major.y=element_blank(),
panel.grid.minor.y=element_blank(),
panel.background=element_rect(fill="white"),
axis.text.x = element_text(angle=90, hjust = 1,vjust=1,size = 12,face = "bold"),
plot.title = element_text(size=20,face="bold"),
axis.text.y = element_text(size = 12,face = "bold")) +
ggtitle("Correlation Plot") + theme(legend.title=element_text(face="bold", size=14)) + scale_y_discrete(name="") +
scale_x_discrete(name="") + labs(fill="Corr. Coef.")