【问题标题】:Visualise "corrplot" in R with more than one variable/parameter使用多个变量/参数在 R 中可视化“corrplot”
【发布时间】:2021-01-21 21:39:22
【问题描述】:

我正在使用corrplot 函数,它是Rcorrplot 包的一部分,以可视化我拥有的数据通道之间的相关性。我的问题是我是否可以将两个“因素”或参数分配给圆圈......所以,例如,我可以让圆圈的大小代表相关性,而圆圈的颜色代表其他东西,例如滞后?我的数据实际上是互相关数据,我已经确定了最大相关/滞后,并希望能够在一个图中将两者可视化,这就是我想要这样做的原因。

基本上我想要达到的目标与这个问题相同:R: using corrplot to visualize two variables (e.g., correlation and p-value) using the size and colour of the circles,但是,这两种解决方案都不适合我,并且从 Github 安装软件包时出现错误。

我有一个滞后和相关向量:

CCO_lag = (0,   NaN ,   -2 ,  NaN  ,  -5  ,  -4  ,  -6  ,  -3  ,   0 ,  NaN ,    1  ,   3  , NaN   ,  0   , -3  , NaN) 
CCO_r = c(-0.4757 ,      NaN   , 0.5679    ,   NaN   , 0.5582  ,  0.5899 ,   0.5857 ,   0.6256 ,  -0.4646   ,    NaN ,  -0.6286 , -0.4699    ,   NaN ,  -0.7710  ,  0.5869  ,     NaN `)

假设我想使用corrplot1x16 正方形中可视化这个我希望圆圈的大小取决于CCO_r 中的相关值,而圆圈的颜色取决于滞后值在CCO_lag

谁能帮忙?

谢谢!

【问题讨论】:

  • 请发布一个可重现的小例子。并具体说明你的包,有一个ggcorrplot 包,一个corrplot 包,arm 包有一个corrplot 函数......你在使用哪个?
  • 谢谢,我已经尽力让它更清楚...

标签: r correlation cross-correlation r-corrplot


【解决方案1】:

这在我看来不太像相关图,但我们可以这样做:

CCO_lag = c(0,   NaN ,   -2 ,  NaN  ,  -5  ,  -4  ,  -6  ,  -3  ,   0 ,  NaN ,    1  ,   3  , NaN   ,  0   , -3  , NaN) 
CCO_r = c(-0.4757 ,      NaN   , 0.5679    ,   NaN   , 0.5582  ,  0.5899 ,   0.5857 ,   0.6256 ,  -0.4646   ,    NaN ,  -0.6286 , -0.4699    ,   NaN ,  -0.7710  ,  0.5869  ,     NaN )

d = data.frame(id = 1:length(CCO_lag), CCO_lag, CCO_r)

ggplot(d, aes(x = id, y = "A", size = CCO_r, color = CCO_lag)) +
  geom_point() +
  scale_y_discrete(breaks = NULL) +
  labs(y = "", x = "")

如果你有矩阵:

lag_mat = matrix(CCO_lag, 4)
r_mat = matrix(CCO_r, 4)
row = c(row(lag_mat))
col = c(col(lag_mat))

dd = data.frame(
  lag = c(lag_mat), r = c(r_mat), row, col
)

ggplot(dd, aes(x = row, y = col, size = r, color = lag)) +
  geom_point() +
  theme(panel.grid = element_blank())

请注意,矩阵的顶部是第 1 行,下面是编号较高的行,但图的底部是较低的 y 值,上面是编号较高的 y 值。你可能想改变它,或者它可能没问题。您可以将scale_y_reverse() 添加到您的情节中以进行切换。

【讨论】:

  • 谢谢...现在我唯一的问题是我的实际 CCO_r 和 CCO_lag 矩阵是 16x16 而不是 1x16...如果我像在代码中那样合并到数据帧中,它最终会成为一个数据帧它在一行中绘制了 256 个观察值......我怎样才能正确地将这些矩阵读入数据框中?谢谢!
  • 是的,我很困惑你只共享了 16 个值,但你想要一个 1x16 正方形......不是真正的正方形。我将展示如何将其转换为 4x4 正方形,然后您可以使用更大的数据进行概括。
  • 一般情况下,最好将样本数据与真实数据类型相同。如果您的真实数据是矩阵,请将您的样本数据设为(较小的)矩阵。
  • 谢谢! ggplot 代码的这一部分是做什么的? “+[![在此处输入图像描述][2]][2] 主题(panel.grid = element_blank())”因为我收到此错误:错误:意外'[' in:“ggplot(dd,aes(x = row, y = col, size = r, color = lag)) + geom_point() +[" 直到我删除它然后我得到了这个数字。谢谢你的提示!我一定会记得下次包含更小的真实数据矩阵!
  • 抱歉 - 没了。那是 Stack Overflow 试图在我的代码中间而不是最后添加图像(我认为插入图像时光标在错误的位置 - 我很困惑为什么它没有第一次出现)。
猜你喜欢
  • 2013-01-23
  • 2015-03-22
  • 2021-01-04
  • 2020-06-10
  • 2020-05-08
  • 2021-05-15
  • 2016-09-05
  • 1970-01-01
  • 2021-10-07
相关资源
最近更新 更多