通过不同的变量值为每个方面着色

时间:2018-11-18 18:11:27

标签: r ggplot2 tidyverse

我有一个如下数据框:

df = data.frame(x = runif(100, 0, 1),
                y = runif(100, 1, 2),
                var1 = runif(100, 0, 1),
                var2 = runif(100, 0, 1),
                var3 = rep(c("a", "b"), 50))

我想在ggplot2中制作一个多面图,在每个小平面(散点图)中绘制相同的xy,但是用var1,{{1} }和var2。在这种情况下,只有3个构面,每个着色列对应一个构图。

这怎么办?

1 个答案:

答案 0 :(得分:3)

plots = lapply(3:5, function(i){
    dt = df[,c(1, 2, i)]
    ggplot(data = dt, aes_string(x = names(dt)[1],
                                 y = names(dt)[2],
                                 color = names(dt[3]))) +
        geom_point()
})
library(gridExtra)
do.call(function(...){
    grid.arrange (..., ncol = 3)},
    plots)

Rplot