我想在ggplot2中制作一个图形,将模型预测显示为一条线,将观察结果显示为点。该线应位于点的顶部。
不幸的是,我的代码没有绘制线(正确)。我该如何解决这个问题?我应该使用另一个geom吗?
PS:模型预测不一定是直线。
数据
df = structure(list(time = c(100.067043929044, 100.067043929044, 100.067043929044,
100.067043929044, 101, 101.008924630473, 101.008924630473, 101.008924630473,
101.008924630473, 101.008924630473, 102, 103, 104, 105, 106,
107, 107.089057332598, 107.089057332598, 108, 108.20659267463,
108.20659267463, 108.20659267463, 108.20659267463, 108.20659267463,
108.20659267463, 108.20659267463, 108.703995034014, 108.703995034014,
108.703995034014, 108.703995034014, 108.703995034014, 109, 110,
110.114571494081, 110.114571494081, 110.114571494081, 110.114571494081,
110.114571494081, 110.343557977437, 110.343557977437, 110.343557977437,
110.343557977437, 110.343557977437, 111, 111.393980945717, 111.393980945717,
111.393980945717, 111.393980945717, 111.393980945717, 112, 112.00243681339,
112.00243681339, 112.00243681339, 112.00243681339, 113, 113.611902259838,
113.611902259838, 113.611902259838, 113.611902259838, 113.611902259838,
114, 114.979627464336, 114.979627464336, 114.979627464336, 114.979627464336,
115, 115.265297815627, 115.265297815627, 115.265297815627, 115.265297815627,
115.265297815627, 115.265297815627, 115.265297815627, 115.265297815627,
115.977376227469, 115.977376227469, 115.977376227469, 115.977376227469,
116, 116.424031058827, 116.424031058827, 116.424031058827, 116.424031058827,
116.424031058827, 116.698946471018, 116.698946471018, 117, 117.01495704613,
117.01495704613, 117.01495704613, 117.01495704613, 117.01495704613,
117.454710262887, 117.454710262887, 117.454710262887, 117.454710262887,
117.454710262887, 117.992443207322, 117.992443207322, 117.992443207322,
117.992443207322, 117.992443207322, 118, 118.676546409334, 118.795766163362,
118.795766163362, 118.795766163362, 118.795766163362, 118.795766163362,
119), observation = c(4.21666666666667, 3.11666666666667, 4.23,
4.48666666666667, NA, 5.48333333333333, 5.67, 5.72666666666667,
4.06333333333333, 3.74666666666667, NA, NA, NA, NA, NA, NA, 6.26,
14.19, NA, 9.47, 9.95333333333333, 10.115, 13.39, 9.10666666666667,
6.71666666666667, 3.16, 6.5, 3.91, 3.81, 3.56, 2.84, NA, NA,
6.89666666666667, 12.9533333333333, 8.44333333333333, 11.5333333333333,
6.44666666666667, 6.29, 9.44, 7.07, 7.85666666666667, 5.65, NA,
7.34333333333333, 8.11333333333333, 10.7533333333333, 9.19666666666667,
8.57, NA, 16.72, 18.6533333333333, 13.7033333333333, 11.2266666666667,
NA, 20.0933333333333, 18.415, 16.9033333333333, 14.54, 17.7633333333333,
NA, 7.3125, 6.228, 7.76, 7.53666666666667, NA, 6.685, 6.85, 4.22,
5.085, 6.895, 6.99666666666667, 6.49333333333333, 9.445, 8.46333333333333,
5.53, 7.02, 5.54, NA, 3.80666666666667, 5.35, 3.215, 5.1, 2.68666666666667,
13.13, 9.645, NA, 6.975, 11.9433333333333, 10.9033333333333,
8.77666666666667, 9.09, 4.405, 5.7, 2.58, 3.17666666666667, 3.03,
6.48, 9.96333333333333, 13.1833333333333, 10.0133333333333, 7.44,
NA, 9.73, 16.92, 13.77, 8.75, 10.6666666666667, 1.3, NA), prediction = c(NA,
NA, NA, NA, 5.16304701809333, NA, NA, NA, NA, NA, 5.24694452943803,
5.33395080545174, 5.4238858914801, 5.51655500429435, 5.6117471762703,
5.7092339677075, NA, NA, 5.80876254342396, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, 5.91002555280603, 6.0126381413324,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 6.11614048603116, NA,
NA, NA, NA, NA, 6.21998493479094, NA, NA, NA, NA, 6.32353446515982,
NA, NA, NA, NA, NA, 6.42607073245445, NA, NA, NA, NA, 6.52681470723314,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 6.62492403712397,
NA, NA, NA, NA, NA, NA, NA, 6.71948343363089, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 6.80950439913944,
NA, NA, NA, NA, NA, NA, 6.8939376352439)), .Names = c("time",
"observation", "prediction"), class = "data.frame", row.names = c(696L,
700L, 704L, 708L, 711L, 715L, 719L, 723L, 727L, 731L, 734L, 737L,
740L, 743L, 746L, 749L, 753L, 757L, 760L, 764L, 768L, 772L, 776L,
780L, 784L, 788L, 792L, 796L, 800L, 804L, 808L, 811L, 814L, 818L,
822L, 826L, 830L, 834L, 838L, 842L, 846L, 850L, 854L, 857L, 861L,
865L, 869L, 873L, 877L, 880L, 884L, 888L, 892L, 896L, 899L, 903L,
907L, 911L, 915L, 919L, 922L, 926L, 930L, 934L, 938L, 941L, 945L,
949L, 953L, 957L, 961L, 965L, 969L, 973L, 977L, 981L, 985L, 989L,
992L, 996L, 1000L, 1004L, 1008L, 1012L, 1016L, 1020L, 1023L,
1027L, 1031L, 1035L, 1039L, 1043L, 1047L, 1051L, 1055L, 1059L,
1063L, 1067L, 1071L, 1075L, 1079L, 1083L, 1086L, 1090L, 1094L,
1098L, 1102L, 1106L, 1110L, 1113L))
str(df)
ggplot(df) +
geom_point(aes(x=time, y=observation), color="grey")+
geom_line(aes(x=time, y=prediction), color="black")+
geom_point(aes(x=time, y=prediction), color="blue")
代码
ggplot(df) +
geom_point(aes(x=time, y=observation), color="grey")+
geom_line(aes(x=time, y=prediction), color="black")+
geom_point(aes(x=time, y=prediction), color="blue")