在n个图中对n个数字variables绘制一个数字variables

我有一个巨大的数据框架,我想做一些情节,以了解不同variables之间的关联。 我不能用

pairs(data) 

,因为那会给我400块地块。 但是,我特别感兴趣的是一个响应variables。因此,我想对所有的variables绘制y,这样就可以将绘图的数量从n ^ 2减less到n。 你能告诉我怎么做吗? 谢谢

编辑:为了清晰起见,我添加了一个例子。 假设我有数据框

 foo=data.frame(x1=1:10,x2=seq(0.1,1,0.1),x3=-7:2,x4=runif(10,0,1)) 

和我的回应variables是x3。 然后,我想生成连续排列的四个图,分别是x1对x3,x2对x3,直方图x3,最后是x4对x3。 我知道如何制作每一个情节

 plot(foo$x1,foo$x3) plot(foo$x2,foo$x3) hist(foo$x3) plot(foo$x4,foo$x3) 

不过,我不知道如何排列在一起。 另外,如果有一种方法可以自动生成所有n个图,而不必每次都调用命令图(或hist),那就太好了。 当n = 4时,这并不是什么大问题,但我通常会处理n = 20 +个variables,所以这可能是一个阻力。

可以做reshape2 / ggplot2 / gridExtra软件包组合。 这样你就不需要指定图的数量。 这个代码可以在任何数量的解释variables上工作而不需要任何修改

 foo <- data.frame(x1=1:10,x2=seq(0.1,1,0.1),x3=-7:2,x4=runif(10,0,1)) library(reshape2) foo2 <- melt(foo, "x3") library(ggplot2) p1 <- ggplot(foo2, aes(value, x3)) + geom_point() + facet_grid(.~variable) p2 <- ggplot(foo, aes(x = x3)) + geom_histogram() library(gridExtra) grid.arrange(p1, p2, ncol=2) 

在这里输入图像描述

tidyr帮助有效地做到这一点。 请参阅此处以获取更多选项

 data %>% gather(-y_value, key = "some_var_name", value = "some_value_name") %>% ggplot(aes(x = some_value_name, y = y_value)) + geom_point() + facet_wrap(~ some_var_name, scales = "free") 

你会得到这样的东西

在这里输入图像描述

我面临同样的问题,我没有任何ggplot2经验,所以我创build了一个函数使用plot ,它采取的数据框架,variables被绘制为参数和生成graphics。

 dfplot <- function(data.frame, xvar, yvars=NULL) { df <- data.frame if (is.null(yvars)) { yvars = names(data.frame[which(names(data.frame)!=xvar)]) } if (length(yvars) > 25) { print("Warning: number of variables to be plotted exceeds 25, only first 25 will be plotted") yvars = yvars[1:25] } #choose a format to display charts ncharts <- length(yvars) nrows = ceiling(sqrt(ncharts)) ncols = ceiling(ncharts/nrows) par(mfrow = c(nrows,ncols)) for(i in 1:ncharts){ plot(df[,xvar],df[,yvars[i]],main=yvars[i], xlab = xvar, ylab = "") } } 

笔记:

  1. 您可以提供要绘制为variables的variables列表,否则将绘制数据框中的所有variables(或前25个,以较less者为准)。
  2. 如果地块的数量超过了25个,那么利润率就会超出限制,所以我只能限制在25个图表上。 任何build议来处理这个很好,是值得欢迎的。
  3. 此外,y轴标签被删除作为graphics的标题照顾它。 x轴标签设置为xvar

使用函数对 ,您也可以指定一个公式来绘制您想要查看的不同variables,而不是使用整个数据集。

我试图复制你的问题中的例子。

所以,这是我的MWE:

 foo=data.frame(x1=1:10,x2=seq(0.1,1,0.1),x3=-7:2,x4=runif(10,0,1)) pairs(foo$x3 ~ foo$x1 + foo$x2 + foo$x4) 

在公式中,我指定我要绘制响应(foo $ x3),“反对”variablesx1,x2和x4。

结果如下:

在这里输入图像描述

希望它可以帮助你。