【问题标题】:Visualize a matrix using geom_violin() in r在 r 中使用 geom_violin() 可视化矩阵
【发布时间】:2020-11-01 17:25:40
【问题描述】:

我有一个相关矩阵 (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

等等

我想使用单小提琴图可视化数据框中的列之间的相关性分布,为此矩阵已创建此矩阵。输入此代码后:

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

我明白了:

这是可能的结果吗?有没有更好的方法来使用 geom_violin() 绘制矩阵?

【问题讨论】:

  • 我不确定我是否理解您的相关矩阵。对角线不应该都是1,矩阵是对称的吗?
  • 你是对的!我不想显示更多关键数据,所以我编了几个名字,但确实,我必须更正这个问题。

标签: r violin-plot


【解决方案1】:

这将有助于使某些东西更具代表性:

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 展开成一个250,000 长度的向量.您的图实际上只是所有相关值的密度图。我不确定这有多大用处:

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

您可以将所有相关性分别绘制为小提琴图:


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

但这不适用于 500 个变量。

表示如此大的相关矩阵的更标准方法是相关图,例如:

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

reprex package (v0.3.0) 于 2020 年 7 月 12 日创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 2011-03-06
    • 2014-07-16
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多