Skip to content
Plotly templates

Contact Centre Forecast vs Actual (Plotly)

Half-hourly offered calls against forecast with the rostered agent line on a second axis, exposing the mid-morning under-staffing.

Template previewPlotly
Rendering…

Make it your own.

{
  "data": [
    {
      "type": "scatter", "mode": "lines+markers", "name": "Forecast offered",
      "x": ["08:00","08:30","09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30","13:00","13:30","14:00","14:30","15:00","15:30","16:00","16:30"],
      "y": [180,260,410,520,560,540,505,470,430,395,410,455,480,470,440,380,300,210],
      "line": {"color": "#0ea5e9", "dash": "dot"}
    },
    {
      "type": "scatter", "mode": "lines+markers", "name": "Actual offered",
      "x": ["08:00","08:30","09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30","13:00","13:30","14:00","14:30","15:00","15:30","16:00","16:30"],
      "y": [172,268,447,596,631,588,529,462,418,402,431,489,522,498,451,372,288,196],
      "line": {"color": "#f97316"}
    },
    {
      "type": "bar", "name": "Agents rostered", "yaxis": "y2", "opacity": 0.45,
      "x": ["08:00","08:30","09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30","13:00","13:30","14:00","14:30","15:00","15:30","16:00","16:30"],
      "y": [22,26,34,40,42,42,40,38,34,32,34,38,40,40,38,32,26,20],
      "marker": {"color": "#94a3b8"}
    }
  ],
  "layout": {
    "title": "Contact centre - forecast against actual offered calls, Monday",
    "xaxis": {"title": "Half-hour interval"},
    "yaxis": {"title": "Calls offered"},
    "yaxis2": {"title": "Agents rostered", "overlaying": "y", "side": "right", "showgrid": false},
    "legend": {"orientation": "h", "y": -0.25},
    "bargap": 0.3
  }
}