具有不同分类变量的所有可能的 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"
所以,我想要一个面板,其中包含符合上述条件的所有可能的散点图。
我如何编写代码来做到这一点?
编辑:更清楚地说,lsiete
和 lcinco
没有改变,而是颜色中的变量改变了
编辑 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')
我用以下代码绘制了变量 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"
所以,我想要一个面板,其中包含符合上述条件的所有可能的散点图。
我如何编写代码来做到这一点?
编辑:更清楚地说,lsiete
和 lcinco
没有改变,而是颜色中的变量改变了
编辑 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')