R中GGplots for循环中的数学符号

Math Symbols within for loop of GGplots in R

我目前正在尝试开发与 类似的结果。 x-axis.

我有大量的列和几个不同的标签
col1 <- c(2, 4, 1, 2, 5, 1, 2, 0, 1, 4, 4, 3, 5, 2, 4, 3, 3, 6, 5, 3, 6, 4, 3, 4, 4, 3, 4, 
          2, 4, 3, 3, 5, 3, 5, 5, 0, 0, 3, 3, 6, 5, 4, 4, 1, 3, 3, 2, 0, 5, 3, 6, 6, 2, 3, 
          3, 1, 5, 3, 4, 6)
col2 <- c(2, 4, 4, 0, 4, 4, 4, 4, 1, 4, 4, 3, 5, 0, 4, 5, 3, 6, 5, 3, 6, 4, 4, 2, 4, 4, 4, 
          1, 1, 2, 2, 3, 3, 5, 0, 3, 4, 2, 4, 5, 5, 4, 4, 2, 3, 5, 2, 6, 5, 2, 4, 6, 3, 3, 
          3, 1, 4, 3, 5, 4)
col3 <- c(2, 5, 4, 1, 4, 2, 3, 0, 1, 3, 4, 2, 5, 1, 4, 3, 4, 6, 3, 4, 6, 4, 1, 3, 5, 4, 3, 
          2, 1, 3, 2, 2, 2, 4, 0, 1, 4, 4, 3, 5, 3, 2, 5, 2, 3, 3, 4, 2, 4, 2, 4, 5, 1, 3, 
          3, 3, 4, 3, 5, 4)
col4 <- c(2, 5, 2, 1, 4, 1, 3, 4, 1, 3, 5, 2, 4, 3, 5, 3, 4, 6, 3, 4, 6, 4, 3, 2, 5, 5, 4,
          2, 3, 2, 2, 3, 3, 4, 0, 1, 4, 3, 3, 5, 4, 4, 4, 3, 3, 5, 4, 3, 5, 3, 6, 6, 4, 2, 
          3, 3, 4, 4, 4, 6)
data2 <- data.frame(col1,col2,col3,col4)
data2[,1:4] <- lapply(data2[,1:4], as.factor)
colnames(data2)<- c("A","B","C", "D")

> x.axis.list

[[1]]
expression(beta[paste(1, ",", 1L)])

[[2]]
expression(beta[paste(1, ",", 2L)])

[[3]]
expression(beta[paste(1, ",", 3L)])

[[4]]
expression(beta[paste(1, ",", 4L)])

myplots <- vector('list', ncol(data2))

for (i in seq_along(data2)) {
    message(i)
    myplots[[i]] <- local({
        i <- i
        p1 <- ggplot(data2, aes(x = data2[[i]])) +
            geom_histogram(fill = "lightgreen") +
            xlab(x.axis.list[[i]])
        print(p1)
    })
}

过去,我可以做类似的事情,我可以将 x.axis.list[[i]] 放入循环中并更改符号。但是,我继续在轴上得到术语 expression。所以 Beta 的符号和下标都是正确的,但“表达式”一词仍然存在。我不确定我究竟做错了什么,有那么一刻,我能够制作一个没有“表达”的情节,但它一直留在 ggplot.

我希望能够制作这个情节,或者一个标题在 y-axis 上但没有“表达”一词的情节。

我的图像目前看起来 。我不担心这个示例数据和情节的结果,我想知道如何摆脱“表达式”,所以只显示数学符号。

提前致谢。

你可以这样做:

for (i in seq_along(data2)) {
    df <- data2[i]
    names(df)[1] <- "x"
    myplots[[i]] <- local({
        p1 <- ggplot(df, aes(x = x)) +
            geom_bar(fill = "lightgreen", stat = "count") +
            xlab(x.axis.list[[i]])
    })
}

我们可以一起展示所有的情节:

library(patchwork)
(myplots[[1]] + myplots[[2]]) / (myplots[[3]] + myplots[[4]])

注意我创建的表达式列表是这样的:

x.axis.list <- lapply(1:4, function(i){
  parse(text = paste0("beta[paste(1, \",\", ", i, ")]"))
  })