我正在寻找一种R或ggplot2解决方案,用于绘制带有阴影的线表示标准误差。谷歌已经有一段时间没有运气了。
有没有人有类似的经验,并愿意分享将不胜感激。
我使用的示例代码:
> dat <- read.table('sample',header=TRUE)
> ggplot(dat, aes(x=pos,y=value, colour=type))+geom_line()
我生成的图:
样本数据:
pos value type
1 1.40685064701 A
2 1.58314330023 A
3 1.74204838899 A
4 1.61736939797 A
5 1.29508580767 A
6 1.09467905031 A
7 1.10472385941 A
8 1.02381316251 A
9 1.30213436484 A
10 1.70752481609 A
11 2.01875034644 A
12 1.82218601208 A
13 1.46976809915 A
14 1.78802276311 A
15 1.93459128836 A
16 1.95665864564 A
17 1.57026992442 A
18 1.15962402775 A
19 1.05305484021 A
20 0.919362594185 A
21 0.833060897559 A
22 0.77778822023 A
23 0.980084775745 A
24 1.32114351777 A
25 1.55352963275 A
26 1.57375922815 A
27 1.14493868782 A
28 0.25294849907 A
29 -0.40599118604 A
30 -0.487054890978 A
31 -0.333389189047 A
32 -0.226405253731 A
33 -0.24558780059 A
34 -0.180403027022 A
35 -0.266733706191 A
36 -0.0762920840723 A
37 0.465100892866 A
38 0.516633798421 A
39 0.644986315681 A
40 1.09115362242 A
41 1.08889196437 A
42 0.862434726048 A
43 0.604042272774 A
44 0.328584834197 A
45 0.598617257523 A
46 1.05219653601 A
47 1.10798332527 A
48 0.948151198722 A
49 0.546516443068 A
50 0.291735961134 A
51 0.238335006253 A
52 0.425304707962 A
53 0.817302425729 A
54 1.38852220304 A
55 2.34024990348 A
56 3.09941186364 A
57 4.06854366458 A
58 4.82115051043 A
59 4.55199542056 A
60 6.17279510607 A
61 10.3162999798 A
62 12.996627449 A
63 12.2731258622 A
64 10.8544867366 A
65 8.27264346102 A
66 5.79180739043 A
67 4.81947524098 A
68 4.19372954801 A
69 3.46244417879 A
70 2.69421581749 A
71 1.93753362259 A
72 1.54011797412 A
73 1.29959330498 A
74 1.21705330118 A
75 1.22382555287 A
76 0.952475753311 A
77 0.686398680367 A
78 0.747237736846 A
79 0.720306209509 A
80 0.463068694886 A
81 0.306876218733 A
82 0.121617637342 A
83 0.0460331524847 A
84 -0.0107323735891 A
85 -0.0629997057801 A
86 -0.19204582316 A
87 -0.371375773255 A
88 -0.42668686684 A
89 -0.326517894916 A
90 -0.277301361031 A
91 -0.0386177879973 A
92 0.0101084138435 A
93 0.0605269021344 A
94 0.182751080385 A
95 0.13310933252 A
96 0.27074048104 A
97 0.267598260699 A
98 0.349363089715 A
99 0.264445135486 A
100 0.218924366626 A
101 0.153338812341 A
102 -0.0679742801523 A
103 -0.30849875963 A
104 -0.28903625474 A
105 -0.188860043325 A
106 -0.204777388005 A
107 -0.1461100225 A
108 0.102433799309 A
109 0.122246106735 A
110 -0.105920831771 A
111 -0.21545039794 A
112 -0.135846098251 A
113 -0.105900152586 A
114 -0.247196889682 A
115 -0.312824264065 A
116 -0.251182865438 A
117 -0.0867113506532 A
118 0.00458490479941 A
119 -0.0960520134953 A
120 -0.235300588181 A
1 0.939235632937 A
2 1.28838263139 A
3 1.42730334901 A
4 1.22224614063 A
5 0.896759827332 A
6 0.642894836093 A
7 0.737029720141 A
8 0.774643396412 A
9 0.759420758029 A
10 1.04696772347 A
11 1.23504525458 A
12 1.0676601916 A
13 0.826029313299 A
14 1.14629521568 A
15 1.14142924359 A
16 1.22956581755 A
17 1.13136892357 A
18 0.800448368445 A
19 0.652191202322 A
20 0.498096263495 A
21 0.555339022027 A
22 0.545965232595 A
23 0.726231857788 A
24 0.849494247969 A
25 0.916259379894 A
26 0.879335232046 A
27 0.56575342831 A
28 0.108604596914 A
29 -0.225555689899 A
30 -0.320456274731 A
31 -0.230459986895 A
32 -0.042388319738 A
33 -0.0833366171628 A
34 -0.0460734786257 A
35 -0.229033279226 A
36 -0.175845833699 A
37 0.197716175342 A
38 0.28980276875 A
39 0.512487189675 A
40 0.683324573043 A
41 0.631659584895 A
42 0.522329104013 A
43 0.393330574908 A
44 0.168841230084 A
45 0.350442790229 A
46 0.72946349718 A
47 0.925052059705 A
48 0.821386076473 A
49 0.505908860228 A
50 0.297370018812 A
51 0.212971428154 A
52 0.390453125173 A
53 0.719985040719 A
54 0.977964675176 A
55 1.54450254277 A
56 2.14621503854 A
57 2.99079642364 A
58 3.39269707733 A
59 3.33188837547 A
60 4.10675880825 A
61 6.96009219664 A
62 9.04165938743 A
63 8.65369320149 A
64 7.94685353567 A
65 5.99410112792 A
66 4.270657622 A
67 3.74053623603 A
68 3.16701121242 A
69 2.34745227622 A
70 1.76409736552 A
71 1.51200803675 A
72 1.2907743594 A
73 1.00681298597 A
74 0.862744443537 A
75 0.91574368888 A
76 0.714689640717 A
77 0.517175945403 A
78 0.567676742354 A
79 0.59107492188 A
80 0.36357410485 A
81 0.136113295885 A
82 -0.0424484841936 A
83 -0.0580144665363 A
84 -0.0982479104419 A
85 -0.125561965887 A
86 -0.18724722966 A
87 -0.319063282063 A
88 -0.310923270725 A
89 -0.297680012209 A
90 -0.29067812137 A
91 -0.153124902802 A
92 -0.0832141989646 A
93 0.0360608269851 A
94 0.0692223913598 A
95 0.0301088137407 A
96 0.229967884645 A
97 0.286834318788 A
98 0.302023175627 A
99 0.172030225713 A
100 0.128331231506 A
101 0.0852383292109 A
102 -0.0890769934766 A
103 -0.28596925454 A
104 -0.277955689998 A
105 -0.213135107915 A
106 -0.187743795588 A
107 -0.156312203071 A
108 0.00927423989462 A
109 0.0950491919392 A
110 -0.103823712283 A
111 -0.263438354304 A
112 -0.169133590325 A
113 -0.119342668528 A
114 -0.184209907576 A
115 -0.153083100597 A
116 -0.118314865514 A
117 -0.0218234673043 A
118 0.0354090403385 A
119 -0.176859459446 A
120 -0.254330750514 A
1 1.31156238699 B
2 1.66603897664 B
3 1.8595569523 B
4 1.47610814343 B
5 1.13938772251 B
6 1.07959295698 B
7 1.0562167754 B
8 0.953732152873 B
9 1.27923353158 B
10 1.87416928486 B
11 2.29643917738 B
12 2.11874255833 B
13 1.81800847267 B
14 1.97156297894 B
15 1.95639491025 B
16 1.75903105961 B
17 1.36979841803 B
18 1.20025438569 B
19 1.15465650184 B
20 1.09201899355 B
21 0.948241309108 B
22 0.755764015696 B
23 0.89321992313 B
24 1.55401151175 B
25 1.7724765184 B
26 1.61741216053 B
27 1.19119499499 B
28 0.379190890768 B
29 -0.280643671284 B
30 -0.438517977457 B
31 -0.358544058104 B
32 -0.175439246148 B
33 -0.152975829581 B
34 -0.161103632796 B
35 -0.174444281478 B
36 0.0432634194416 B
37 0.426620630846 B
38 0.484334073737 B
39 0.619581343298 B
40 0.967283510405 B
41 1.15176486771 B
42 0.966602160933 B
43 0.690373835041 B
44 0.319762485659 B
45 0.558607945261 B
46 1.11704365618 B
47 1.35119752184 B
48 1.086453978 B
49 0.522235623898 B
50 0.331232373297 B
51 0.470526554506 B
52 0.88872478677 B
53 1.3777468901 B
54 1.98052619207 B
55 2.74167480929 B
56 3.71564209846 B
57 4.7554986573 B
58 5.35724571871 B
59 5.09994377564 B
60 6.79713731723 B
61 13.5623123968 B
62 19.9726094303 B
63 20.6985773902 B
64 19.5622430224 B
65 16.9252890116 B
66 13.785124688 B
67 12.0153484193 B
68 10.6335853944 B
69 9.23145636242 B
70 8.33279506304 B
71 7.11679306668 B
72 5.98971780649 B
73 4.81795605529 B
74 3.6240387853 B
75 3.17710512841 B
76 3.09525364338 B
77 2.94968830182 B
78 2.85812444624 B
79 2.41084230435 B
80 1.80196837641 B
81 1.18822582466 B
82 0.847087211338 B
83 0.844579278397 B
84 0.719435070951 B
85 0.373826290695 B
86 0.179833579104 B
87 0.10827105313 B
88 0.140513871238 B
89 0.36900575791 B
90 0.545788292614 B
91 0.588906392532 B
92 0.411607834074 B
93 0.436297519059 B
94 0.417543346098 B
95 0.420644053229 B
96 0.754192582582 B
97 0.865901044214 B
98 0.821331429891 B
99 0.859522528975 B
100 1.0698784309 B
101 1.12094185211 B
102 0.954696811999 B
103 0.635033784692 B
104 0.593828176146 B
105 0.662067791202 B
106 0.640073276401 B
107 0.773737194106 B
108 1.04778537143 B
109 1.14218831145 B
110 0.936124315428 B
111 0.761897172562 B
112 0.584860054282 B
113 0.568945253284 B
114 0.592650160898 B
115 0.363421418416 B
116 0.315516608971 B
117 0.556218161647 B
118 0.741402531046 B
119 0.73670589581 B
120 0.731201358535 B
1 0.914487112088 B
2 1.17888880951 B
3 1.34882572489 B
4 1.05705037522 B
5 0.767924473683 B
6 0.627155263031 B
7 0.661419743127 B
8 0.726639134719 B
9 0.904404934323 B
10 1.11446499538 B
11 1.32234502189 B
12 1.11272139974 B
13 0.80278277695 B
14 1.05206129918 B
15 1.03054952945 B
16 0.920053144065 B
17 0.890783999963 B
18 0.745241179888 B
19 0.753375762718 B
20 0.606204084282 B
21 0.439550558806 B
22 0.415665737741 B
23 0.511097171088 B
24 0.753958021098 B
25 0.915744174748 B
26 0.914912288237 B
27 0.650537400908 B
28 0.177843412682 B
29 -0.182744261137 B
30 -0.280968150367 B
31 -0.131322561837 B
32 -0.0936594361197 B
33 -0.111213723334 B
34 -0.0751949309223 B
35 -0.114901791545 B
36 -0.0165691620777 B
37 0.117705450621 B
38 0.195665130311 B
39 0.49300993106 B
40 0.748293222013 B
41 0.702261888166 B
42 0.579761929719 B
43 0.354296503405 B
44 0.0685749425124 B
45 0.276465165244 B
46 0.833851789425 B
47 0.952399770341 B
48 0.780124651512 B
49 0.389046185042 B
50 0.240762613037 B
51 0.334216612367 B
52 0.497505803488 B
53 0.759900678942 B
54 1.12736521148 B
55 1.77820644505 B
56 2.60137514 B
57 3.11618984654 B
58 3.21453966104 B
59 3.02507885677 B
60 4.10630457704 B
61 7.81645787291 B
62 11.474225964 B
63 12.4863009071 B
64 11.5994621204 B
65 9.5999931249 B
66 7.96585566708 B
67 7.08309536929 B
68 6.04261032076 B
69 5.26284702902 B
70 4.76880466452 B
71 4.10897764688 B
72 3.33692117069 B
73 2.6513184514 B
74 2.25667303445 B
75 1.83839013124 B
76 1.84439486988 B
77 1.74545691393 B
78 1.60528910561 B
79 1.42843608445 B
80 0.854469270873 B
81 0.563227776699 B
82 0.299704948636 B
83 0.270143019019 B
84 0.283668987216 B
85 0.181017474033 B
86 0.0822636124446 B
87 -0.0465301247043 B
88 -0.000460798489744 B
89 0.0926334491843 B
90 0.192295768771 B
91 0.29542265617 B
92 0.218214141112 B
93 0.145843998014 B
94 0.12500365606 B
95 0.147889577395 B
96 0.368717140352 B
97 0.580075802767 B
98 0.459540843701 B
99 0.459168312255 B
100 0.614213389976 B
101 0.627367541442 B
102 0.562408018057 B
103 0.31716603245 B
104 0.288874098133 B
105 0.303797627692 B
106 0.338691064084 B
107 0.336034553249 B
108 0.587964074115 B
109 0.649227026019 B
110 0.541946830382 B
111 0.542082081996 B
112 0.51192491824 B
113 0.327474693143 B
114 0.254878532604 B
115 0.134544321919 B
116 0.100368014222 B
117 0.211272916527 B
118 0.267339751552 B
119 0.30990753715 B
120 0.444492582364 B
再次感谢!
最佳答案
正如@MrFlick已经说过的那样,您无法为每个x值计算标准误差。但是,您可以考虑几个选项。
选项1:使用stat_smooth
绘制具有很小跨度的黄土平滑区,其中可以包括标准误差的阴影区域:
ggplot(dat, aes(x=pos,y=value, colour=type)) +
stat_smooth(method="loess", span=0.1, se=TRUE, aes(fill=type), alpha=0.3) +
theme_bw()
这给出了:
选项2:由于每个
x
值都有一个高值和一个低值,因此可以为高值和低值绘制单独的线条。您必须先创建一个高/低变量:dat$level <- rep(c("high","low"), each=120)
ggplot(dat, aes(x=pos,y=value, colour=type)) +
geom_line(aes(linetype=level)) +
theme_bw()
这给出了:
选项3:由于每个
x
值都有一个高值和一个低值,因此可以使用以下命令在高值和低值之间绘制一个geom_ribbon
:ggplot(dat, aes(x=pos,y=value, colour=type)) +
stat_summary(geom="ribbon", fun.ymin="min", fun.ymax="max", aes(fill=type), alpha=0.3) +
theme_bw()
这给出了: