2012-05-29 43 views
0

我有一个大矩阵mdat(1000行16列)包含第一列为x变量,其他列为y变量。我想要做的是在同一个窗口中使R有15个数字的散点图。例如:如何在r中创建多个图?

mdat <- matrix(c(1:50), nrow = 10, ncol=5) 

在上述矩阵中,我有10个行和5列。是否有可能将第一列用作x轴上的变量,将其他列用作y轴上的变量,以便在同一窗口中有四个不同的散点图?请记住,我会不是宁愿par(mfrow=,因为在这种情况下,我必须运行每个图形,然后在相同的窗口上生成它们。我需要的是一个包,以便我只给它数据和xy瓦拉贝莱斯,并在同一窗口上有图表。 有一些可以做到这一点的软件包吗?我找不到一个。

+0

你能澄清你所说的 “在同一窗口15级人物” 是什么意思?一行15行显示15个关系(可能是不同的颜色)?或者在一个小组中有15个独立的地块,可能是4行x 4列,有一个地块不见了?在第二种情况下,舒雅的答案将起作用。 –

+0

shujas回答工作。现在我对你的第一个案子有其他疑问。是否有可能在同一个窗口上使用不同颜色的15行,并解释每种颜色,以便人们可以很容易区分哪种颜色代表哪个变量? – Iftikhar

+0

@ user4299大多数人会告诉你,15种颜色太多不能区分,但看到我的编辑开始。 – Gregor

回答

2

@ user4299可以以这种形式重新写shujaa的ggplot命令,使用qplot这意味着“快速绘图”起步时比较容易。然后代替刻面,使用variable来驱动颜色。所以第一个命令会产生与shujaa答案相同的输出,然后第二个命令会以不同的颜色和图例为您提供一个绘图上的所有线条。

qplot(data = molten, x = V1, y = value, facets = . ~ variable, geom = "point") 
qplot(data = molten, x = V1, y = value, color = variable, geom = "point") 
4

也许最简单的基础R的方法是mfrow(或mfcol

par(mfrow = c(2, 2)) ## the window will have 2 rows and 2 columns of plots 
for (i in 2:ncol(mdat)) plot(mdat[, 1], mdat[, i]) 

?par你可能想知道进一步的调整一切。

基准R的另一个好的选择是layout(帮助有一些很好的例子)。想要看起来很漂亮,你可以使用ggplot2包,但你需要将数据重塑为长格式。

require(ggplot2) 
require(reshape2) 
molten <- melt(as.data.frame(mdat), id = "V1") 

ggplot(molten, aes(x = V1, y = value)) + 
    facet_wrap(~ variable, nrow = 2) + 
    geom_point() 
颜色代替方面

或者:

ggplot(molten, aes(x = V1, y = value, color = variable)) + 
    geom_point() 
2

也许

library(lattice) 
x = mdat[,1]; y = mdat[,-1] 
df = data.frame(X = x, Y = as.vector(y), 
       Grp = factor(rep(seq_len(ncol(y)), each=length(x)))) 
xyplot(Y ~ X | Grp, df)