簡體   English   中英

ggplot2 分組箱線圖不會將不同時間點的組分開

[英]ggplot2 grouped boxplot doesn't separate groups for different timepoints

我有一個包含兩組的簡單數據集,每個組在 4 個不同的時間點都有一個值。 我想隨着時間的推移將此數據集顯示為分組箱線圖,但 ggplot2 不分隔時間點。

這是我的數據:

 matrix
    Replicate Line Day Treatment  X A WT     Marker Proportion
            1    C  10       low NA      HuCHuD_Pos       8.62
            2    C  10       low NA      HuCHuD_Pos         NA
            1    C  18       low NA      HuCHuD_Pos      30.50                                                    
            3    C  18       low NA      HuCHuD_Pos         NA
            2    C  18       low NA      HuCHuD_Pos         NA
            1    C  50       low NA      HuCHuD_Pos      26.10
            2    C  50       low NA      HuCHuD_Pos      31.90
            1    C  80       low NA      HuCHuD_Pos      12.70
            2    C  80       low NA      HuCHuD_Pos      26.20
            1    C  10    normal NA      HuCHuD_Pos         NA
            2    C  10    normal NA      HuCHuD_Pos      17.20
            1    C  18    normal NA      HuCHuD_Pos       3.96
            2    C  18    normal NA      HuCHuD_Pos         NA
            1    C  50    normal NA      HuCHuD_Pos      25.60
            2    C  50    normal NA      HuCHuD_Pos      17.50
            1    C  80    normal NA      HuCHuD_Pos      19.00
           NA    C  80    normal NA      HuCHuD_Pos         NA

這是我的代碼:

matrix = as.data.frame(subset(data.long, Line == line_single & Marker == marker_single & Day != "30"))

pdf(paste(line_name_single, marker_name_single, ".pdf"), width=10, height=10)
plot <- 
ggplot(data=matrix,aes(x=Day, y=Proportion, group=Treatment, fill=Treatment)) +
geom_boxplot(position=position_dodge(1))   
print(plot)
dev.off()

我做錯了什么?

我想要的是

我得到的

非常感謝您的幫助!

干杯,寶拉

編輯:

這是您問題的最小可重現示例的樣子:

matrix <- structure(list(Day = c(10L, 10L, 18L, 18L, 18L, 50L, 50L, 80L, 80L, 10L, 10L, 18L, 18L, 50L, 50L, 80L, 80L),
                         Treatment = c("low", "low", "low", "low", "low", "low", "low", "low", "low", "normal", "normal", "normal", "normal", "normal", "normal", "normal", "normal"), 
                         Proportion = c(8.62, NA, 30.5, NA, NA, 26.1, 31.9, 12.7, 26.2, NA, 17.2, 3.96, NA, 25.6, 17.5, 19, NA)),
                    class = "data.frame", row.names = c(NA, -17L))

使用factor “離散化”變量Day建議答案:

ggplot(data=matrix,aes(x=factor(Day), y=Proportion,  fill=Treatment)) +
  geom_boxplot(position=position_dodge(1)) +
  labs(x ="Day")

在此處輸入圖片說明

說明:如果我們將一個連續變量傳遞給箱線圖的 'x' 軸, ggplot2不會將該軸轉換為離散變量。 因此,由於缺少“分組”變量,我們只能得到一個框。 但是如果我們將變量轉換為離散的東西,比如一個因子、一個字符串或一個日期,我們就會得到想要的行為。

此外,當您使用dput此處描述的技術之一時,查找和測試答案比嘗試使用問題中的數據描述要容易得多(或者至少我不知道如何加載那個示例數據)

PS 我認為命名類data.frame 'matrix' 的變量有點令人困惑,因為matrix在 R 中是它自己的數據類型......;)

暫無
暫無

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

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