R y对x的多个散点图

时间:2013-06-23 16:46:40

标签: r scatter-plot

我有一个带X列的表,还有几列Y1,Y2,Y3 ...... Y50 我正在努力使用R语法来执行Y1与X,Y2与X等的多个散点图,使用类似于对(table)工作方式的单个命令;除了我不希望每列都反对其他所有列 - 它是每个Y与X的散点图

4 个答案:

答案 0 :(得分: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')

enter image description here

lattice

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

enter image description here

答案 1 :(得分:2)

也许看一下googleVis包和gvisScatterChart函数。该函数的输入完全采用您所描述的格式。

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

编辑一个例子。

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

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

答案 2 :(得分:1)

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

dim(iris)
## five columns across
pairs(iris)
## If I only want the second, third and fourth columns. 
pairs(iris[,2:4])

答案 3 :(得分: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))}

enter image description here

也许来自packae scatterplotMatrix的函数car对您来说也很有趣。