我有一个包含 X 列的表格,以及几列 Y1、Y2、Y3 ......对(表)如何工作;除了我不希望每列都与其他列相对 - 这是每个 Y 与 X 的散点图
问问题
3753 次
4 回答
2
我认为最好将您的数据以长格式放置,使用stack
或melt
像这样:
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))}
也许scatterplotMatrix
packae的功能car
对您来说也很有趣。
于 2013-06-23T17:08:12.783 回答