簡體   English   中英

如何將陰影置信區間添加到具有指定值的線圖

[英]How to add shaded confidence intervals to line plot with specified values

我有一個匯總數據的小表格,其中包含四個類別的優勢比、置信上限和下限,每個類別有六個級別。 我想使用 ggplot2 生成一個圖表,該圖表看起來類似於您指定 lm 時創建的通常創建的圖表,並且它是 se,但我希望 R 只是使用我在表格中預先指定的值。 我設法創建了帶有誤差線的折線圖,但這些線圖重疊並使其不清楚。 數據如下所示:

interval    OR  Drug    lower   upper
14  0.004   a   0.002   0.205
30  0.022   a   0.001   0.101
60  0.13    a   0.061   0.23
90  0.22    a   0.14    0.34
180 0.25    a   0.17    0.35
365 0.31    a   0.23    0.41
14  0.84    b   0.59    1.19
30  0.85    b   0.66    1.084
60  0.94    b   0.75    1.17
90  0.83    b   0.68    1.01
180 1.28    b   1.09    1.51
365 1.58    b   1.38    1.82
14  1.9 c   0.9 4.27
30  2.91    c   1.47    6.29
60  2.57    c   1.52    4.55
90  2.05    c   1.31    3.27
180 2.422   c   1.596   3.769
365 2.83    c   1.93    4.26
14  0.29    d   0.04    1.18
30  0.09    d   0.01    0.29
60  0.39    d   0.17    0.82
90  0.39    d   0.2 0.7
180 0.37    d   0.22    0.59
365 0.34    d   0.21    0.53

我試過這個:

limits <- aes(ymax=upper, ymin=lower)
dodge <- position_dodge(width=0.9)
ggplot(data, aes(y=OR, x=days, colour=Drug)) + 
  geom_line(stat="identity") + 
  geom_errorbar(limits, position=dodge)

並尋找合適的答案來創建一個漂亮的情節,但我很困惑!

非常感謝任何幫助!

您需要以下幾行:

p<-ggplot(data=data, aes(x=interval, y=OR, colour=Drug)) + geom_point() + geom_line()
p<-p+geom_ribbon(aes(ymin=data$lower, ymax=data$upper), linetype=2, alpha=0.1)

在此處輸入圖片說明

這是使用polygon() 的基本R 方法,因為@jmb 在評論中請求了解決方案。 請注意,我必須為要繪制的多邊形定義兩組 x 值和關聯的 y 值。 它的工作原理是繪制多邊形的外周長。 我定義了 plot type = 'n' 並分別使用 points() 來獲取多邊形頂部的點。 我個人的偏好是盡可能使用上面的 ggplot 解決方案,因為多邊形()非常笨重。

library(tidyverse)

data('mtcars')  #built in dataset

mean.mpg = mtcars %>% 
  group_by(cyl) %>% 
  summarise(N = n(),
        avg.mpg = mean(mpg),
        SE.low = avg.mpg - (sd(mpg)/sqrt(N)),
        SE.high =avg.mpg + (sd(mpg)/sqrt(N)))


plot(avg.mpg ~ cyl, data = mean.mpg, ylim = c(10,30), type = 'n')

#note I have defined c(x1, x2) and c(y1, y2)
polygon(c(mean.mpg$cyl, rev(mean.mpg$cyl)), 
c(mean.mpg$SE.low,rev(mean.mpg$SE.high)), density = 200, col ='grey90')

points(avg.mpg ~ cyl, data = mean.mpg, pch = 19, col = 'firebrick')

暫無
暫無

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

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