Visualization with No Alt Text

Visualization with Alt Text

Scatterplot showing how flipper and bill length differ across three species of penguins. Gentoo penguins typically have the longest flipper length with values ranging between 210-230mm. Adelie and Chinstrap have flipper lengths ranging between 180-210mm. Chinstrap and Gentoo have longer bill lengths with an average of around 50mm and Adelie penguins have bill lengths ranging between 35-45mm.

Accessible Visualization

Accessible Visualization with Export Options

Sonification of Points

Sonification of Line Graphs

Acknowledgements

Thanks to Mara Averick for her detailed blog posts on incorporating accessibility into Highcharter, which inspired this module, mrjoh3 for the github issue that helped me determine which older version of Highcharter to use for accessibility, and the team behind Highcharts and Highcharter for adding such awesome and heavily researched accessibility features.

LS0tCnRpdGxlOiAiTm9uLVZpc3VhbCBWaXN1YWxpemF0aW9ucyBEZW1vIgphdXRob3I6ICJMYXVyZW4gTWlsbmUiCm91dHB1dDogCiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAogICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgdGhlbWU6IGNlcnVsZWFuCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIGVycm9yID0gVFJVRSwgdGlkeSA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgY2FjaGUuZXh0cmEgPSBwYWNrYWdlVmVyc2lvbigidHVmdGUiKSkKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShiYWJ5bmFtZXMpCmxpYnJhcnkoaHRtbHRvb2xzKQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQpgYGAKCiMgVmlzdWFsaXphdGlvbiB3aXRoIE5vIEFsdCBUZXh0CgpgYGB7cn0KZGF0YShwZW5ndWlucywgcGFja2FnZSA9ICJwYWxtZXJwZW5ndWlucyIpIAoKcGVuZ3VpbnMgJT4lIAogIGdncGxvdChhZXMoeCA9IGZsaXBwZXJfbGVuZ3RoX21tLCB5ID0gYmlsbF9sZW5ndGhfbW0sIGNvbG9yID0gc3BlY2llcykpICsKICBnZW9tX3BvaW50KCkgKyAKICBsYWJzKHRpdGxlID0gIkhvdyBkbyBmbGlwcGVyIGFuZCBiaWxsIGxlbmd0aCBjb21wYXJlIGJldHdlZW4gcGVuZ3VpbiBzcGVjaWVzPyIsIHggPSAiRmxpcHBlciBMZW5ndGggKG1tKSIsIHkgPSAiQmlsbCBMZW5ndGggKG1tKSIpCmBgYAoKIyBWaXN1YWxpemF0aW9uIHdpdGggQWx0IFRleHQKCmBgYHtyIGZpZy5hbHQgPSAiU2NhdHRlcnBsb3Qgc2hvd2luZyBob3cgZmxpcHBlciBhbmQgYmlsbCBsZW5ndGggZGlmZmVyIGFjcm9zcyB0aHJlZSBzcGVjaWVzIG9mIHBlbmd1aW5zLiBHZW50b28gcGVuZ3VpbnMgdHlwaWNhbGx5IGhhdmUgdGhlIGxvbmdlc3QgZmxpcHBlciBsZW5ndGggd2l0aCB2YWx1ZXMgcmFuZ2luZyBiZXR3ZWVuIDIxMC0yMzBtbS4gQWRlbGllIGFuZCBDaGluc3RyYXAgaGF2ZSBmbGlwcGVyIGxlbmd0aHMgcmFuZ2luZyBiZXR3ZWVuIDE4MC0yMTBtbS4gQ2hpbnN0cmFwIGFuZCBHZW50b28gaGF2ZSBsb25nZXIgYmlsbCBsZW5ndGhzIHdpdGggYW4gYXZlcmFnZSBvZiBhcm91bmQgNTBtbSBhbmQgQWRlbGllIHBlbmd1aW5zIGhhdmUgYmlsbCBsZW5ndGhzIHJhbmdpbmcgYmV0d2VlbiAzNS00NW1tLiJ9CmRhdGEocGVuZ3VpbnMsIHBhY2thZ2UgPSAicGFsbWVycGVuZ3VpbnMiKSAKCnBlbmd1aW5zICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBmbGlwcGVyX2xlbmd0aF9tbSwgeSA9IGJpbGxfbGVuZ3RoX21tLCBjb2xvciA9IHNwZWNpZXMpKSArCiAgZ2VvbV9wb2ludCgpICsgCiAgbGFicyh0aXRsZSA9ICJIb3cgZG8gZmxpcHBlciBhbmQgYmlsbCBsZW5ndGggY29tcGFyZSBiZXR3ZWVuIHBlbmd1aW4gc3BlY2llcz8iLCB4ID0gIkZsaXBwZXIgTGVuZ3RoIChtbSkiLCB5ID0gIkJpbGwgTGVuZ3RoIChtbSkiKQpgYGAKCiMgQWNjZXNzaWJsZSBWaXN1YWxpemF0aW9uCgpgYGB7cn0KaGNoYXJ0KCAKICBwZW5ndWlucywKICAic2NhdHRlciIsCiAgaGNhZXMoeCA9IGZsaXBwZXJfbGVuZ3RoX21tLCB5ID0gYmlsbF9sZW5ndGhfbW0sIGdyb3VwID0gc3BlY2llcykpICU+JSAKICBoY190aXRsZSh0ZXh0ID0gIkhvdyBkbyBmbGlwcGVyIGFuZCBiaWxsIGxlbmd0aCBjb21wYXJlIGJldHdlZW4gcGVuZ3VpbiBzcGVjaWVzPyIpICU+JSAKICBoY194QXhpcyh0aXRsZSA9IGxpc3QodGV4dCA9ICJGbGlwcGVyIExlbmd0aCAobW0pIikpICU+JQogIGhjX3lBeGlzKHRpdGxlID0gbGlzdCh0ZXh0ID0gIkJpbGwgTGVuZ3RoIChtbSkiKSkKYGBgCgoKIyBBY2Nlc3NpYmxlIFZpc3VhbGl6YXRpb24gd2l0aCBFeHBvcnQgT3B0aW9ucyB7LX0KCmBgYHtyfQoKUG9wdWxhck5hbWVzIDwtIGJhYnluYW1lcyAlPiUKICBmaWx0ZXIoc2V4ID09ICJGIikgJT4lCiAgZ3JvdXBfYnkobmFtZSkgJT4lCiAgc3VtbWFyaXplKHRvdGFsID0gc3VtKG4pKSAlPiUKICBhcnJhbmdlKGRlc2ModG90YWwpKSAlPiUKICBoZWFkKDEwKQoKICBoY2hhcnQoUG9wdWxhck5hbWVzLCAiY29sdW1uIiwgaGNhZXMoeCA9IG5hbWUsIHkgPSB0b3RhbCksIAogICAgYWNjZXNzaWJpbGl0eSA9IGxpc3QoCiAgICAgIGVuYWJsZWQgPSBUUlVFLAogICAgICBrZXlib2FyZE5hdmlnYXRpb24gPSBsaXN0KGVuYWJsZWQgPSBUUlVFKSkpICU+JQogIGhjX2V4cG9ydGluZygKICAgIGVuYWJsZWQgPSBUUlVFLAogICAgYWNjZXNzaWJpbGl0eSA9IGxpc3QoZW5hYmxlZCA9IFRSVUUpKSAlPiUgCiAgaGNfeUF4aXModGl0bGUgPSBsaXN0KHRleHQgPSAiTnVtYmVyIG9mIEJhYmllcyIpLAogICAgICAgICAgIGFjY2Vzc2liaWxpdHkgPSBsaXN0KGRlc2NyaXB0aW9uID0gIkJhYmllcyBDb3VudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSAiMCB0byA0LjUgbWlsbGlvbiIpKSU+JQogIGhjX3hBeGlzKHRpdGxlID0gbGlzdCh0ZXh0ID0gIk5hbWUiKSkgJT4lCiAgaGNfYWRkX2RlcGVuZGVuY3kobmFtZSA9ICJtb2R1bGVzL2FjY2Vzc2liaWxpdHkuanMiKSAlPiUKICBoY19hZGRfZGVwZW5kZW5jeShuYW1lID0gIm1vZHVsZXMvZXhwb3J0aW5nLmpzIikgJT4lCiAgaGNfYWRkX2RlcGVuZGVuY3kobmFtZSA9ICJtb2R1bGVzL2V4cG9ydC1kYXRhLmpzIikgCmBgYAoKCiMgU29uaWZpY2F0aW9uIG9mIFBvaW50cyAKCmBgYHtyfQpQb3B1bGFyTmFtZXMgJT4lIAogIGhjaGFydCgicG9pbnQiLCBoY2Flcyh4ID0gbmFtZSwgeSA9IHRvdGFsKSwgICAgCiAgICAgICAgIGFjY2Vzc2liaWxpdHkgPSBsaXN0KAogICAgICAgICAgIGVuYWJsZWQgPSBUUlVFLAogICAgICAgICAgIGtleWJvYXJkTmF2aWdhdGlvbiA9IGxpc3QoZW5hYmxlZCA9IFRSVUUpKSkgJT4lCiAgaGNfZXhwb3J0aW5nKAogICAgZW5hYmxlZCA9IFRSVUUsCiAgICBhY2Nlc3NpYmlsaXR5ID0gbGlzdChlbmFibGVkID0gVFJVRSkpICU+JQogIGhjX3Bsb3RPcHRpb25zKAogICAgc2VyaWVzID0gbGlzdCgKICAgICAgcG9pbnQgPSBsaXN0KCAjIG5vdGUgdGhhdCB0aGUgY2xpY2sgZnVuY3Rpb24gaXMgaW5zaWRlIHNlcmllcz5wb2ludD5ldmVudHMKICAgICAgICBldmVudHMgPSBsaXN0KAogICAgICAgICAgY2xpY2sgPSBKUygiZnVuY3Rpb24oKSB7CiAgICAgICAgICB0aGlzLnNvbmlmeSh7CiAgICAgICAgICAgIGluc3RydW1lbnRzOiBbewogICAgICAgICAgICAgICAgaW5zdHJ1bWVudDogJ3NpbmUnLAogICAgICAgICAgICAgICAgaW5zdHJ1bWVudE1hcHBpbmc6IHsKICAgICAgICAgICAgICAgICAgICB2b2x1bWU6IDAuOCwKICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjUwLAogICAgICAgICAgICAgICAgICAgIHBhbjogJ3gnLAogICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeTogJ3knCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgLy8gU3RhcnQgYXQgQzUgbm90ZSwgZW5kIGF0IEM2CiAgICAgICAgICAgICAgICBpbnN0cnVtZW50T3B0aW9uczogewogICAgICAgICAgICAgICAgICAgIG1pbkZyZXF1ZW5jeTogNTIwLAogICAgICAgICAgICAgICAgICAgIG1heEZyZXF1ZW5jeTogMTA1MAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XQogICAgICAgIH0pCiAgICAgICB9IikpKSkpICU+JQogIGhjX2FkZF9kZXBlbmRlbmN5KG5hbWUgPSAibW9kdWxlcy9zb25pZmljYXRpb24uanMiKSAlPiUKICBoY19hZGRfZGVwZW5kZW5jeShuYW1lID0gIm1vZHVsZXMvYWNjZXNzaWJpbGl0eS5qcyIpICU+JQogIGhjX2FkZF9kZXBlbmRlbmN5KG5hbWUgPSAibW9kdWxlcy9leHBvcnRpbmcuanMiKSAlPiUKICBoY19hZGRfZGVwZW5kZW5jeShuYW1lID0gIm1vZHVsZXMvZXhwb3J0LWRhdGEuanMiKSAKYGBgCgojIFNvbmlmaWNhdGlvbiBvZiBMaW5lIEdyYXBocyAKCmBgYHtyfQpiYWJ5bmFtZXMgJT4lIAogIGZpbHRlcihzZXggPT0gIkYiLCBuYW1lICVpbiUgYygiTGF1cmVuIiwgIkVtbWEiLCAiSmFtZXMiLCAiUGV0ZXIiKSkgJT4lIAogIGhjaGFydCgibGluZSIsIGhjYWVzKHg9IHllYXIsIHkgPSBuLCBncm91cCA9IG5hbWUpKSAlPiUgCiAgaGNfdGl0bGUodGV4dCA9ICJIb3cgbWFueSBmZW1hbGUgVS5TLiBiYWJpZXMgd2VyZSBuYW1lZCBMYXVyZW4sIEVtbWEsIEphbWVzIGFuZCBQZXRlciBvdmVyIHRoZSBsYXN0IDE1MCB5ZWFycz8iKSAlPiUgCiAgICBoY19wbG90T3B0aW9ucygKICAgICAgc2VyaWVzID0gbGlzdCggIyBub3RlIHRoYXQgdGhlIGNsaWNrIGZ1bmN0aW9uIGlzIGluc2lkZSBzZXJpZXM+ZXZlbnRzCiAgICAgICAgZXZlbnRzID0gbGlzdCgKICAgICAgICAgIGNsaWNrID0gSlMoImZ1bmN0aW9uKCkgewogICAgICAgICAgdGhpcy5zb25pZnkoewogICAgICAgICAgICBkdXJhdGlvbjogMzAwMCwKICAgICAgICAgICAgcG9pbnRQbGF5VGltZTogJ3gnLAogICAgICAgICAgICBpbnN0cnVtZW50czogW3sKICAgICAgICAgICAgICAgIGluc3RydW1lbnQ6ICd0cmlhbmdsZU1ham9yJywKICAgICAgICAgICAgICAgIGluc3RydW1lbnRNYXBwaW5nOiB7CiAgICAgICAgICAgICAgICAgICAgdm9sdW1lOiAwLjgsCiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDI1MCwKICAgICAgICAgICAgICAgICAgICBwYW46ICd4JywKICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3k6ICd5JwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIC8vIFN0YXJ0IGF0IEM1IG5vdGUsIGVuZCBhdCBDNgogICAgICAgICAgICAgICAgaW5zdHJ1bWVudE9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICBtaW5GcmVxdWVuY3k6IDEyMCwKICAgICAgICAgICAgICAgICAgICBtYXhGcmVxdWVuY3k6IDM1MAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9XQogICAgICAgICAgfSkKICAgICAgICAgfSIpKSkpICU+JQogIGhjX2FkZF9kZXBlbmRlbmN5KG5hbWUgPSAibW9kdWxlcy9zb25pZmljYXRpb24uanMiKQpgYGAKCmBgYHtyfQpQb3B1bGFyRmVtYWxlTmFtZXMgPC0gYmFieW5hbWVzICU+JSAKICBmaWx0ZXIoc2V4ID09ICJGIikgJT4lIAogIGdyb3VwX2J5KHllYXIpICU+JSAKICBzbGljZV9tYXgoMSkKCgpQb3B1bGFyRmVtYWxlTmFtZXMgJT4lIAogIGhjaGFydCgibGluZSIsIGhjYWVzKHg9IHllYXIsIHkgPSBuLCBncm91cCA9IG5hbWUpKSAlPiUgCiAgaGNfdGl0bGUodGV4dCA9ICJNb3N0IHBvcHVsYXIgbmFtZSBlYWNoIHllYXIiKSAlPiUgCiAgaGNfc3VidGl0bGUodGV4dCA9ICJGb3IgYmFiaWVzIGJvcm4gaW4gdGhlIFUuUy4gYW5kIGFzc2lnbmVkIHRoZSBmZW1hbGUgc2V4IGF0IGJpcnRoIikgJT4lIAogICAgaGNfcGxvdE9wdGlvbnMoCiAgICAgIHNlcmllcyA9IGxpc3QoCiAgICAgICAgZXZlbnRzID0gbGlzdCgKICAgICAgICAgIGNsaWNrID0gSlMoImZ1bmN0aW9uKCkgewogICAgICAgICAgdGhpcy5zb25pZnkoewogICAgICAgICAgICBkdXJhdGlvbjogMzAwMCwKICAgICAgICAgICAgcG9pbnRQbGF5VGltZTogJ3gnLAogICAgICAgICAgICBpbnN0cnVtZW50czogW3sKICAgICAgICAgICAgICAgIGluc3RydW1lbnQ6ICdzaW5lTWFqb3InLAogICAgICAgICAgICAgICAgaW5zdHJ1bWVudE1hcHBpbmc6IHsKICAgICAgICAgICAgICAgICAgICB2b2x1bWU6IDAuOCwKICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjUwLAogICAgICAgICAgICAgICAgICAgIHBhbjogJ3gnLAogICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeTogJ3knCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgLy8gU3RhcnQgYXQgQzUgbm90ZSwgZW5kIGF0IEM2CiAgICAgICAgICAgICAgICBpbnN0cnVtZW50T3B0aW9uczogewogICAgICAgICAgICAgICAgICAgIG1pbkZyZXF1ZW5jeTogMTIwLAogICAgICAgICAgICAgICAgICAgIG1heEZyZXF1ZW5jeTogMzUwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1dCiAgICAgICAgICB9KQogICAgICAgICB9IikpKSkgJT4lCiAgaGNfYWRkX2RlcGVuZGVuY3kobmFtZSA9ICJtb2R1bGVzL3NvbmlmaWNhdGlvbi5qcyIpCmBgYAoKIyBBY2tub3dsZWRnZW1lbnRzIHstfQoKVGhhbmtzIHRvIE1hcmEgQXZlcmljayBmb3IgaGVyIGRldGFpbGVkIFtibG9nIHBvc3RzIG9uIGluY29ycG9yYXRpbmcgYWNjZXNzaWJpbGl0eSBpbnRvIEhpZ2hjaGFydGVyXShodHRwczovL2RhdGFhbmQubWUvcG9zdHMvMjAyMS0xMS0xMC1hZHZlbnR1cmVzLXdpdGgtdGhlLWhpZ2hjaGFydHMtYWNjZXNzaWJpbGl0eS1tb2R1bGUtcGFydC0xLyNkLWZvb3Rub3RlLTEpLCB3aGljaCBpbnNwaXJlZCB0aGlzIG1vZHVsZSwgbXJqb2gzIGZvciB0aGUgW2dpdGh1YiBpc3N1ZSB0aGF0IGhlbHBlZCBtZSBkZXRlcm1pbmUgd2hpY2ggb2xkZXIgdmVyc2lvbiBvZiBIaWdoY2hhcnRlciB0byB1c2UgZm9yIGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZ2l0aHViLmNvbS9qYmt1bnN0L2hpZ2hjaGFydGVyL2lzc3Vlcy83NzgwKSwgYW5kIHRoZSB0ZWFtIGJlaGluZCBIaWdoY2hhcnRzIGFuZCBIaWdoY2hhcnRlciBmb3IgYWRkaW5nIHN1Y2ggYXdlc29tZSBhbmQgaGVhdmlseSByZXNlYXJjaGVkIGFjY2Vzc2liaWxpdHkgZmVhdHVyZXMuCg==