簡體   English   中英

R 中 GGplots for 循環中的數學符號

[英]Math Symbols within for loop of GGplots in R

我目前正在嘗試開發與此鏈接類似的結果。 我有大量的列和 x 軸的幾個不同標簽。

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 的符號和下標都是正確的,但“表達式”一詞仍然存在。 我不確定我究竟做錯了什么,有那么一刻,我能夠生成一個沒有“表達式”的 plot 但它一直留在ggplot中。

我希望能夠生成這個 plot,或者一個在 y 軸上沒有“表達式”一詞的標題。

我的形象目前看起來像這樣 . 我不擔心這個示例數據和 plot 的結果,我想知道如何擺脫“表達式”,所以只顯示數學符號。

提前致謝。

你可以做:

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, ")]"))
  })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM