Я использовал mtcars, который также является примером в блоге corrr, и я получаю те же результаты:
library(corrr)
library(dplyr)
library(ggplot2)
cormat <- correlate(mtcars)
cormat2 <- cormat %>%
rearrange(method = "MDS", absolute = FALSE) %>%
shave()
cormat2 %>% rplot(shape = 15, colors = c("red", "green"))
Если вы посмотрите на Ваша матрица data.frame, значения, которые являются NA, появляются теперь, что означает, что порядок строк испорчен. Должно быть отражено автору, ниже я делаю несколько изменений в corrr ::: rplot.cor_df:
newplot = function (rdf, legend = TRUE, shape = 16, colours = c("indianred2",
"white", "skyblue1"), print_cor = FALSE, colors)
{
if (!missing(colors))
colours <- colors
row_order <- rdf$rowname
pd <- stretch(rdf, na.rm = TRUE)
pd$x <- factor(pd$x,levels=row_order)
pd$y <- factor(pd$y,levels=rev(row_order))
pd$size = abs(pd$r)
pd$label = fashion(pd$r)
plot_ <- list(geom_point(shape = shape), if (print_cor) geom_text(color = "black",
size = 3, show.legend = FALSE), scale_colour_gradientn(limits = c(-1,
1), colors = colours), theme_classic(), labs(x = "",
y = ""), guides(size = "none", alpha = "none"), if (legend) labs(colour = NULL),
if (!legend) theme(legend.position = "none"))
ggplot(pd, aes_string(x = "x", y = "y", color = "r", size = "size",
alpha = "size", label = "label")) + plot_
}
newplot(cormat2,shape=15,colours=c("#29c7ac","#c02739"))
Быстрое объяснение, в В приведенной выше функции есть строка stretch(rdf, na.rm = TRUE)
, в которой корреляция data.frame плавится, но порядок ваших переменных не сохраняется. Я просто добавил две строки для их рефакторинга, есть и другие способы, но для вашей цели это должно быть хорошо.