Визуализируйте матрицу с помощью geom_violin () в r - PullRequest
0 голосов
/ 12 июля 2020

У меня есть матрица корреляции (200x200) в виде:

 >cormat

          n1              n2              n3  
 n1    1.000000000   0.132555050     0.009169320    
 n2   -0.121419322   1.000000000    -0.174995204    
 n3   -0.259331076  -0.171652163     1.000000000

Et c.

Я хочу визуализировать распределение корреляции между столбцами в фрейм данных, для которого была создана эта матрица, используя сюжет для одной скрипки . Набрав этот код:

 ggplot()+geom_violin(aes(c(cormat[1:200,]), c(cormat[,1:200])))

, я получил:

Скрипка сюжет корреляционной матрицы

Возможен ли результат? Есть ли лучший способ построить матрицу с помощью geom_violin ()?

1 Ответ

1 голос
/ 12 июля 2020

Это поможет сделать что-то более представительное:

library(ggplot2)

set.seed(69)
df <- data.frame(a = 1:10, b = 1/33 * 1:10 + rnorm(10), c = -(1:10) * 0.1 + rnorm(10),
                 d = 1/5 * 1:10 + rnorm(10), e = rnorm(10))
cormat <- cor(df)

Теперь в вашем примере, поскольку cormat - это 500 квадратов, c(cormat[1:500,]) совпадает с c(cormat[,1:500]), которые оба являются то же, что и c(cormat), то есть просто cormat, развернутый в вектор длиной 250000. Ваш график на самом деле просто график плотности всех значений корреляции. Я не уверен, насколько это полезно:

ggplot() + geom_violin(aes(c(cormat), c(cormat)))

You could instead do a plot of all the correlations separately as violin plots:


plot_df <- reshape2::melt(cormat)
ggplot(data = plot_df) + geom_violin(aes(Var1, value, fill = Var1))

but this won't work well for 500 variables.

A more standard way to represent a correlation matrix this big would be as a correlation plot, like:

ggplot(plot_df) + geom_tile(aes(Var1, Var2, fill = value))

enter image description here Created on 2020-07-12 by the пакет (v0.3.0)

...