0

I am trying to plot multiple lines with molten data and I am using the library(bdscale) to correct the x scale for business days, however the x scales are not being placed correctly. I wonder if anyone out there have already faced the same issue and could help me out. Thanks!

I have already checked these two previous answers the question was with faceting and transform the date into factors, however unfortunately neither of them seem to be the solution I would like.

I have included a sample of my data.

dput(pred_final_price_melt)
structure(list(date_hist = structure(c(18017, 18018, 18019, 18022, 
18023, 18024, 18025, 18026, 18029, 18030, 18031, 18032, 18033, 
18036, 18037, 18038, 18039, 18040, 18017, 18018, 18019, 18022, 
18023, 18024, 18025, 18026, 18029, 18030, 18031, 18032, 18033, 
18036, 18037, 18038, 18039, 18040, 18017, 18018, 18019, 18022, 
18023, 18024, 18025, 18026, 18029, 18030, 18031, 18032, 18033, 
18036, 18037, 18038, 18039, 18040, 18017, 18018, 18019, 18022, 
18023, 18024, 18025, 18026, 18029, 18030, 18031, 18032, 18033, 
18036, 18037, 18038, 18039, 18040, 18017, 18018, 18019, 18022, 
18023, 18024, 18025, 18026, 18029, 18030, 18031, 18032, 18033, 
18036, 18037, 18038, 18039, 18040, 18017, 18018, 18019, 18022, 
18023, 18024, 18025, 18026, 18029, 18030, 18031, 18032, 18033, 
18036, 18037, 18038, 18039, 18040), class = "Date"), variable = c("Model_1", 
"Model_1", "Model_1", "Model_1", "Model_1", "Model_1", "Model_1", 
"Model_1", "Model_1", "Model_1", "Model_1", "Model_1", "Model_1", 
"Model_1", "Model_1", "Model_1", "Model_1", "Model_1", "Model_2", 
"Model_2", "Model_2", "Model_2", "Model_2", "Model_2", "Model_2", 
"Model_2", "Model_2", "Model_2", "Model_2", "Model_2", "Model_2", 
"Model_2", "Model_2", "Model_2", "Model_2", "Model_2", "Model_3", 
"Model_3", "Model_3", "Model_3", "Model_3", "Model_3", "Model_3", 
"Model_3", "Model_3", "Model_3", "Model_3", "Model_3", "Model_3", 
"Model_3", "Model_3", "Model_3", "Model_3", "Model_3", "Model_4", 
"Model_4", "Model_4", "Model_4", "Model_4", "Model_4", "Model_4", 
"Model_4", "Model_4", "Model_4", "Model_4", "Model_4", "Model_4", 
"Model_4", "Model_4", "Model_4", "Model_4", "Model_4", "BH", 
"BH", "BH", "BH", "BH", "BH", "BH", "BH", "BH", "BH", "BH", "BH", 
"BH", "BH", "BH", "BH", "BH", "BH", "BH_Intra", "BH_Intra", "BH_Intra", 
"BH_Intra", "BH_Intra", "BH_Intra", "BH_Intra", "BH_Intra", "BH_Intra", 
"BH_Intra", "BH_Intra", "BH_Intra", "BH_Intra", "BH_Intra", "BH_Intra", 
"BH_Intra", "BH_Intra", "BH_Intra"), value = c(0.000884284992420437, 
-0.00353937555302741, -0.000760649087221177, 0.000505816894284195, 
0.00063035804336864, 0.0013869625520111, -0.00202045712842525, 
-0.000629722921914322, 0.00264417023419794, -0.000627982918864567, 
0.00226102248461246, 0.00213032581453632, 0.000250972518509252, 
-0.00175702811244982, -0.00113150616042246, 0.00239144115796108, 
0.00564759036144569, -0.000375187593796844, -0.000884284992420437, 
-0.00353937555302741, 0.000760649087221177, 0.000505816894284195, 
-0.00063035804336864, 0.0013869625520111, -0.00202045712842525, 
0.000629722921914322, -0.00264417023419794, 0.000627982918864567, 
-0.00226102248461246, -0.00213032581453632, 0.000250972518509252, 
0.00175702811244982, 0.00113150616042246, 0.00239144115796108, 
0.00564759036144569, -0.000375187593796844, -0.000884284992420437, 
-0.00353937555302741, 0.000760649087221177, 0.000505816894284195, 
-0.00063035804336864, 0.0013869625520111, -0.00202045712842525, 
-0.000629722921914322, -0.00264417023419794, -0.000627982918864567, 
0.00226102248461246, -0.00213032581453632, 0.000250972518509252, 
0.00175702811244982, -0.00113150616042246, -0.00239144115796108, 
-0.00564759036144569, 0.000375187593796844, 0.000884284992420437, 
-0.00353937555302741, 0.000760649087221177, 0.000505816894284195, 
0.00063035804336864, -0.0013869625520111, 0.00202045712842525, 
0.000629722921914322, -0.00264417023419794, 0.000627982918864567, 
-0.00226102248461246, 0.00213032581453632, 0.000250972518509252, 
0.00175702811244982, 0.00113150616042246, 0.00239144115796108, 
-0.00564759036144569, 0.000375187593796844, -0.000758054327226754, 
-0.00328739410797829, 0.00139540783965497, 0.00228021281986313, 
0.003159757330637, -0.00214186720423337, 0.00189393939393945, 
0, 0.00352867044738492, -0.000753484867512255, 0.002764861128566, 
-0.00200526381752097, 0.000502323245008096, -0.00163173088992097, 
-0.00113150616042246, 0.00239144115796108, 0.00615268709191352, 
-0.00249594409085241, -0.000884284992420437, -0.00353937555302741, 
0.000760649087221177, 0.000505816894284195, 0.00063035804336864, 
-0.0013869625520111, 0.00202045712842525, -0.000629722921914322, 
0.00264417023419794, -0.000627982918864567, 0.00226102248461246, 
-0.00213032581453632, -0.000250972518509252, -0.00175702811244982, 
-0.00113150616042246, 0.00239144115796108, 0.00564759036144569, 
-0.000375187593796844), ret_accum = c(0.993020566092887, 0.989505893377605, 
0.988753226623007, 0.989253354709311, 0.989876938518382, 0.991249860763206, 
0.989247082915976, 0.988624131352427, 0.991238221853359, 0.99061574118151, 
0.992855545645932, 0.994970651444927, 0.995220361735163, 0.993471731581512, 
0.992347612197022, 0.994720753119834, 1.00033852845748, 0.999963213852009, 
0.993817657624321, 0.990300163702759, 0.991053434618354, 0.991554726188723, 
0.990929691691629, 0.992304074065681, 0.99029916622567, 0.990922780310195, 
0.98830261179011, 0.988923248948984, 0.986687271247554, 0.984585305882741, 
0.984832409736645, 0.986562787966604, 0.987679089838832, 0.99004106626513, 
0.995632412648405, 0.995258863719197, 1.00633565703449, 1.00277385721184, 
1.00353661623102, 1.00404422200554, 1.0034113146543, 1.00480300857199, 
1.00277284717066, 1.00214137812332, 0.999491545720829, 0.998863882102567, 
1.00112233579907, 0.998989619043607, 0.999240337984263, 1.00099603134919, 
0.999863398173165, 0.997472283690435, 0.991838968835255, 0.992211094511407, 
1.02637315186551, 1.02274043182351, 1.02351837839944, 1.02403609128685, 
1.02468160067369, 1.02326040566582, 1.02532785944668, 1.02597353190225, 
1.02326068322812, 1.02390327345873, 1.02158820513538, 1.0237645208606, 
1.02402145762076, 1.02582069210955, 1.02698141454216, 1.02943738016536, 
1.02362353953943, 1.02400759039218, 1.04741093894848, 1.04396768639915, 
1.0454244470931, 1.04780823731956, 1.05111905707853, 1.04886769964243, 
1.05085419149781, 1.05085419149781, 1.05456230962786, 1.05376771288571, 
1.05668123427361, 1.05456230962786, 1.0550920407893, 1.05337041451463, 
1.0521785194014, 1.05469474241822, 1.06118394914581, 1.05853529333863, 
1.0447374250804, 1.04103970697874, 1.04183157288161, 1.04235854889217, 
1.04301560798754, 1.0415689843981, 1.04367342987737, 1.04301620479559, 
1.04577411719809, 1.0451173889155, 1.0474804228309, 1.04524894824592, 
1.04498661948491, 1.04315054861734, 1.04197021734533, 1.04446202780846, 
1.05036072148961, 1.0499666391779), Month = c(5, 5, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5)), class = c("data.table", 
"data.frame"), row.names = c(NA, -108L), .internal.selfref = <pointer: 0x0000000007a41ef0>)

