6

我想制作 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))

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

4

2 回答 2

2

根据 tonytonov 的回答,我探索了ggpairs输出并找到了一些属性,您可以修改这些属性以获得所需的结果:

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

那应该只渲染第一行图。我认为没有一种简单的方法可以获得不是第一行的单行,因为$nrow它就像一个上限,但只需重新排序你的列就可以了。

于 2018-07-05T06:02:32.630 回答
2

有任何更简单的方法可以使用自己的和 从ggpairs输出中选择一行。要按数字选择一行(如第一个),只需在.GGallygetPlot()ggmatrix()i = 1getPlot()

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()。检查文档以获取详细信息。

于 2018-07-08T03:58:01.287 回答