首页 > 解决方案 > 在 ggplot 中使用 aes_string

问题描述

library(dplyr)
library(ggplot2)
library(gridExtra)

df <- data.frame(type = rep(c("cons", "dyn"), each = 15),
                 rain = sample(1:40, 30, replace = T), 
                 tmax =  sample(20:40, 30, replace = T), 
                 tmin = sample(1:10, 30, replace = T))
pdf("plot.pdf")

for(i in 2:ncol(df)){

   variable.name <- names(df)[i] 

    p1 <- ggplot(df, aes_string(variable.name)) + geom_histogram() + facet_wrap(~type)

    # I want to plot `variable.name` of `cons` and `dyn` against each other

    p2 <- ggplot(df, aes_string(x = variable.name[type == "cons"], y = variable.name[type == "dyn"])) + geom_point() 

    grid.arrange(p1, p2)
 }
dev.off()

目前,p2绘图不起作用,这是因为我无法对列进行子集化。

标签: rggplot2

解决方案


推荐阅读