My code:

library(ggplot2)
library(bdscale)

ggplot(pred_final_price_melt,aes(date_hist,ret_accum,colour=variable,shape=variable))+
  geom_line()+
  geom_point() +
  xlab("Date") +
  ylab("Accumulated return") +
  scale_x_bd(business.dates = pred_final_price_melt$date_hist,
             max.major.breaks = 10,
             labels = date_format("%y-%m-%d"))

produced graph

R Yoda
  • 8,358
  • 2
  • 50
  • 87
unmark1
  • 322
  • 3
  • 13

1 Answers1

2

I provide a response with the suggestion to use the ggplot2 and scales package.

library(ggplot2)
library(scales)

datas <- unique(pred_final_price_melt$date_hist)

ggplot(pred_final_price_melt,aes(date_hist,ret_accum,colour=variable))+
  geom_line()+
  geom_point(aes(shape = variable)) +
  xlab("Date") +
  ylab("Accumulated return") +
  scale_x_date(breaks = datas,
               labels = scales::date_format("%Y-%m-%d"),
               limits = range(datas)) +
  theme_classic() +
  theme(axis.text.x = element_text(angle = 90))

enter image description here


df <- pred_final_price_melt %>% 
  dplyr::mutate(date_hist = as.factor(date_hist))

library(lemon)

