当你有很多变量时,如何从 Rstudio 中提取可见的散点图矩阵?

How to extract a visible scatterplot matrix from Rstudio when you have many variables?

我正在进行化学分析,并试图根据我的化学数据制作散点图矩阵。我能够创建一个我想要的矩阵,但每个散点图都不够明显,无法在我的屏幕上阅读。我打算在一张巨大的科学海报上打印这个矩阵,但是,我不知道如何导出这个带有可见图的矩阵。有什么方法可以让这些图可见吗? 我将此代码用于矩阵:

scatterFull <- pairs(springwater[,1:53], panel=panel.smooth)

这是我在 Rstudio 的绘图框中得到的矩阵。我知道显示器屏幕尺寸很重要,这就是为什么我无法清楚地看到每个图,但有没有办法在不改变显示器尺寸的情况下解决这个问题?

我希望看到这个矩阵和下面的矩阵一样可见(这个矩阵只包含 10 个元素,但我的矩阵中需要全部 53 个元素)。

请帮我解决这个问题。谢谢!

几十年来我不得不处理这个问题。到目前为止,R 中最好的方法(就易用性和质量而言)是以 PDF 格式输出图形。当您指定较大的纸张尺寸时,图形可读。它将比导出 RStudio 中显示的图形质量更高。即便如此,您可能不得不尝试并可能修改图形元素,例如文本大小和符号大小。

这是一个示例,展示了默认情况下绘图在海报尺寸 sheet(44 x 32 英寸)上的外观。该图显示了输出的一部分(在 Acrobat Reader 中以 200% 的放大率呈现:单击它可以在屏幕上以其原始大小查看它)。

#
# Generate sample data.
#
n <- 1e2                 # Number of points
d <- 53                  # Number of variables
mu <- runif(d)           # Variable log means
sigma <- rbeta(d, 2, 2)  # Variable log sds
X <- matrix(exp(rnorm(n*d, mu, sigma)), n, byrow=FALSE)
X <- ifelse(X < 1, 0, X) # Censor all values at a detection limit of 1
colnames(X) <- paste0("X", seq_len(ncol(X)))
#
# The proposed solution.
#
pdf("Pairs.pdf", width=44, height=32)
pairs(X)
dev.off()

在 运行 这段代码之后,以 pdf reader 打开输出文件 Pairs.pdf 以查看它。

如果这仍然不起作用,您将需要通过遍历不相交的变量子集并为这些子集的每个有序对输出一个散点图矩阵来平铺输出。但是有53个变量应该够用了。


如果您希望识别并显示这些面板的一个子集,可以使用以下一些基本代码进行模拟。它对相关系数使用 0.3 的硬编码阈值;实际上,您可能会根据数据和您的目标进行调整。

#
# Display highly correlated pairs of variables.
#
R <- abs(cor(X))          # The correlation matrix
i <- which(R > 0.3) - 1   # Indexes of large absolute correlations
p <- rbind(i %% ncol(X), i %/% ncol(X)) + 1 # Indexes into the variable names
p <- p[, p[1,] != p[2,]]  # Remove the diagonals

m <- ncol(p)
if (m > 0) {
  nrow <- min(4, ceiling(sqrt(m/1.6)))
  ncol <- min(5, ceiling(sqrt(m*1.6)))
  par(mfrow = c(nrow, ncol))
  apply(p, 2, function(j) {
    plot(X[, j[1]], X[, j[2]], xlab=colnames(X)[j[1]], ylab=colnames(X)[j[2]])
  })
  par(mfrow=c(1,1))
}