using Printf const ts_colors = cgrad(:PuBu_9) function plot_model(varname,univariate_series, output_list::Vector{T},infection_begin,vac_begin) where T<:DebugRecorder sim_length = length(output_list[1].recorded_status_totals.S) ts_list(data) = [ (data.recorded_status_totals.S, "Susceptible over time"), (data.recorded_status_totals.R, "Recovered over time"), (data.total_vaccinators, "No. vaccinators over time"), (data.mean_time_since_last_notification, "Mean time since last notification"), (data.daily_cases_by_age.Y,"Daily (incident) Y cases"), (data.daily_cases_by_age.M,"Daily (incident) M cases"), (data.daily_cases_by_age.O,"Daily (incident) O cases"), (data.daily_immunized_by_age.Y, "new Y vaccinations each day"), (data.daily_immunized_by_age.M, "new M vaccinations each day"), (data.daily_immunized_by_age.O, "new O vaccinations each day"), (data.daily_total_notifications, "total notifications each day"), (data.daily_total_notified_agents, "total notified agents each day"), ] l = length(ts_list(output_list[1])) plts = [plot() for i in 1:l] for (i,(p,data)) in enumerate(zip(univariate_series, output_list)) # display(p[varname]) if !isnothing(varname) p_val = @sprintf "%.4f" (p[varname]) labelname = "$varname = $(p_val)" else labelname = nothing end for (plt,(ts,title)) in zip(plts,ts_list(data)) p = plot!(plt,mean.(ts)[vac_begin+25:end]; #yerr = std.(ts), label = labelname, line_z = i, color=:blues, ylabel = "no. of people", colorbar = false, title = title, legends = :outerright, xlabel = "time (days)", ) end end # plot!(plts[begin]; ) for p in plts vline!(p,[infection_begin-(vac_begin+25)]; label = "infection begin", line =:dot) # vline!(p,[vac_begin]; label = "vaccination begin",line = :dot) end # return plot(plts...;layout = (l,1),size=(800,400*l),leftmargin = 12Plots.mm, legend = :outerright) return plts end