0

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

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

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

4

3 回答 3

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您可能想了解的有关进一步调整的所有信息。

base 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()
于 2012-05-29T11:13:03.880 回答
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")
于 2012-05-29T14:28:42.927 回答
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)
于 2012-05-29T15:21:02.477 回答