Utilization per room and half hour (heatmap)

schedule.utilization() with 30-min buckets: busy / open minutes. Closed buckets (before 07:30, lunch break 12:30–13:30) are hatched with their own legend entry instead of 0 % (plotOptions.heatmap.empty); partly open ones count only the open minutes. Total: 42.3 %.

Chart type
Heatmap heatmap
Tier
Premium
Collection
Medicine & practice
Render
Live, embedded example
View .md Agent setup
LIVE/medical/util-heatmap11 of 12 in Medicine & practice

Configuration

Raw Standalone
// First chart on this page. The example combines several charts or controls;
// open the standalone example for the full source.
const options = (function (shut) { return {
  "chart": {
    "type": "heatmap",
    "height": 300
  },
  "series": [
    {
      "name": "ECG",
      "data": [
        {
          "x": "07:30",
          "y": 0
        },
        {
          "x": "08:00",
          "y": 0
        },
        {
          "x": "08:30",
          "y": 0
        },
        {
          "x": "09:00",
          "y": 0
        },
        {
          "x": "09:30",
          "y": 0
        },
        {
          "x": "10:00",
          "y": 83.3
        },
        {
          "x": "10:30",
          "y": 16.7
        },
        {
          "x": "11:00",
          "y": 0
        },
        {
          "x": "11:30",
          "y": 0
        },
        {
          "x": "12:00",
          "y": 0
        },
        {
          "x": "12:30",
          "y": null
        },
        {
          "x": "13:00",
          "y": null
        },
        {
          "x": "13:30",
          "y": 0
        },
        {
          "x": "14:00",
          "y": 0
        },
        {
          "x": "14:30",
          "y": 66.7
        },
        {
          "x": "15:00",
          "y": 0
        },
        {
          "x": "15:30",
          "y": 0
        },
        {
          "x": "16:00",
          "y": 0
        },
        {
          "x": "16:30",
          "y": 33.3
        },
        {
          "x": "17:00",
          "y": 0
        },
        {
          "x": "17:30",
          "y": 0
        }
      ]
    },
    {
      "name": "Sono",
      "data": [
        {
          "x": "07:30",
          "y": 0
        },
        {
          "x": "08:00",
          "y": 0
        },
        {
          "x": "08:30",
          "y": 0
        },
        {
          "x": "09:00",
          "y": 0
        },
        {
          "x": "09:30",
          "y": 0
        },
        {
          "x": "10:00",
          "y": 66.7
        },
        {
          "x": "10:30",
          "y": 0
        },
        {
          "x": "11:00",
          "y": 0
        },
        {
          "x": "11:30",
          "y": 0
        },
        {
          "x": "12:00",
          "y": 0
        },
        {
          "x": "12:30",
          "y": null
        },
        {
          "x": "13:00",
          "y": null
        },
        {
          "x": "13:30",
          "y": 0
        },
        {
          "x": "14:00",
          "y": 0
        },
        {
          "x": "14:30",
          "y": 16.7
        },
        {
          "x": "15:00",
          "y": 50
        },
        {
          "x": "15:30",
          "y": 0
        },
        {
          "x": "16:00",
          "y": 0
        },
        {
          "x": "16:30",
          "y": 0
        },
        {
          "x": "17:00",
          "y": 83.3
        },
        {
          "x": "17:30",
          "y": 0
        }
      ]
    },
    {
      "name": "Lab",
      "data": [
        {
          "x": "07:30",
          "y": 66.7
        },
        {
          "x": "08:00",
          "y": 33.3
        },
        {
          "x": "08:30",
          "y": 66.7
        },
        {
          "x": "09:00",
          "y": 33.3
        },
        {
          "x": "09:30",
          "y": 66.7
        },
        {
          "x": "10:00",
          "y": 0
        },
        {
          "x": "10:30",
          "y": 50
        },
        {
          "x": "11:00",
          "y": 0
        },
        {
          "x": "11:30",
          "y": 0
        },
        {
          "x": "12:00",
          "y": 0
        },
        {
          "x": "12:30",
          "y": null
        },
        {
          "x": "13:00",
          "y": null
        },
        {
          "x": "13:30",
          "y": 0
        },
        {
          "x": "14:00",
          "y": 0
        },
        {
          "x": "14:30",
          "y": 0
        },
        {
          "x": "15:00",
          "y": 0
        },
        {
          "x": "15:30",
          "y": 0
        },
        {
          "x": "16:00",
          "y": 0
        },
        {
          "x": "16:30",
          "y": 0
        },
        {
          "x": "17:00",
          "y": 0
        },
        {
          "x": "17:30",
          "y": 0
        }
      ]
    },
    {
      "name": "Room 3",
      "data": [
        {
          "x": "07:30",
          "y": 33.3
        },
        {
          "x": "08:00",
          "y": 83.3
        },
        {
          "x": "08:30",
          "y": 83.3
        },
        {
          "x": "09:00",
          "y": 100
        },
        {
          "x": "09:30",
          "y": 83.3
        },
        {
          "x": "10:00",
          "y": 100
        },
        {
          "x": "10:30",
          "y": 100
        },
        {
          "x": "11:00",
          "y": 83.3
        },
        {
          "x": "11:30",
          "y": 100
        },
        {
          "x": "12:00",
          "y": 66.7
        },
        {
          "x": "12:30",
          "y": null
        },
        {
          "x": "13:00",
          "y": null
        },
        {
          "x": "13:30",
          "y": 100
        },
        {
          "x": "14:00",
          "y": 83.3
        },
        {
          "x": "14:30",
          "y": 83.3
        },
        {
          "x": "15:00",
          "y": 100
        },
        {
          "x": "15:30",
          "y": 83.3
        },
        {
          "x": "16:00",
          "y": 100
        },
        {
          "x": "16:30",
          "y": 83.3
        },
        {
          "x": "17:00",
          "y": 66.7
        },
        {
          "x": "17:30",
          "y": 66.7
        }
      ]
    },
    {
      "name": "Room 2",
      "data": [
        {
          "x": "07:30",
          "y": 50
        },
        {
          "x": "08:00",
          "y": 66.7
        },
        {
          "x": "08:30",
          "y": 100
        },
        {
          "x": "09:00",
          "y": 100
        },
        {
          "x": "09:30",
          "y": 66.7
        },
        {
          "x": "10:00",
          "y": 0
        },
        {
          "x": "10:30",
          "y": 66.7
        },
        {
          "x": "11:00",
          "y": 83.3
        },
        {
          "x": "11:30",
          "y": 100
        },
        {
          "x": "12:00",
          "y": 83.3
        },
        {
          "x": "12:30",
          "y": null
        },
        {
          "x": "13:00",
          "y": null
        },
        {
          "x": "13:30",
          "y": 66.7
        },
        {
          "x": "14:00",
          "y": 100
        },
        {
          "x": "14:30",
          "y": 0
        },
        {
          "x": "15:00",
          "y": 100
        },
        {
          "x": "15:30",
          "y": 83.3
        },
        {
          "x": "16:00",
          "y": 100
        },
        {
          "x": "16:30",
          "y": 50
        },
        {
          "x": "17:00",
          "y": 93.3
        },
        {
          "x": "17:30",
          "y": 73.3
        }
      ]
    },
    {
      "name": "Room 1",
      "data": [
        {
          "x": "07:30",
          "y": 66.7
        },
        {
          "x": "08:00",
          "y": 83.3
        },
        {
          "x": "08:30",
          "y": 66.7
        },
        {
          "x": "09:00",
          "y": 83.3
        },
        {
          "x": "09:30",
          "y": 83.3
        },
        {
          "x": "10:00",
          "y": 0
        },
        {
          "x": "10:30",
          "y": 66.7
        },
        {
          "x": "11:00",
          "y": 83.3
        },
        {
          "x": "11:30",
          "y": 83.3
        },
        {
          "x": "12:00",
          "y": 66.7
        },
        {
          "x": "12:30",
          "y": null
        },
        {
          "x": "13:00",
          "y": null
        },
        {
          "x": "13:30",
          "y": 66.7
        },
        {
          "x": "14:00",
          "y": 83.3
        },
        {
          "x": "14:30",
          "y": 33.3
        },
        {
          "x": "15:00",
          "y": 16.7
        },
        {
          "x": "15:30",
          "y": 66.7
        },
        {
          "x": "16:00",
          "y": 83.3
        },
        {
          "x": "16:30",
          "y": 66.7
        },
        {
          "x": "17:00",
          "y": 0
        },
        {
          "x": "17:30",
          "y": 0
        }
      ]
    }
  ],
  "plotOptions": {
    "heatmap": {
      "colorScale": {
        "ranges": [
          {
            "from": 0,
            "to": 49.9,
            "color": "#bfdbfe",
            "name": "< 50 %"
          },
          {
            "from": 50,
            "to": 79.9,
            "color": "#60a5fa",
            "name": "50–80 %"
          },
          {
            "from": 80,
            "to": 94.9,
            "color": "#2563eb",
            "name": "80–95 %"
          },
          {
            "from": 95,
            "to": 100,
            "color": "#1e3a8a",
            "name": "≥ 95 %"
          }
        ]
      },
      "empty": {
        "label": "closed"
      }
    }
  },
  "dataLabels": {
    "enabled": false
  },
  "legend": {
    "position": "bottom"
  },
  "tooltip": {
    "y": {
      "formatter": function (v) { return v === null || v === undefined ? shut.label : v + ' %' }
    }
  }
} })({
  "label": "closed"
})

This example uses Premium modules. Compare licences · Embedding in a distributed product?