@@ -267,7 +267,8 @@ server <- function(input, output, session) {
267
267
filter(ahead %in% horizon ) %> %
268
268
filter(forecaster %in% forecasters )
269
269
270
- filteredScoreDf <- scoreDf %> % rename(Forecaster = forecaster , Week_End_Date = target_end_date )
270
+ filteredScoreDf <- scoreDf %> % rename(Forecaster = forecaster , Forecast_Date = forecast_date ,
271
+ Week_End_Date = target_end_date )
271
272
272
273
if (scoreType == " wis" || scoreType == " sharpness" ) {
273
274
# Only show WIS or Sharpness for forecasts that have all intervals
@@ -315,14 +316,14 @@ server <- function(input, output, session) {
315
316
if (scoreType == " coverage" ) {
316
317
aggregate = " Averaged"
317
318
filteredScoreDf = filteredScoreDf %> %
318
- group_by(Forecaster , Week_End_Date , ahead ) %> %
319
+ group_by(Forecaster , Forecast_Date , Week_End_Date , ahead ) %> %
319
320
summarize(Score = sum(Score )/ length(locationsIntersect ), actual = sum(actual ))
320
321
output $ renderAggregateText = renderText(paste(aggregateText ," Some forecasters may not have any data for the coverage interval chosen. Locations inlcuded: " ))
321
322
}
322
323
else {
323
324
aggregate = " Totaled"
324
325
filteredScoreDf = filteredScoreDf %> %
325
- group_by(Forecaster , Week_End_Date , ahead ) %> %
326
+ group_by(Forecaster , Forecast_Date , Week_End_Date , ahead ) %> %
326
327
summarize(Score = sum(Score ), actual = sum(actual ))
327
328
output $ renderAggregateText = renderText(paste(aggregateText , " Locations included: " ))
328
329
}
@@ -342,7 +343,7 @@ server <- function(input, output, session) {
342
343
# Not totaling over all locations
343
344
} else {
344
345
filteredScoreDf <- filteredScoreDf %> % filter(geo_value == tolower(loc )) %> %
345
- group_by(Forecaster , Week_End_Date , ahead ) %> %
346
+ group_by(Forecaster , Forecast_Date , Week_End_Date , ahead ) %> %
346
347
summarize(Score = Score , actual = actual )
347
348
locationSubtitleText = paste0(' , Location: ' , input $ location )
348
349
output $ renderAggregateText = renderText(" " )
@@ -359,7 +360,7 @@ server <- function(input, output, session) {
359
360
})
360
361
361
362
# Format and transform data
362
- filteredScoreDf = filteredScoreDf [c(" Forecaster" , " Week_End_Date" , " Score" , " ahead" )]
363
+ filteredScoreDf = filteredScoreDf [c(" Forecaster" , " Forecast_Date " , " Week_End_Date" , " Score" , " ahead" )]
363
364
filteredScoreDf = filteredScoreDf %> % mutate(across(where(is.numeric ), ~ round(. , 2 )))
364
365
if (scoreType != ' coverage' ) {
365
366
if (scaleByBaseline ) {
@@ -368,8 +369,8 @@ server <- function(input, output, session) {
368
369
# Scaling score by baseline forecaster
369
370
filteredScoreDfMerged $ Score.x = filteredScoreDfMerged $ Score.x / filteredScoreDfMerged $ Score.y
370
371
filteredScoreDf = filteredScoreDfMerged %> %
371
- rename(Forecaster = Forecaster.x , Score = Score.x ) %> %
372
- select(Forecaster , Week_End_Date , ahead , Score )
372
+ rename(Forecaster = Forecaster.x , Score = Score.x , Forecast_Date = Forecast_Date.x ) %> %
373
+ select(Forecaster , Forecast_Date , Week_End_Date , ahead , Score )
373
374
}
374
375
if (logScale ) {
375
376
filteredScoreDf $ Score = log10(filteredScoreDf $ Score )
@@ -384,7 +385,7 @@ server <- function(input, output, session) {
384
385
# Fill gaps so there are line breaks on weeks without data
385
386
filteredScoreDf = filteredScoreDf %> %
386
387
as_tsibble(key = c(Forecaster , ahead ), index = Week_End_Date ) %> %
387
- group_by(Forecaster , ahead ) %> %
388
+ group_by(Forecaster , Forecast_Date , ahead ) %> %
388
389
fill_gaps(.full = TRUE )
389
390
390
391
filteredScoreDf $ ahead = factor (filteredScoreDf $ ahead , levels = c(1 , 2 , 3 , 4 ),
@@ -395,7 +396,7 @@ server <- function(input, output, session) {
395
396
396
397
p = ggplot(
397
398
filteredScoreDf ,
398
- aes(x = Week_End_Date , y = Score , color = Forecaster , shape = Forecaster )
399
+ aes(x = Week_End_Date , y = Score , color = Forecaster , shape = Forecaster , label = Forecast_Date )
399
400
) +
400
401
geom_line() +
401
402
geom_point(size = 2 ) +
@@ -417,7 +418,7 @@ server <- function(input, output, session) {
417
418
}
418
419
plotHeight = 550 + (length(horizon )- 1 )* 100
419
420
finalPlot <-
420
- ggplotly(p ,tooltip = c(" x" , " y" , " shape" )) %> %
421
+ ggplotly(p , tooltip = c(" x" , " y" , " shape" , " label " )) %> %
421
422
layout(
422
423
height = plotHeight ,
423
424
legend = list (orientation = " h" , y = - 0.1 ),
0 commit comments