r - 为图形的特定部分添加 geom_vline,而不是所有图
问题描述
使用此代码
ggplot(SurJagPred$estimates, aes(x=Primary, y=estimate, col=Sex)) +
geom_line(aes(), size = 1) +
geom_point()+
geom_errorbar(aes(ymin = lcl, ymax = ucl ), alpha = 0.5) +
geom_vline(xintercept = 2.5, linetype = "dotdash") +
geom_vline(xintercept = 3.5, linetype = "dotdash") +
geom_vline(xintercept = 4.5, linetype = "dotdash") +
facet_wrap(~ grid)+
labs(title = "Survival of Small Mammals", x = "Primary Periods", y = "Survival Rate (95% CI)") +
theme_bw(base_size = 12)+ #text size
theme(panel.grid = element_blank())
但是,点划线不应该到处重复。对于 A 地块,它应该只在 4.5 的位置,B 地块应该只在 2.5 的位置,C 应该只在 3.5 的位置。我尝试使用此代码创建具有这些细节的数据框
treatment<- c(2.5, 3.5, 4.5 )
letter<- c("B", "C", "A")
treat<- data.frame(treatment, letter)
但后来我不知道如何将它与另一个数据框合并到 ggplot 中。是否有捷径可寻?
编辑添加更多数据这是 SURJAGPred$Estimates
vcv.index model.index par.index grid index estimate se lcl ucl fixed Primary Sex
1 6 6 16 A 16 0.8856129 0.07034495 0.6650065 0.9679442 1 F
2 7 7 17 A 17 0.6298085 0.06925362 0.4873071 0.7527946 2 F
3 8 8 18 A 18 0.6299329 0.06658399 0.4930294 0.7487096 3 F
4 9 9 19 A 19 0.6298073 0.05511803 0.5170043 0.7300226 4 F
5 10 10 20 A 20 0.7575780 0.05033492 0.6461752 0.8424570 5 F
6 21 21 61 B 61 0.8712803 0.07640191 0.6404038 0.9625845 1 F
7 22 22 62 B 62 0.6074361 0.06881164 0.4677850 0.7314780 2 F
8 23 23 63 B 63 0.6041038 0.06107390 0.4805314 0.7156737 3 F
9 24 24 64 B 64 0.5806663 0.06927518 0.4422311 0.7074705 4 F
10 25 25 65 B 65 0.7370924 0.05892159 0.6070616 0.8357368 5 F
11 41 41 121 C 121 0.8047651 0.09683670 0.5519029 0.9324112 1 F
12 42 42 122 C 122 0.5259543 0.07165185 0.3871407 0.6608688 2 F
13 43 43 123 C 123 0.5427102 0.07127190 0.4033297 0.6757102 3 F
14 44 44 124 C 124 0.5168940 0.06156377 0.3975699 0.6343222 4 F
15 45 45 125 C 125 0.6550035 0.07378427 0.5002863 0.7826314 5 F
16 196 196 586 A 586 0.8535576 0.08711021 0.5979391 0.9580602 1 M
17 197 197 587 A 587 0.5672181 0.07079460 0.4268475 0.6975683 2 M
18 198 198 588 A 588 0.5675404 0.06380437 0.4408554 0.6859682 3 M
19 199 199 589 A 589 0.5666988 0.06499677 0.4377245 0.6872281 4 M
20 200 200 590 A 590 0.7058527 0.05985742 0.5769525 0.8085129 5 M
21 211 211 631 B 631 0.8359801 0.09415382 0.5702268 0.9514068 1 M
22 212 212 632 B 632 0.5432876 0.07906137 0.3891407 0.6895670 2 M
23 213 213 633 B 633 0.5401000 0.06497578 0.4129088 0.6622738 3 M
24 214 214 634 B 634 0.5161817 0.06292617 0.3943413 0.6361283 4 M
25 215 215 635 B 635 0.6821666 0.07279913 0.5263900 0.8056259 5 M
26 226 226 676 C 676 0.7620894 0.10484134 0.5077061 0.9086707 1 M
27 227 227 677 C 677 0.4607459 0.07326857 0.3240289 0.6036357 2 M
28 228 228 678 C 678 0.4775193 0.08336355 0.3219411 0.6375852 3 M
29 229 229 679 C 679 0.4517796 0.06392891 0.3319493 0.5774748 4 M
30 230 230 680 C 680 0.5944339 0.07210424 0.4492079 0.7248249 5 M
解决方案
试试@eipi10提到的这个(在缺乏数据的情况下未测试)。此外,当您使用颜色变量时,线条的数据应包含该变量,但您可以使用NA
. 这里的代码:
library(ggplot2)
#Data
Primary<- c(2.5, 3.5, 4.5 )
grid<- c("B", "C", "A")
treat<- data.frame(grid, Primary,stringsAsFactors = F)
treat$col <- NA
#Plot
ggplot(SurJagPred$estimates, aes(x=Primary, y=estimate, col=Sex)) +
geom_line(aes(), size = 1) +
geom_point()+
geom_errorbar(aes(ymin = lcl, ymax = ucl ), alpha = 0.5) +
geom_vline(data=treat,aes(xintercept = Primary), linetype = "dotdash") +
facet_wrap(~ grid)+
labs(title = "Survival of Small Mammals", x = "Primary Periods",
y = "Survival Rate (95% CI)") +
theme_bw(base_size = 12)+ #text size
theme(panel.grid = element_blank())
共享数据:
#Data
Primary<- c(2.5, 3.5, 4.5 )
grid<- c("B", "C", "A")
treat<- data.frame(grid, Primary,stringsAsFactors = F)
treat$col <- NA
#Plot
ggplot(df, aes(x=Primary, y=estimate, col=Sex)) +
geom_line(aes(), size = 1) +
geom_point()+
geom_errorbar(aes(ymin = lcl, ymax = ucl ), alpha = 0.5) +
geom_vline(data=treat,aes(xintercept = Primary), linetype = "dotdash") +
facet_wrap(~ grid)+
labs(title = "Survival of Small Mammals", x = "Primary Periods",
y = "Survival Rate (95% CI)") +
theme_bw(base_size = 12)+ #text size
theme(panel.grid = element_blank())
输出:
使用的一些数据:
#Data
df <- structure(list(vcv.index = c(6L, 7L, 8L, 9L, 10L, 21L, 22L, 23L,
24L, 25L, 41L, 42L, 43L, 44L, 45L, 196L, 197L, 198L, 199L, 200L,
211L, 212L, 213L, 214L, 215L, 226L, 227L, 228L, 229L, 230L),
model.index = c(6L, 7L, 8L, 9L, 10L, 21L, 22L, 23L, 24L,
25L, 41L, 42L, 43L, 44L, 45L, 196L, 197L, 198L, 199L, 200L,
211L, 212L, 213L, 214L, 215L, 226L, 227L, 228L, 229L, 230L
), par.index = c(16L, 17L, 18L, 19L, 20L, 61L, 62L, 63L,
64L, 65L, 121L, 122L, 123L, 124L, 125L, 586L, 587L, 588L,
589L, 590L, 631L, 632L, 633L, 634L, 635L, 676L, 677L, 678L,
679L, 680L), grid = c("A", "A", "A", "A", "A", "B", "B",
"B", "B", "B", "C", "C", "C", "C", "C", "A", "A", "A", "A",
"A", "B", "B", "B", "B", "B", "C", "C", "C", "C", "C"), index = c(16L,
17L, 18L, 19L, 20L, 61L, 62L, 63L, 64L, 65L, 121L, 122L,
123L, 124L, 125L, 586L, 587L, 588L, 589L, 590L, 631L, 632L,
633L, 634L, 635L, 676L, 677L, 678L, 679L, 680L), estimate = c(0.8856129,
0.6298085, 0.6299329, 0.6298073, 0.757578, 0.8712803, 0.6074361,
0.6041038, 0.5806663, 0.7370924, 0.8047651, 0.5259543, 0.5427102,
0.516894, 0.6550035, 0.8535576, 0.5672181, 0.5675404, 0.5666988,
0.7058527, 0.8359801, 0.5432876, 0.5401, 0.5161817, 0.6821666,
0.7620894, 0.4607459, 0.4775193, 0.4517796, 0.5944339), se = c(0.07034495,
0.06925362, 0.06658399, 0.05511803, 0.05033492, 0.07640191,
0.06881164, 0.0610739, 0.06927518, 0.05892159, 0.0968367,
0.07165185, 0.0712719, 0.06156377, 0.07378427, 0.08711021,
0.0707946, 0.06380437, 0.06499677, 0.05985742, 0.09415382,
0.07906137, 0.06497578, 0.06292617, 0.07279913, 0.10484134,
0.07326857, 0.08336355, 0.06392891, 0.07210424), lcl = c(0.6650065,
0.4873071, 0.4930294, 0.5170043, 0.6461752, 0.6404038, 0.467785,
0.4805314, 0.4422311, 0.6070616, 0.5519029, 0.3871407, 0.4033297,
0.3975699, 0.5002863, 0.5979391, 0.4268475, 0.4408554, 0.4377245,
0.5769525, 0.5702268, 0.3891407, 0.4129088, 0.3943413, 0.52639,
0.5077061, 0.3240289, 0.3219411, 0.3319493, 0.4492079), ucl = c(0.9679442,
0.7527946, 0.7487096, 0.7300226, 0.842457, 0.9625845, 0.731478,
0.7156737, 0.7074705, 0.8357368, 0.9324112, 0.6608688, 0.6757102,
0.6343222, 0.7826314, 0.9580602, 0.6975683, 0.6859682, 0.6872281,
0.8085129, 0.9514068, 0.689567, 0.6622738, 0.6361283, 0.8056259,
0.9086707, 0.6036357, 0.6375852, 0.5774748, 0.7248249), Primary = c(1L,
2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L,
2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L),
Sex = c("F", "F", "F", "F", "F", "F", "F", "F", "F", "F",
"F", "F", "F", "F", "F", "M", "M", "M", "M", "M", "M", "M",
"M", "M", "M", "M", "M", "M", "M", "M")), row.names = c(NA,
-30L), class = "data.frame")
推荐阅读
- tcl - 如何将包含单个正斜杠的网络文件路径作为参数传递给 tcl proc?
- amazon-web-services - 将数据从 AWS Glue 数据目录提取到外部文本文件
- node.js - 如何在没有 root 的情况下从 Ubuntu 18.04.3 中完全删除节点?
- flutter - 如何在颤动中显示小吃吧无限持续时间?
- javascript - 如何在 JS FETCH API 之外访问返回值
- python - 如何解决与在 Windows 10 上安装 dlib 相关的问题?
- c# - HashSet 重叠不能按预期工作
- netlogo - 如何让Netlogo模型自动停止,关闭文件并重新启动模型
- wordpress - 使用 SSL 的 WordPress 多站点主页重定向问题
- node.js - NODEJS INSERT DATA INTO POSTGRESQL(错误:“$”处或附近的语法错误)