Map: The map is colored by the median response time (the time for which half take more time and half take less) for the category selected in the drop-down box. When no area is selected, the other displays show citywide data. Select community districts by hovering over them on the map; lock the other displays by clicking a community district. The borough buttons on the left act similarly.
Histogram: The histogram area updates automatically with the selection. It indicates the distribution of response times for given incident types, dates and regions. The average and medians are shown, along with a slidable percentile indicator, which is adjusted with the percentile slider just above the histogram. Hovering over the histogram shows the percentage of calls less than and more than the selected time interval.
Trends: The trends area shows the median values over time. Hovering over the trend shows the median value at a given time; clicking and dragging opens a window that adjusts the histogram values indicating the call data in just the selected window. The window can be dragged and resized.
Note on medians and percentiles: The percentiles are estimated from the data in the histograms. This can lead to erratic results when there are small numbers of calls, so use care when interpreting these results.
How is this loading millions of calls worth of data? It isn't. This data has been prefiltered and summarized by creating histograms for each call type, community district, and month, greatly reducing the amount of data to transmit to the browser. You can see how this filtering is done, and how the resulting datasets are written, in this Observable notebook
Doesn't the City already provide response time information and trends? Yes, you can see the official reports (under "Local Law 119") here. However, this report focuses on a single number per borough per month: the average response time. While useful (and what is mandated by law!) showing the distribution of the data gives a fuller picture of how responses can vary, even within a smaller region or timeframe.
Who is responsible for this? Chris Prince (that's me!). I wrote the scripts to summarize the datasets and display the graphs. However, this could never have been made without the extraordinary work of NYC public servants: FDNY, who collected the data; the NYC Open Data team, who published it; and the NYC DoITT GIS team, who create the map tiles and community district shapes. That said, any errors in analysis or rendering are mine, and corrections should be sent to me (please do!). You can Tweet to @superdupercrisp or open an Issue on github.
Any other credit due? I was inspired by this exceptional visualization done by the LA Times Data Desk that looks at LAFD response times. Seriously, check it out!