簡體   English   中英

為分類盒圖,ggplot2添加限制

[英]adding limits to categorical boxplot, ggplot2

嗨,ggplot2社區-

我似乎無法弄清楚該問題的解決方法,非常感謝您的幫助!

我在各個站點采集了成分濃度數據,我想做的是構造一個箱形圖,顯示每個站點的樣品分布和局部限值。 但是,在我的數據集中,有些站點有限制,而另一些則沒有。 我想在箱線圖上方放置一條水平線,以顯示局部極限,但我希望線僅出現在具有它們的站點上。

嘗試在僅幾個站點而不是整個數據集上放置一條線時,使用geom_segment和geom_hline和geom_errorbar甚至geom_crossbar出現錯誤。 我還想避免不必要的行。

這是一些示例虹膜數據。 與我的情況類似,我想在萼片長度= 8處添加一條水平線,使其僅出現在“ versicolor”和“ virginica”物種上方。

有沒有辦法做到這一點?

library(ggplot2)

sepal_leng<-ggplot(iris, aes(factor(Species), y=Sepal.Length))
sepal_leng<-sepal_leng+geom_boxplot()
sepal_leng

我將通過創建一個包含組及其限制的單獨數據集來做到這一點。

limdat = data.frame(Species = c("versicolor", "virginica"), limits = 8)

然后,您可以使用此數據集通過geom_crossbargeom_errorbar或其他方式添加一條水平線。 請注意,將ymaxymin設置為y以使線水平。

ggplot(iris, aes(factor(Species), y=Sepal.Length)) +
    geom_boxplot() +
    geom_errorbar(data = limdat, aes(y = limits, ymin = ..y.., ymax = ..y..))

在此處輸入圖片說明

您可能最終想要圖例來指示行是什么,可以通過將常量映射到linetype

ggplot(iris, aes(factor(Species), y=Sepal.Length)) +
    geom_boxplot() +
    geom_errorbar(data = limdat, 
                aes(y = limits, ymin = ..y.., ymax = ..y.., linetype = "Local limit")) +
    scale_linetype_discrete(name = NULL)

在此處輸入圖片說明

暫無
暫無

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

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