ggplot2传递变量以绘制到函数

时间:2017-09-05 17:49:33

标签: r plot ggplot2

我使用ggplot来使用多个图,所以我构建了自己的函数。

plothist <- function(a) {
  ggplot(aes(x = a), data = data) + geom_histogram()
}

p1 <- plothist(data$fixed.acidity)
p2 <- plothist(data$volatile.acidity)
p3 <- plothist(data$citric.acid)
p4 <- plothist(data$residual.sugar)
p5 <- plothist(data$chlorides)
p6 <- plothist(data$free.sulfur.dioxide)
p7 <- plothist(data$total.sulfur.dioxide)
p8 <- plothist(data$density)
p9 <- plothist(data$pH)
p10 <- plothist(data$sulphates)
p11 <- plothist(data$alcohol)

x <- grid.arrange(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11,
                  top = "Histogram of independent variables")
x

x轴没有变量的名称,我只能看到&#34; a&#34;在每个情节,这使得情节相当无用。你能帮我看看如何在那里显示实际的变量吗?

2 个答案:

答案 0 :(得分:2)

使用aes_string进行此类编程:

library(ggplot2)

plothist <- function(data, column) {
  ggplot(data, aes_string(x = column)) + geom_histogram()
}

plothist(data, "fixed.acidity")

答案 1 :(得分:1)

您的功能只需要进行少量修改:

plotHist <- function(inputData, columnToPlot) {
    # Load library as your function doesn't know
    # what is this ggplot function you want to use
    library(ggplot2)
    resultPlot <- ggplot(inputData, aes(get(columnToPlot))) + 
        geom_histogram() +
        labs(x = columnToPlot)
    return(resultPlot)
}
plotHist(mtcars, "cyl")

columnToPlot是您要绘制的列的名称。此外,您需要传递inputData参数,因为您的给定函数不知道dinputData是什么。