gpt4 book ai didi

r - 在 ggplot2 中的 geom_linerange() 上为置信区间添加水平指示线

转载 作者:行者123 更新时间:2023-12-04 11:32:38 24 4
gpt4 key购买 nike

我正在尝试生成 Obersved/预期医院感染率图表,其中误差条显示上下 95% 和 99.7% 置信区间。

数据如下:

orthssi <- structure(list(Hospital = structure(1:18, .Label = c("A", "B", 
"C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",
"P", "Q", "R"), class = "factor"), SSIs = c(80L, 38L, 24L, 35L,
39L, 30L, 128L, 27L, 70L, 30L, 30L, 2L, 6L, 38L, 3L, 9L, 52L,
13L), Procedures = c(865L, 1069L, 796L, 891L, 997L, 550L, 2598L,
373L, 1079L, 714L, 477L, 227L, 125L, 589L, 292L, 149L, 1984L,
351L), Expected = c(44.89, 51.149, 35.15, 42.495, 46.987, 26.999,
105.032, 18.304, 57.402, 31.409, 23.497, 10.898, 5.945, 29.614,
13.295, 6.403, 88.449, 16.083), OE = c(1.782, 0.743, 0.683, 0.824,
0.83, 1.111, 1.219, 1.475, 1.219, 0.955, 1.277, 0.184, 1.009,
1.283, 0.226, 1.406, 0.588, 0.808), Probability = c(0.092, 0.036,
0.03, 0.039, 0.039, 0.055, 0.049, 0.072, 0.065, 0.042, 0.063,
0.009, 0.048, 0.065, 0.01, 0.06, 0.026, 0.037), Lower95CI = c(1.42623345874945,
0.528256888855857, 0.439593399216354, 0.576826930846085, 0.593304300509315,
0.755779204034742, 1.02072916367972, 0.983076938281617, 0.957133142026683,
0.648442622896373, 0.86951670130161, 0.0222623281070364, 0.374607285544628,
0.916025825389466, 0.0466447169655834, 0.651315412316165, 0.440436907019126,
0.433548700419708), Upper95CI = c(2.19254259114914, 1.01294537379558,
1.00844478624614, 1.13663544526487, 1.12647704263608, 1.56764294951526,
1.44220199258348, 2.11060633474044, 1.52742490796631, 1.35122425878491,
1.7979937836084, 0.655351540870752, 2.13516991355386, 1.73993010418865,
0.652957058228699, 2.59615214768047, 0.76780774565962, 1.36405674299719
), Lower997CI = c(1.26545076052984, 0.438514548720716, 0.344268212303677,
0.474612391243614, 0.493987129703437, 0.611131699675563, 0.929047103197505,
0.785094671227173, 0.840231592610583, 0.523894662155343, 0.703500240342274,
0.00513071434039922, 0.20498124083422, 0.761788735802099, 0.0165744691173032,
0.414157407130073, 0.376765181801129, 0.303424472695538), Upper997CI = c(2.41408837016438,
1.16380466027892, 1.19392754588927, 1.31181443961792, 1.29178515824501,
1.82316431734875, 1.56260724140783, 2.46519277997175, 1.69514346690893,
1.57391071859294, 2.08889292293282, 0.966984581231215, 2.80639425224956,
1.99287051089929, 0.928351140481638, 3.28891183173877, 0.867510832843342,
1.68791001193251)), .Names = c("Hospital", "SSIs", "Procedures",
"Expected", "OE", "Probability", "Lower95CI", "Upper95CI", "Lower997CI",
"Upper997CI"), row.names = c(NA, -18L), class = "data.frame")
> ssi0106 <- dput(orthssi)
structure(list(Hospital = structure(1:18, .Label = c("A", "B",
"C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",
"P", "Q", "R"), class = "factor"), SSIs = c(80L, 38L, 24L, 35L,
39L, 30L, 128L, 27L, 70L, 30L, 30L, 2L, 6L, 38L, 3L, 9L, 52L,
13L), Procedures = c(865L, 1069L, 796L, 891L, 997L, 550L, 2598L,
373L, 1079L, 714L, 477L, 227L, 125L, 589L, 292L, 149L, 1984L,
351L), Expected = c(44.89, 51.149, 35.15, 42.495, 46.987, 26.999,
105.032, 18.304, 57.402, 31.409, 23.497, 10.898, 5.945, 29.614,
13.295, 6.403, 88.449, 16.083), OE = c(1.782, 0.743, 0.683, 0.824,
0.83, 1.111, 1.219, 1.475, 1.219, 0.955, 1.277, 0.184, 1.009,
1.283, 0.226, 1.406, 0.588, 0.808), Probability = c(0.092, 0.036,
0.03, 0.039, 0.039, 0.055, 0.049, 0.072, 0.065, 0.042, 0.063,
0.009, 0.048, 0.065, 0.01, 0.06, 0.026, 0.037), Lower95CI = c(1.42623345874945,
0.528256888855857, 0.439593399216354, 0.576826930846085, 0.593304300509315,
0.755779204034742, 1.02072916367972, 0.983076938281617, 0.957133142026683,
0.648442622896373, 0.86951670130161, 0.0222623281070364, 0.374607285544628,
0.916025825389466, 0.0466447169655834, 0.651315412316165, 0.440436907019126,
0.433548700419708), Upper95CI = c(2.19254259114914, 1.01294537379558,
1.00844478624614, 1.13663544526487, 1.12647704263608, 1.56764294951526,
1.44220199258348, 2.11060633474044, 1.52742490796631, 1.35122425878491,
1.7979937836084, 0.655351540870752, 2.13516991355386, 1.73993010418865,
0.652957058228699, 2.59615214768047, 0.76780774565962, 1.36405674299719
), Lower997CI = c(1.26545076052984, 0.438514548720716, 0.344268212303677,
0.474612391243614, 0.493987129703437, 0.611131699675563, 0.929047103197505,
0.785094671227173, 0.840231592610583, 0.523894662155343, 0.703500240342274,
0.00513071434039922, 0.20498124083422, 0.761788735802099, 0.0165744691173032,
0.414157407130073, 0.376765181801129, 0.303424472695538), Upper997CI = c(2.41408837016438,
1.16380466027892, 1.19392754588927, 1.31181443961792, 1.29178515824501,
1.82316431734875, 1.56260724140783, 2.46519277997175, 1.69514346690893,
1.57391071859294, 2.08889292293282, 0.966984581231215, 2.80639425224956,
1.99287051089929, 0.928351140481638, 3.28891183173877, 0.867510832843342,
1.68791001193251)), .Names = c("Hospital", "SSIs", "Procedures",
"Expected", "OE", "Probability", "Lower95CI", "Upper95CI", "Lower997CI",
"Upper997CI"), row.names = c(NA, -18L), class = "data.frame")

