我有一个大矩阵mdat
(1000行和16列)包含第一列x
变量,其他列包含y
变量。我想要做的是在R中制作散点图,在同一窗口上有15个数字。例如:
mdat <- matrix(c(1:50), nrow = 10, ncol=5)
在上面的矩阵中,我有10行和5列。是否可以将第一列用作x轴上的变量,将其他列用作y轴上的变量,以便在同一窗口上有四个不同的散点图?请注意,我 不 更喜欢par(mfrow=
,因为在这种情况下,我必须运行每个图表,然后在同一窗口生成它们。我需要的是一个软件包,以便我只提供数据和x
,y
varaibeles,并在相同的窗口上显示图表。
是否有一些可用的包可以做到这一点?我找不到一个。
答案 0 :(得分: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()
答案 1 :(得分:2)
@ user4299您可以使用ggplot
在此表单中重写shujaa的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")
答案 2 :(得分: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)