首页 文章

在一个图中绘制多个散射矩阵

提问于
浏览
1

我觉得这个问题之前已被多次询问过,但是从我看过的问题来看,到目前为止,没有一个解决方案对我有用 .

我希望将两个相关矩阵的值绘制为散点图,在具有相同y范围(从0-1)的一个图中彼此相邻 .

我的原始数据是跨越数年112家公司的时间序列,我将其分为两个子集,即期间A和期间B.原始数据是动物园对象 .

然后我创建了两个时期的相关矩阵:

corr_A <- cor(series_A)
corr_B <- cor(series_B)

为了进一步的数据分析,我删除了双重条目:

corr_A[lower.tri(corr_A, diag=TRUE)] <- NA
corr_A <- as.vector(corr_A)
corr_A <- corr_A[!is.na(corr_A)]

corr_B[lower.tri(corr_B, diag=TRUE)] <- NA
corr_B <- as.vector(corr_B)
corr_B <- corr_B[!is.na(corr_B)]

结果,我有两个向量,每个向量的长度为6216(111 110 109 ... 1 = 6216) .

然后我将这些向量组合成一个矩阵:

correlation <- matrix(c(corr_A, corr_B), nrow=6216)
colnames(correlation) <- c("period_A", "period_B")

我现在想绘制这个矩阵,所以结果看起来与这张图相似:
Two scatter plots in one graph

我试图用格子中的xyplot绘图:

xyplot(period_A + period_B ~ X, correlation)

但是,在结果图中,两个散点图相互堆叠:
enter image description here

我也试过更改矩阵本身 - 而不是使用6216行,我使用了12432行,然后将前6512行索引为“period_A”,将最后6512行索引为“period_B” - 结果绘图看起来非常相似到我想要的情节:

Plot 3

有什么方法可以使用xyplot创建我想要的情节吗?或者还有其他(ggplot,car)方法来生成情节吗?

Edit (added sample data for reproducible example):

head(correlation) #data frame with 6216 rows, 3 columns

X  period_A period_B
1    0.5     0.4
2    0.3     0.6
3    0.2     0.4
4    0.6     0.6

1 回答

  • 1

    我终于找到了解决方案:https://stats.stackexchange.com/questions/63203/boxplot-equivalent-for-heavy-tailed-distributions

    首先,我们堆叠数据 .

    correlation <- stack(correlation)
    

    然后,我们使用stripplot(来自晶格)combiend和jitter = TRUE来创建所需的图 .

    stripplot(correlation$values ~ correlation$ind, jitter=T)
    

    得到的绘图看起来与我想要的绘图完全相同,可以使用标准的点阵/绘图命令(ylab,xlab,xlim,ylim,scale等)进行操作 .

相关问题