Search code examples
rggplot2geom-bar

Q: How combine two types of lines using ggplot?


I am trying to plot the following graph:

enter image description here

This plot was made using a command in R; however, I need to change the x-axis. As you see the x-axis starts at 0 and finish at 46. I want that the x-axis starts in 1972 and finishes in 2018 seq(1972, 2018). The data used for this graph is the following:

For regime one

structure(c(0.996336942021931, 0.982749831853788, 0.25257000136794, 
0.707797489518183, 0.339372705184362, 0.999209103898399, 0.348786927897612, 
0.821500770877589, 0.569473419352121, 0.544946043345147, 0.15347485404411, 
0.987921203799956, 0.00247541125926418, 0.999925918450173, 0.996940249283586, 
0.0141234625702467, 0.105466117156579, 0.999992944275275, 0.991723355647765, 
0.0958472062267191, 0.0362729940372193, 0.999999790503447, 0.0750715811130157, 
0.999975836828039, 0.998991768987905, 0.327943641159186, 5.05723080618291e-05, 
0.999999999869691, 0.995538324405397, 0.123355227931813, 0.999776636825943, 
0.00875781169836433, 0.696284480883101, 0.854839147672286, 0.113243492249383, 
0.00984853715078062, 0.442061195271808, 0.999959859676686, 0.0249739384218217, 
0.715262186931097, 0.269481397703521, 0.708458897302807, 0.0444979324520481, 
0.000133950914911277, 0.997976154782607, 0.191386380576805, 0.99775339928206, 
0.97921531595208, 0.27690132186733, 0.671995422154737, 0.458800347851363, 
0.999155966774432, 0.417000082142666, 0.838969001100901, 0.576424593247709, 
0.439169303472056, 0.227227711549776, 0.978527102362448, 0.00408165810824898, 
0.999955057843957, 0.994643622809094, 0.00847570472458959, 0.163000467960203, 
0.999995704786608, 0.987482614312069, 0.0569007267419926, 0.0585312256476362, 
0.999999671060746, 0.118213072794827, 0.99998536150034, 0.998897081324845, 
0.212968271334585, 8.35316288758489e-05, 0.999999999920876, 0.993537683112221, 
0.188538497918178, 0.999604116439039, 0.00905848219612739, 0.769430430615986, 
0.794457999021984, 0.0665707154963958, 0.00776458004359329, 0.5668500474175, 
0.999931021995446, 0.0265573724408095, 0.661699294173752, 0.296009575623967, 
0.587638579198176, 0.0251758869152202, 0.000220356219397782, 
0.997352716237698, 0.191386380576805), .Dim = c(46L, 2L))

for regime 2:

structure(c(0.00366305797806813, 0.0172501681462116, 0.74742999863206, 
0.292202510481817, 0.660627294815638, 0.000790896101601132, 0.651213072102388, 
0.178499229122411, 0.430526580647879, 0.455053956654853, 0.846525145955889, 
0.0120787962000438, 0.997524588740736, 7.40815498269273e-05, 
0.00305975071641352, 0.985876537429753, 0.894533882843421, 7.05572472485335e-06, 
0.00827664435223535, 0.904152793773281, 0.963727005962781, 2.09496553467159e-07, 
0.924928418886985, 2.41631719608902e-05, 0.00100823101209502, 
0.672056358840815, 0.999949427691938, 1.30308744399533e-10, 0.00446167559460289, 
0.876644772068187, 0.00022336317405711, 0.991242188301636, 0.303715519116899, 
0.145160852327714, 0.886756507750617, 0.990151462849219, 0.557938804728191, 
4.01403233139628e-05, 0.975026061578178, 0.284737813068903, 0.730518602296479, 
0.291541102697193, 0.955502067547952, 0.999866049085089, 0.00202384521739295, 
0.808613619423195, 0.00224660071793958, 0.0207846840479196, 0.72309867813267, 
0.328004577845263, 0.541199652148637, 0.000844033225568314, 0.582999917857334, 
0.161030998899099, 0.423575406752291, 0.560830696527944, 0.772772288450224, 
0.0214728976375518, 0.995918341891751, 4.49421560426429e-05, 
0.00535637719090558, 0.99152429527541, 0.836999532039797, 4.29521339242403e-06, 
0.0125173856879312, 0.943099273258007, 0.941468774352364, 3.28939253926857e-07, 
0.881786927205173, 1.46384996596921e-05, 0.00110291867515508, 
0.787031728665414, 0.999916468371124, 7.91243531099699e-11, 0.00646231688777926, 
0.811461502081822, 0.00039588356096145, 0.990941517803873, 0.230569569384014, 
0.205542000978016, 0.933429284503604, 0.992235419956407, 0.4331499525825, 
6.89780045536876e-05, 0.973442627559191, 0.338300705826248, 0.703990424376033, 
0.412361420801824, 0.97482411308478, 0.999779643780602, 0.00264728376230197, 
0.808613619423195), .Dim = c(46L, 2L))

I know that the red line can be plotted using geom_line but I do not know how can the black bars plot? maybe using geom_bar, and also how can I merge the plots?

Thanks for your help


Solution

  • For a ggplot2 solution, you are going to need a data.frame or tibble with 4 columns (Regime, Year, Smoothed, and Fitted). Based on the data you provided, this would have 92 rows.

    Now assuming you use those column names (and storing your data into the variable example.dat), a ggplot2 solution is

    example.dat %>%
      ggplot( aes(x=Year) ) +
      geom_line( aes(y=Smoothed), color="red" ) +
      geom_linerange( aes(ymax=Fitted), ymin=0 ) +
      facet_wrap( ~ Regime, ncol=1 )
    

    Then you might need to adjust some of the scales to get the best plot.