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

时间:2016-09-05 05:58:05

标签: r ggplot2 visualization data-visualization

我用以下代码制作了变量lsiete和lcinco:

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

enter image description here

但是,我还希望通过以下因子变量为散点图赋予颜色,以便同时将其全部可视化:

> 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总是,并根据其余的分类变量给出颜色,以得到所有可能的散点图的面板。

1 个答案:

答案 0 :(得分:3)

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

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

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

enter image description here

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

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')

enter image description here