从ggpairs图中打印一行

时间:2015-02-21 22:58:18

标签: r ggplot2 ggally

我想制作mtcars数据集的ggpairs图,但我只关心mpg和所有其他变量之间的关系,而不是所有变量和所有变量之间的关系。

我将部分列更改为因子

mtcars$cyl = as.factor(mtcars$cyl)
mtcars$vs = as.factor(mtcars$vs)
mtcars$am = as.factor(mtcars$am)
mtcars$gear = as.factor(mtcars$gear)
mtcars$carb = as.factor(mtcars$carb)

并点缀情节

ggpairs(mtcars, colour = "am", columns = c(1,2,8:11))

有什么办法可以只显示情节的第一行吗?

2 个答案:

答案 0 :(得分:1)

使用ggpairs自己的GGallygetPlot(),可以从ggmatrix()输出中选择一行来进行选择。要按数字选择行(如第一个),只需在i = 1中指定getPlot()

library(ggplot2)
library(GGally)

pairs <- ggpairs(mtcars, columns = c(1,2,8:11))
plots <- lapply(1:pairs$ncol, function(j) getPlot(pairs, i = 1, j = j))
ggmatrix(
    plots,
    nrow = 1,
    ncol = pairs$ncol,
    xAxisLabels = pairs$xAxisLabels,
    yAxisLabels = primary_var
)

通过更多的工作,您可以使用感兴趣的主变量选择行。只需在以下代码中将primary_var设置为所需变量的名称即可

library(ggplot2)
library(GGally)

primary_var <- "mpg"
pairs <- ggpairs(mtcars, columns = c(1,2,8:11))
pvar_pos <- match(primary_var, pairs$xAxisLabels)
plots <- lapply(1:pairs$ncol, function(j) getPlot(pairs, i = pvar_pos, j = j))
ggmatrix(
    plots,
    nrow = 1,
    ncol = pairs$ncol,
    xAxisLabels = pairs$xAxisLabels,
    yAxisLabels = primary_var
)

注意::默认情况下,几乎您选择的任何行都会有1个以上的空图,其中只有变量之间具有相关性。您可以通过更改upper中的ggpairs()参数来更改它。查看文档以了解详细信息。

答案 1 :(得分:0)

基于tononytonov的答案,我探索了ggpairs的输出,并发现了一些可以修改以获取所需结果的属性:

gplot <- GGally::ggpairs(data)
gplot$nrow <- 1
gplot$yAxisLabels <- a$yAxisLabels[1]
print(gplot)

那应该只绘制第一行图。我不认为有一种简单的方法来获得不是第一行的单行,因为$nrow的行为就像一个上限,但只要对列进行重新排序就可以解决问题。