4

我有一个包含 X 列的表格,以及几列 Y1、Y2、Y3 ......对(表)如何工作;除了我不希望每列都与其他列相对 - 这是每个 Y 与 X 的散点图

4

4 回答 4

2

我认为最好将您的数据以长格式放置,使用stackmelt像这样:

X <- 1:10
dat <- cbind(matrix(rnorm(10*50),ncol=50,
           dimnames=list(NULL,paste0('Y',1:50))))
dat <- cbind(X,stack(as.data.frame(dat)))

在您的情况下,您可以使用以下方法获取 Y 的矩阵:

 do.call(cbind,mget(ls(pattern='Y[0-9]+')))

然后使用ggplot2

library(ggplot2)
ggplot(dat) +
  geom_line(aes(x=X,y=values,color=ind)) +
  facet_wrap(~ind)+theme(legend.position='none')

在此处输入图像描述

lattice

xyplot(X~values|ind,data=dat,type='l',groups=ind)

在此处输入图像描述

于 2013-06-23T17:58:10.540 回答
2

也许看看 googleVis 包和 gvisScatterChart 函数。该函数的输入与您描述的格式完全相同。

https://developers.google.com/chart/interactive/docs/gallery/scatterchart

编辑一个例子。

library('googleVis')
data(iris)
plot(gvisScatterChart(iris[,1:4])) 

请注意,您不能在提供的输入数据中包含字符,因此我只选择了数字列。

于 2013-06-23T17:58:12.393 回答
1

你的意思是pairs?我发现最容易接受的约定是指定要相互绘制的列的范围。例如:

dim(iris)
## five columns across
pairs(iris)
## If I only want the second, third and fourth columns. 
pairs(iris[,2:4])
于 2013-06-23T16:58:30.397 回答
1

例如,如果您只想绘制表格或数据框的第一行与第二、第三和第四行,您可以使用

par(mfrow=c(1,3))
apply(iris[,2:4], 2, plot, x=iris[,1], xlab="x", ylab="y")

或者,如果您想控制轴标签等,则 for 循环可能会很好:

par(mfrow=c(1,3))
for (i in 2:4){plot(iris[,1], iris[,i], xlab="iris data column #1", ylab=paste("iris data column #", i), main=paste("iris col 1 vs col ", i))}

在此处输入图像描述

也许scatterplotMatrixpackae的功能car对您来说也很有趣。

于 2013-06-23T17:08:12.783 回答