针对单个变量的许多变量的散点图

时间:2016-07-09 14:53:59

标签: r scatter-plot

我想获得一个散点图的一维数组,所有这些都是针对单个变量的。我可以从'对()'返回的完整矩阵中提取它们,但其他图在我的情况下没有用。将布局改为c(1,)不适合整个图当变量数量很高时,在一行中正确排列。

attach(iris)
caret::featurePlot(x = iris[, 1:4],
        y = iris[,5],#Species
        plot = "pairs",
        auto.key = list(columns = 3))

Full scatter plot

请使用' iris'具有条件变量的数据集为'物种'为了说明。我想要的只是一个简单的情节,只有" Petal.Width"相对于其他3个预测因子绘制,即" Sepal.Length"," Sepal.Width" &安培; " Petal.Length"并着色到"物种"。

3 个答案:

答案 0 :(得分:1)

基础R解决方案 - par(mfrow= c(1,n))是关键:

data(iris)
par(mfrow=c(1,3))
plot(iris$Sepal.Length, iris[,2])
plot(iris$Sepal.Length, iris[,3])
plot(iris$Sepal.Length, iris[,4])

enter image description here

显然,您可以使用base绘图的其他功能来自定义情节

答案 1 :(得分:0)

(如果没有reproducible example,就很难做到这一点。)

一个简单的解决方案是打开一个pdf来接受所做的图,然后循环其他变量,一次制作一个散点图。您可以使用不同的符号和颜色来指示对要调节的因子的两个不同级别进行的观察。

pdf(file=<something>, <other settings>)
for(i in 1:13){  # or perhaps: for(i in c(1,2,5,10,11,12,13)){
  plot(AF[,i], AF[,14], pch=<something>, col=<something>)
}
dev.off()

更新:我可以使用iris数据集作为示例来说明我的上述答案。

data(iris)
add.legend <- function(...){  # taken from: https://stackoverflow.com/a/21784009/1217536
  opar <- par(fig=c(0, 1, 0, 1), oma=c(0, 0, 0, 0), 
    mar=c(0, 0, 0, 0), new=TRUE)
  on.exit(par(opar))
  plot(0, 0, type='n', bty='n', xaxt='n', yaxt='n')
  legend(...)
}

pdf(file="Scatterplots of variables against petal width.pdf")
for(i in 1:3){
  plot(iris[,i], iris[,4], pch=as.numeric(iris$Species), col=as.numeric(iris$Species),
       xlab=names(iris)[i], ylab="Petal Width")
  add.legend("top", legend=levels(iris$Species), horiz=TRUE, pch=1:3, col=1:3)
}
dev.off()

您将在新页面上获得每个情节的pdf。问题(因为缺乏一个更好的词,我不是故意在这里太苛刻)和@ Hack-R和@Alex的答案是他们不能很好地扩展。只有三个被挤进去的情节很好,但是当你有十三个(!)时,他们不会提供非常丰富的信息。 pdf中的所有图表看起来都很干净,比例如下图(这是pdf中的第一个图):

enter image description here

答案 2 :(得分:0)

{{1}}

enter image description here