2017-08-04 179 views
2

我想在ggplot2中製作一個圖形,將模型預測顯示爲線條和觀察點。該線應該位於點的頂部。ggplot2中的geom_line無法連接所有點。爲什麼?如何解決它?

不幸的是,我的代碼沒有繪製出線(正確)。我該如何解決這個問題?我應該使用另一個幾何?

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") 

情節 enter image description here

回答

4

您需要刪除丟失的預測值。該行在缺少值時停止。所以:

ggplot(df) + 
    geom_point(aes(x=time, y=observation), color="grey")+ 
    geom_line(data=df[!is.na(df$prediction),],aes(x=time, y=prediction), color="black")+ 
    geom_point(aes(x=time, y=prediction), color="blue") 

enter image description here

相關問題