ggplot(df,
       aes(date_hist, ret_accum,
           shape = variable, col = variable, group = variable)) +
  lemon::geom_pointline() +
  xlab("Date") +
  ylab("Accumulated return") +
  theme_classic() +
  theme(axis.text.x = element_text(angle = 90))

enter image description here


  • Dataset
pred_final_price_melt <- structure(list(date_hist = structure(c(18017, 18018, 18019, 18022, 
                                       18023, 18024, 18025, 18026, 18029, 18030, 18031, 18032, 18033, 
                                       18036, 18037, 18038, 18039, 18040, 18017, 18018, 18019, 18022, 
                                       18023, 18024, 18025, 18026, 18029, 18030, 18031, 18032, 18033, 
                                       18036, 18037, 18038, 18039, 18040, 18017, 18018, 18019, 18022, 
                                       18023, 18024, 18025, 18026, 18029, 18030, 18031, 18032, 18033, 
                                       18036, 18037, 18038, 18039, 18040, 18017, 18018, 18019, 18022, 
                                       18023, 18024, 18025, 18026, 18029, 18030, 18031, 18032, 18033, 
                                       18036, 18037, 18038, 18039, 18040, 18017, 18018, 18019, 18022, 
                                       18023, 18024, 18025, 18026, 18029, 18030, 18031, 18032, 18033, 
                                       18036, 18037, 18038, 18039, 18040, 18017, 18018, 18019, 18022, 
                                       18023, 18024, 18025, 18026, 18029, 18030, 18031, 18032, 18033, 
                                       18036, 18037, 18038, 18039, 18040), class = "Date"), variable = c("Model_1", 
                                                                                                         "Model_1", "Model_1", "Model_1", "Model_1", "Model_1", "Model_1", 
                                                                                                         "Model_1", "Model_1", "Model_1", "Model_1", "Model_1", "Model_1", 
                                                                                                         "Model_1", "Model_1", "Model_1", "Model_1", "Model_1", "Model_2", 
                                                                                                         "Model_2", "Model_2", "Model_2", "Model_2", "Model_2", "Model_2", 
                                                                                                         "Model_2", "Model_2", "Model_2", "Model_2", "Model_2", "Model_2", 
                                                                                                         "Model_2", "Model_2", "Model_2", "Model_2", "Model_2", "Model_3", 
                                                                                                         "Model_3", "Model_3", "Model_3", "Model_3", "Model_3", "Model_3", 
                                                                                                         "Model_3", "Model_3", "Model_3", "Model_3", "Model_3", "Model_3", 
                                                                                                         "Model_3", "Model_3", "Model_3", "Model_3", "Model_3", "Model_4", 
                                                                                                         "Model_4", "Model_4", "Model_4", "Model_4", "Model_4", "Model_4", 
                                                                                                         "Model_4", "Model_4", "Model_4", "Model_4", "Model_4", "Model_4", 
                                                                                                         "Model_4", "Model_4", "Model_4", "Model_4", "Model_4", "BH", 
                                                                                                         "BH", "BH", "BH", "BH", "BH", "BH", "BH", "BH", "BH", "BH", "BH", 
                                                                                                         "BH", "BH", "BH", "BH", "BH", "BH", "BH_Intra", "BH_Intra", "BH_Intra", 
                                                                                                         "BH_Intra", "BH_Intra", "BH_Intra", "BH_Intra", "BH_Intra", "BH_Intra", 
                                                                                                         "BH_Intra", "BH_Intra", "BH_Intra", "BH_Intra", "BH_Intra", "BH_Intra", 
                                                                                                         "BH_Intra", "BH_Intra", "BH_Intra"), value = c(0.000884284992420437, 
                                                                                                                                                        -0.00353937555302741, -0.000760649087221177, 0.000505816894284195, 
                                                                                                                                                        0.00063035804336864, 0.0013869625520111, -0.00202045712842525, 
                                                                                                                                                        -0.000629722921914322, 0.00264417023419794, -0.000627982918864567, 
                                                                                                                                                        0.00226102248461246, 0.00213032581453632, 0.000250972518509252, 
                                                                                                                                                        -0.00175702811244982, -0.00113150616042246, 0.00239144115796108, 
                                                                                                                                                        0.00564759036144569, -0.000375187593796844, -0.000884284992420437, 
                                                                                                                                                        -0.00353937555302741, 0.000760649087221177, 0.000505816894284195, 
                                                                                                                                                        -0.00063035804336864, 0.0013869625520111, -0.00202045712842525, 
                                                                                                                                                        0.000629722921914322, -0.00264417023419794, 0.000627982918864567, 
                                                                                                                                                        -0.00226102248461246, -0.00213032581453632, 0.000250972518509252, 
                                                                                                                                                        0.00175702811244982, 0.00113150616042246, 0.00239144115796108, 
                                                                                                                                                        0.00564759036144569, -0.000375187593796844, -0.000884284992420437, 
                                                                                                                                                        -0.00353937555302741, 0.000760649087221177, 0.000505816894284195, 
                                                                                                                                                        -0.00063035804336864, 0.0013869625520111, -0.00202045712842525, 
                                                                                                                                                        -0.000629722921914322, -0.00264417023419794, -0.000627982918864567, 
                                                                                                                                                        0.00226102248461246, -0.00213032581453632, 0.000250972518509252, 
                                                                                                                                                        0.00175702811244982, -0.00113150616042246, -0.00239144115796108, 
                                                                                                                                                        -0.00564759036144569, 0.000375187593796844, 0.000884284992420437, 
                                                                                                                                                        -0.00353937555302741, 0.000760649087221177, 0.000505816894284195, 
                                                                                                                                                        0.00063035804336864, -0.0013869625520111, 0.00202045712842525, 
                                                                                                                                                        0.000629722921914322, -0.00264417023419794, 0.000627982918864567, 
                                                                                                                                                        -0.00226102248461246, 0.00213032581453632, 0.000250972518509252, 
                                                                                                                                                        0.00175702811244982, 0.00113150616042246, 0.00239144115796108, 
                                                                                                                                                        -0.00564759036144569, 0.000375187593796844, -0.000758054327226754, 
                                                                                                                                                        -0.00328739410797829, 0.00139540783965497, 0.00228021281986313, 
                                                                                                                                                        0.003159757330637, -0.00214186720423337, 0.00189393939393945, 
                                                                                                                                                        0, 0.00352867044738492, -0.000753484867512255, 0.002764861128566, 
                                                                                                                                                        -0.00200526381752097, 0.000502323245008096, -0.00163173088992097, 
                                                                                                                                                        -0.00113150616042246, 0.00239144115796108, 0.00615268709191352, 
                                                                                                                                                        -0.00249594409085241, -0.000884284992420437, -0.00353937555302741, 
                                                                                                                                                        0.000760649087221177, 0.000505816894284195, 0.00063035804336864, 
                                                                                                                                                        -0.0013869625520111, 0.00202045712842525, -0.000629722921914322, 
                                                                                                                                                        0.00264417023419794, -0.000627982918864567, 0.00226102248461246, 
                                                                                                                                                        -0.00213032581453632, -0.000250972518509252, -0.00175702811244982, 
                                                                                                                                                        -0.00113150616042246, 0.00239144115796108, 0.00564759036144569, 
                                                                                                                                                        -0.000375187593796844), ret_accum = c(0.993020566092887, 0.989505893377605, 
                                                                                                                                                                                              0.988753226623007, 0.989253354709311, 0.989876938518382, 0.991249860763206, 
                                                                                                                                                                                              0.989247082915976, 0.988624131352427, 0.991238221853359, 0.99061574118151, 
                                                                                                                                                                                              0.992855545645932, 0.994970651444927, 0.995220361735163, 0.993471731581512, 
                                                                                                                                                                                              0.992347612197022, 0.994720753119834, 1.00033852845748, 0.999963213852009, 
                                                                                                                                                                                              0.993817657624321, 0.990300163702759, 0.991053434618354, 0.991554726188723, 
                                                                                                                                                                                              0.990929691691629, 0.992304074065681, 0.99029916622567, 0.990922780310195, 
                                                                                                                                                                                              0.98830261179011, 0.988923248948984, 0.986687271247554, 0.984585305882741, 
                                                                                                                                                                                              0.984832409736645, 0.986562787966604, 0.987679089838832, 0.99004106626513, 
                                                                                                                                                                                              0.995632412648405, 0.995258863719197, 1.00633565703449, 1.00277385721184, 
                                                                                                                                                                                              1.00353661623102, 1.00404422200554, 1.0034113146543, 1.00480300857199, 
                                                                                                                                                                                              1.00277284717066, 1.00214137812332, 0.999491545720829, 0.998863882102567, 
                                                                                                                                                                                              1.00112233579907, 0.998989619043607, 0.999240337984263, 1.00099603134919, 
                                                                                                                                                                                              0.999863398173165, 0.997472283690435, 0.991838968835255, 0.992211094511407, 
                                                                                                                                                                                              1.02637315186551, 1.02274043182351, 1.02351837839944, 1.02403609128685, 
                                                                                                                                                                                              1.02468160067369, 1.02326040566582, 1.02532785944668, 1.02597353190225, 
                                                                                                                                                                                              1.02326068322812, 1.02390327345873, 1.02158820513538, 1.0237645208606, 
                                                                                                                                                                                              1.02402145762076, 1.02582069210955, 1.02698141454216, 1.02943738016536, 
                                                                                                                                                                                              1.02362353953943, 1.02400759039218, 1.04741093894848, 1.04396768639915, 
                                                                                                                                                                                              1.0454244470931, 1.04780823731956, 1.05111905707853, 1.04886769964243, 
                                                                                                                                                                                              1.05085419149781, 1.05085419149781, 1.05456230962786, 1.05376771288571, 
                                                                                                                                                                                              1.05668123427361, 1.05456230962786, 1.0550920407893, 1.05337041451463, 
                                                                                                                                                                                              1.0521785194014, 1.05469474241822, 1.06118394914581, 1.05853529333863, 
                                                                                                                                                                                              1.0447374250804, 1.04103970697874, 1.04183157288161, 1.04235854889217, 
                                                                                                                                                                                              1.04301560798754, 1.0415689843981, 1.04367342987737, 1.04301620479559, 
                                                                                                                                                                                              1.04577411719809, 1.0451173889155, 1.0474804228309, 1.04524894824592, 
                                                                                                                                                                                              1.04498661948491, 1.04315054861734, 1.04197021734533, 1.04446202780846, 
                                                                                                                                                                                              1.05036072148961, 1.0499666391779), Month = c(5, 5, 5, 5, 5, 
                                                                                                                                                                                                                                            5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
                                                                                                                                                                                                                                            5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
                                                                                                                                                                                                                                            5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
                                                                                                                                                                                                                                            5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
                                                                                                                                                                                                                                            5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5)), class = c("data.table", 
                                                                                                                                                                                                                                                                                                                 "data.frame"), row.names = c(NA, -108L))
bbiasi
  • 1,549
  • 2
  • 15
  • 31
  • Thank you for your response, but I was expecting the x-axis behavior the same as in this response [link](https://stackoverflow.com/questions/48654293/removing-the-non-business-days-from-ggplot-axis).e.g., not having the wide separation between the non-business days data. – unmark1 May 28 '19 at 13:26
  • The first plot is this way. In the link provided only made one more `facet`. See the updated answer. – bbiasi May 28 '19 at 18:14
  • The problem is not the facet or not, it is the extra space between the non-business days (weekends and holidays). – unmark1 May 28 '19 at 19:56
  • It doesn't seem to work without faceting and it's important, for my purpose, to show all variables together in the same graph. – unmark1 May 28 '19 at 20:46
  • 1
    Nicely done!! I will upvote your answer and thanks!! – unmark1 May 29 '19 at 12:38