这是我生成绘图的 ggplot 代码:

ggplot(data=orthssi, mapping=aes(x=Hospital, y=OE, ymin = Lower997CI, ymax = Upper997CI)) + 
geom_hline(yintercept=1, colour='gray') +
geom_point(colour='blue', size=3) +
scale_y_continuous(limits=c(0,ceiling(max(orthssi$Upper997CI)))) +
geom_linerange(mapping=aes(x=Hospital)) +
theme_bw() + theme(panel.grid.major.x = element_blank())

它产生以下图表: O/E infection rate by hospital

我想做但无法做到的是,在 geom_linerange() 上放置小的水平刻度,指示上下 95% 和 99.7% 置信区间的位置。

编辑如果您是 ggplot 忍者,我也会接受不同的线条颜色,指示 99.7& CI 超出 95% CI 的位置。

非常感谢任何有关如何添加这些刻度/颜色的帮助。

最佳答案

geom_errorbar 将创建一个在末尾带有水平条的线范围。因此,以下将起作用

ggplot(data=orthssi, mapping=aes(x=Hospital, y=OE, ymin = Lower997CI, ymax = Upper997CI)) + 
geom_hline(yintercept = 1, colour = 'gray') +
geom_point(colour = 'blue', size = 3) +
scale_y_continuous(limits=c(0, ceiling(max(orthssi$Upper997CI)))) +
theme_bw() + theme(panel.grid.major.x = element_blank()) +
geom_errorbar(aes(ymin = Lower95CI,ymax = Upper95CI),width = 0.2,colour = 'red') +
geom_errorbar(width = 0.2)

enter image description here

请注意,geom_linerange(mapping = aes(x = Hospital)) 组件已被删除,因为它是作为 geom_errorbar(width = 0.2) 的一部分绘制的。 p>

关于r - 在 ggplot2 中的 geom_linerange() 上为置信区间添加水平指示线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20962843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com