如何将4对图形合并为一个单独的图形?

7

提前道歉,如果我的问题很琐碎而打扰了您。

我需要制作一个包含4个不同相关性成对图的图形。所需图形如下所示: enter image description here

我正在使用函数pairs()制作每个单独的成对图:

pairs(cbind(AAPL,MSFT,INTC,FB,MU,IBM),main="Frequency=1 Min.",font.labels = 2, col="blue",pch=16, cex=0.8, cex.axis=1.5,las=1)
pairs(cbind(AAPL,MSFT,INTC,FB,MU,IBM),main="Frequency = 2 Min.",font.labels = 2, col="blue",pch=16, cex=0.8, cex.axis=1.5,las=1)
pairs(cbind(AAPL,MSFT,INTC,FB,MU,IBM),main="Frequency = 5 Min.",font.labels = 2, col="blue",pch=16, cex=0.8, cex.axis=1.5,las=1)
pairs(cbind(AAPL,MSFT,INTC,FB,MU,IBM),main="Frequency = 10 Min.",font.labels = 2, col="blue",pch=16, cex=0.8, cex.axis=1.5,las=1)

当我通过使用布局功能结合上述两两图时,它不起作用(据我所了解,从类似的问题中可以得知,layout()和pairs()不能结合使用)。

如果有人有一种优雅的方法来结合4个不同的相关性两两图,那将不胜感激。


3
在绘图之前尝试使用par(mfrow=c(2,2))。通常这用于制作绘图网格。 - Avinash
1
或者 layout(matrix(1:4, nrow=2)) - Thomas
3
我认为pairs()会覆盖mfrow设置。 - ilir
如果您提供一个可重现的示例,我很乐意为您解决具体问题。 - Eric Fail
3个回答

1

更新,12014-07-31 11:48:35Z

正如ilir在下面指出的那样pairs以某种很好的原因覆盖了par

@user44037,你能否从这段代码片段中解决你的问题?从这里复制/粘贴。我相信可以使用lattice中的splom找到解决方案。看一下?splom

 library(lattice) 
 splom(~iris[1:3]|Species, data = iris, 
      layout=c(2,2), pscales = 0,
      varnames = c("Sepal\nLength", "Sepal\nWidth", "Petal\nLength"),
      page = function(...) {
          ltext(x = seq(.6, .8, len = 4), 
                y = seq(.9, .6, len = 4), 
                lab = c("@user44037,", "can you solve your", "problem working form ", "this code snippet?"),
                cex = 1)
      })

enter image description here

初始回答,12014-07-31 11:35:33Z

只需按照Avinash的指示复制/粘贴Quick-R网站上的代码即可。如有改进,请随时提出。

如果您提供可重现的示例,我很乐意帮助您解决特定问题。

# 4 figures arranged in 2 rows and 2 columns
attach(mtcars)
par(mfrow=c(2,2))
plot(wt,mpg, main="Scatterplot of wt vs. mpg")
plot(wt,disp, main="Scatterplot of wt vs disp")
hist(wt, main="Histogram of wt")
boxplot(wt, main="Boxplot of wt")

enter image description here


2
尝试使用 pairs(iris),你会发现它不起作用。 - ilir
Eric Fail,感谢您提供splom代码。不幸的是,我不知道如何在我的数据上运行它。我有24个时间序列,属于4个独立组(4个成对相关图):频率=1分钟,其中包括AAPL_1m、MSFT_1m、INTC_1m、FB_1m、MU_1m、IBM_1m等时间序列;频率=2分钟,其中包括AAPL_2m、MSFT_2m、INTC_2m、FB_2m、MU_2m、IBM_2m等时间序列;频率=5分钟,其中包括AAPL_5m、MSFT_5m、INTC_5m、FB_5m、MU_5m、IBM_5m等时间序列;频率=10分钟,其中包括AAPL_10m、MSFT_10m、INTC_10m、FB_10m、MU_10m、IBM_10m等时间序列。每个成对图应该显示相关性。 - Robin Hood
我还分享了一个新的问题,涉及splom()函数在4个成对绘图的组合中的应用(http://stackoverflow.com/questions/25076293/how-to-apply-splom-function-in-order-to-create-multiple-correlation-pairwise-p)。 - Robin Hood
如果您能提供一个可重现的示例,那将非常有帮助。这样我们在帮助您时就可以更加专注,避免浪费彼此的时间。 - Eric Fail
另外,既然您已经发布了一个新问题,我认为您应该决定这个问题是否得到了回答,或者您想从哪里继续进行。 - Eric Fail

1
问题可以通过使用Eric Fail建议的splom()函数来解决:
解决方案可以在这里找到。

0

这个问题的答案可能会有所帮助:在ggplot2中创建散点图矩阵(pairs()等效)

您可以使用GGgalley包中的ggpairs创建对应的散点图矩阵。由于这些应该是ggplot对象,因此您可以使用gridExtra包中的grid.arrange来排列它们。


不幸的是,这似乎不起作用。为什么不起作用的更长描述在此链接中:https://dev59.com/sIDba4cB1Zd3GeqPE32I。 - user2357031

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接