具有不同分类变量的所有可能的 qplots

All possible qplots with different categorical variables

我用以下代码绘制了变量 lsiete 和 lcinco 的图:

qplot(lsiete, lcinco, data=enc, color=LENGTHE)

不过,我还想通过以下因素变量为散点图着色,以便同时将其可视化:

> names(enc[,ind])
 [1] "SEX"      "RACE"     "MSTATUS"  "EDUC"     "POSITION" "SATSCHED" "TYPESCH"  "FLEX"     "URBRUR"   "HOURS"   
[11] "SCHOOL"   "ANJOB"    "TYPERES"  "LENGTHE"  "HOWLONG"  "REASONQ"  "REASONW"  "WHY" 

所以,我想要一个面板,其中包含符合上述条件的所有可能的散点图。

我如何编写代码来做到这一点?

编辑:更清楚地说,lsietelcinco 没有改变,而是颜色中的变量改变了

编辑 2:举一个可重现的例子。我使用随机数据创建以下数据框:

sn <- data.frame(a=rnorm(100),b=rnorm(100), cat1=sample(c('male', 'female'), 100, replace=TRUE),cat2=sample(c('U', 'AL'), 100, replace=TRUE),cat3=sample(c('AR', 'ML'), 100, replace=TRUE),cat4=sample(c('LM', 'KR'), 100, replace=TRUE))

我可以用a和b创建一个qplot,并根据cat2给颜色:

qplot(a,b,data=sn,color=cat2)

但是,我想始终保留 a 和 b,并根据其余分类变量赋予颜色以获得所有可能散点图的面板。


最简单的方法是重塑数据并使用分面。这将创建一个包含四个面板和一个共享图例的图。

sn2 <- tidyr::gather(sn, 'cat', 'col', cat1:cat1.1)

ggplot(sn2, aes(a, b, col = col)) + geom_point() + facet_wrap(~cat)

或者,如果您更喜欢单独的图例,则需要创建四个图并将它们拼接在一起,如下所示:

plot_fun <- function(cat) {
  ggplot(sn, aes_(~a, ~b, col = cat)) + geom_point()
}

plot_list <- lapply(c(~cat1, ~cat2, ~cat3, ~cat1.1), plot_fun)
cowplot::plot_grid(plotlist = plot_list, align = 'hv')