I made a few charts that let you examine the dataset from various angles: you can see the distribution of film permits across all five boroughs, the rise of issued permits over the years, and a breakdown by the type of film production and the country where the film projects originate.

All in all, this a pretty straightforward visualization, so, as an extra challenge, I decided to make the charts accessible.

The biggest limitation here is that chart.js, a JavaScript library chosen for this challenge, uses the canvas element to render charts (see the Accessibility concerns section). You can add a fallback content to canvas, which will be rendered when JavaScript is disabled, but from what I can tell, this text is not read by screen readers.

To work around this, I started by adding the fallback text. I wrote this little script to generate the HTML from the dataset JSON objects:

I added the HTML produced by the script inside the canvas element, and then used it to update the aria-label attribute of the canvas with JavaScript. This way, if JavaScript is disabled in the browser, the text will be displayed and read out, and if JavaScript is enabled, the text will be used as a label for the canvas element, and still picked up by screen readers.