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

时间:2014-07-07 02:25:55

标签: r plot lattice scatter-plot

我觉得这个问题之前已被多次提出过,但是从我看过的问题来看,迄今为止没有一个解决方案对我有用。

我希望将两个相关矩阵的值绘制为散点图,在一个具有相同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)方法来生成情节?

编辑(添加样本数据以获得可重现的示例):

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 个答案:

答案 0 :(得分: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等)进行操作。