<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>dataand.me</title>
<link>https://dataand.me/</link>
<atom:link href="https://dataand.me/index.xml" rel="self" type="application/rss+xml"/>
<description>Mara Averick&#39;s blog, notes, and talks.</description>
<generator>quarto-1.8.26</generator>
<lastBuildDate>Sat, 09 Apr 2022 00:00:00 GMT</lastBuildDate>
<item>
  <title>Docspo</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/docspo.html</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<div class="cell">
<style type="text/css">
h4 {
    font-weight: 600;
    text-transform: uppercase;
    font-size: .9em;
    line-height: 1.4em;
    opacity: 1;
}
</style>
</div>
<div class="mt-1 callout callout-style-simple callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Note</span>Updates
</div>
</div>
<div class="callout-body-container callout-body">
<ul>
<li><strong>2024-03-07</strong> Add SVG Path Visualizer to Assorted.</li>
<li><strong>2025-12-05</strong> Add Diátaxis.</li>
</ul>
</div>
</div>
<section id="what-is-this" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="what-is-this">What is this?</h2>
<p>A few years back I chanced upon <a href="https://dataandme.tumblr.com/tagged/studyspo"><strong>studyspo</strong></a> tumblr, a place where the drudgery of note-taking is celebrated as an art form (or at least that’s <em>my</em> interpretation). Here, I hope to collect similar findings in the realm of inspirational documentation for programming languages and frameworks.</p>
<div class="terms">
<dl>
<dt>
<strong><em>docspo</em></strong>
</dt>
<dd>
A portmanteau of documentation + inspiration.
</dd>
</dl>
</div>
<p>I’m not yet sure who the target audience is for this (aside from yours truly), or if this document will hold any meaning unto itself. But, for now, I quite literally need a place to keep my notes.</p>
<aside>
By “notes” I mean links and impressions, not content.
</aside>
</section>
<section id="javascript" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="javascript">JavaScript</h2>
<div class="status">
<div class="icon-container">
<p><i class="bi bi-filetype-js"></i></p>
</div>
<div class="status-body">
<p><strong>Relationship status:</strong> I don’t <em>know</em> know JavaScript, but we travel in some of the same circles. Like, we have enough mutual friends that I could easily get by with a combination of copy and paste and asking for help, but I’ve never properly learn it head on. We interact mainly through R packages that wrap JavaScript APIs, which occasionally leads to my looking under the hood to tweak a few things directly.</p>
</div>
</div>
<section id="speaking-javascript" class="level3">
<h3 class="anchored" data-anchor-id="speaking-javascript">Speaking JavaScript</h3>
<p><a href="http://speakingjs.com/"><em>Speaking JavaScript</em></a> <span class="citation" data-cites="speakingjs">(Rauschmayer 2014)</span> wasn’t the first thing I found when looking for some sort of crash-course intro to JS for someone (me) who already knows how to program but is looking to become a bit more JavaScript literate, but I wish it had been. Its author, <a href="http://dr-axel.de/">Axel Rauschmayer</a>, has several free, online <a href="https://exploringjs.com/">JavaScript books</a>, all of which he describes in one or two bullets that, along with their titles, give you a sense of who the targeted reader is.</p>
<section id="overview-in-commented-code" class="level4">
<h4 class="anchored" data-anchor-id="overview-in-commented-code">Overview in commented code</h4>
<p>I’m lifting this whole example that comprises <a href="http://speakingjs.com/es5/ch01.html#_an_overview_of_the_syntax"><strong>An Overview of the Syntax</strong></a> from the <a href="http://speakingjs.com/es5/ch01.html">first chapter</a> because I think it’s <em>masterful</em>:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>JavaScript</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" data-filename="JavaScript" style="background: #f1f3f5;"><pre class="sourceCode javascript code-with-copy"><code class="sourceCode javascript"><span id="cb1-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// Two slashes start single-line comments</span></span>
<span id="cb1-2"></span>
<span id="cb1-3"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">var</span> x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span>  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// declaring a variable</span></span>
<span id="cb1-4"></span>
<span id="cb1-5">x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> y<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span>  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// assigning a value to the variable `x`</span></span>
<span id="cb1-6"></span>
<span id="cb1-7"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">foo</span>(x<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> y)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span>  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// calling function `foo` with parameters `x` and `y`</span></span>
<span id="cb1-8">obj<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">bar</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span>  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// calling method `bar` of object `obj`</span></span>
<span id="cb1-9"></span>
<span id="cb1-10"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// A conditional statement</span></span>
<span id="cb1-11"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> (x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">===</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>) {  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// Is `x` equal to zero?</span></span>
<span id="cb1-12">    x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">123</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb1-13">}</span>
<span id="cb1-14"></span>
<span id="cb1-15"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// Defining function `baz` with parameters `a` and `b`</span></span>
<span id="cb1-16"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">baz</span>(a<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> b) {</span>
<span id="cb1-17">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> a <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> b<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb1-18">}</span></code></pre></div></div>
</div>
<p>Why am I so obsessed with it? It’s <em>beyond</em> parsimonious. In that code block alone, you’re introduced to what would elsewhere be several chapters worth of content.<sup>1</sup> How to write a comment is always one of the first things I want to know when encountering new syntax, <em>plus</em> it lets you read the commented code that follows.</p>
<p>You also pick up several pieces of vocabulary, the meanings of which can be inferred from the context and that the author can continue to use without needing to explicitly define them: variable, value, function, object, parameter, method, etc. This is super valuable for getting started, especially since defining these terms can be onerous and abstract. I don’t need to know what exactly a method is or how it does what it does, but being able to know that <code>obj.bar(3);</code> means a method is being called on an object opens up quite a bit in terms of reading code. The chapter <em>does</em> go on to define each of these terms, but having that overview means that the definitions can reference other terms without worrying too much about order/sequence.</p>
</section>
<section id="setting-the-vibe" class="level4">
<h4 class="anchored" data-anchor-id="setting-the-vibe">Setting the vibe</h4>
<p>I admittedly didn’t read the whole preface, but there are pieces of it I think are really well done. <a href="http://speakingjs.com/es5/pr02.html#_what_you_need_to_know_about_this_book">“What You Need to Know About This Book”</a> gives you the persona/target audience (programmers who know some other language), and what’s <em>not</em> covered. And then there’s this liberating first sentence to <a href="http://speakingjs.com/es5/pr02.html#how_to_read">“Tips for Reading this Book”</a>:</p>
<blockquote class="blockquote">
<p>The most important tip for learning JavaScript is <em>don’t get bogged down by the details</em>.</p>
</blockquote>
<p>I honestly think that’s one of the hardest things for programmers to do when writing: ignore the edge cases (AKA get bogged down by the details). It’s like we write in preemptive defense of someone coming in and pointing out the exceptions. Guess what? They’re not who you’re writing this for, Susan!</p>
</section>
<section id="my-take" class="level4">
<h4 class="anchored" data-anchor-id="my-take">My take</h4>
<p>I haven’t read the whole thing yet (which should be obvious, given my current relationship with JavaScript), and I’ll likely add more comments here as I go. That said, I got more out of reading that one chapter (the first) than I did out of reading more in-depth reference pages on similar topics—I’m glad they all exist, but Speaking JS is fresh (and very for me).</p>
</section>
</section>
<section id="js4ds" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="js4ds">JS4DS</h3>
<p><a href="https://js4ds.org"><em>JavaScript for Data Science</em></a> (JS4DS) <span class="citation" data-cites="gans2020">(Gans, Hodges, and Wilson 2020)</span> was written by <a href="https://maya.rbind.io">Maya Gans</a>, <a href="https://tbyhdgs.info">Toby Hodges</a>, and <a href="http://third-bit.com">Greg Wilson</a> who all, presumably, contributed equally. But it’s worth noting Greg Wilson’s background in, and writing on evidence-based practices in teaching programming—see, e.g. <a href="https://teachtogether.tech/"><em>Teaching Tech Together</em></a> <span class="citation" data-cites="wilson2020">(Wilson 2020)</span>.</p>
<section id="who-you-are-personas" class="level4">
<h4 class="anchored" data-anchor-id="who-you-are-personas">Who you are (personas)</h4>
<p>Defining the audience through “prototypical users” (i.e.&nbsp;personas with names, experiences, goals, etc.) is a practice that Wilson uses across his works and is a decidedly effective method for gauging the book’s fit for a reader without feeling like a check-list of credentials.</p>
<p>I, for example, wouldn’t necessarily give a resounding <em>Yes!</em> to the bullets that follow the three learners in the <a href="https://js4ds.org/#s:intro-personas">“Who You Are”</a> section of the introduction. But the personas make it clear that it’s a good fit for my level of experience and needs.</p>
</section>
<section id="setting-up-and-tooling" class="level4">
<h4 class="anchored" data-anchor-id="setting-up-and-tooling">Setting up and tooling</h4>
<p>In the intro (see <a href="https://js4ds.org/#s:intro-setup">Setting Up</a>) and throughout the book as necessary, you’re given a somewhat detailed description of the tools you’ll need to set up, how they differ, and how you’ll be using them on your computer. It’s not so detailed as to bog the reader down, and it’s clearly delineated in such a way that you can easily skim the sections if you don’t need the information. However, this is the type of information that I’ve found lacking in other programming books.</p>
</section>
<section id="key-points" class="level4 page-columns page-full">
<h4 class="anchored" data-anchor-id="key-points">Key points</h4>
<p>Each chapter concludes with a section titled “Key Points” (see, e.g.&nbsp;<a href="https://js4ds.org/#key-points-1">Key Points for Basic Features</a>), which is a bulleted list of the concepts covered. I like this for two reasons: it serves as a summary/reminder for someone who’s read the chapter, and it can serve as a sort of “test” of topics for someone deciding whether or not they actually need to read the chapter.</p>
<aside>
Accommodating the piecemeal knowledge learners often bring to the table is a clutch move.
</aside>
</section>
</section>
<section id="reactjs" class="level3">
<h3 class="anchored" data-anchor-id="reactjs">ReactJS</h3>
<section id="getting-started" class="level4">
<h4 class="anchored" data-anchor-id="getting-started">Getting Started</h4>
<p>The structure is <em>everything</em>! There may not be list agreement, but the options at the top of <a href="https://reactjs.org/docs/getting-started.html">React’s “Getting Started”</a> <span class="citation" data-cites="reactjs">(React Contributors 2021)</span>, as seen in Figure&nbsp;1, are pretty darn good: <a href="https://reactjs.org/docs/getting-started.html#try-react">try React</a>, <a href="https://reactjs.org/docs/getting-started.html#learn-react">learn React</a>, <a href="https://reactjs.org/docs/getting-started.html#staying-informed">staying informed</a>, <a href="https://reactjs.org/docs/getting-started.html#versioned-documentation">versioned documentation</a>, <a href="https://reactjs.org/docs/getting-started.html#something-missing">something missing</a>.</p>
<div id="fig-react-gettingstarted" class="quarto-float quarto-figure quarto-figure-center anchored" alt="Screenshot of Getting Started page for React with list of options: try react, learn react, stating informed, and versioned documentation.">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-react-gettingstarted-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://dataand.me/images/reactjs_getting_started.png" class="img-fluid figure-img" alt="Screenshot of Getting Started page for React with list of options: try react, learn react, stating informed, and versioned documentation.">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-react-gettingstarted-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: Screenshot of Getting Started page for React
</figcaption>
</figure>
</div>
<p>Maybe I’d kill off “something missing” (from that header menu, not get rid of it on the whole), but it’s concise and gives the primary things someone would be looking for in getting-started-style documentation.</p>
<p>In <a href="https://reactjs.org/docs/getting-started.html#learn-react">Learn React</a> they expressly break things down again:</p>
<blockquote class="blockquote">
<ul>
<li>If you prefer to <strong>learn by doing</strong>, start with our <a href="https://reactjs.org/tutorial/tutorial.html">practical tutorial</a>.<br>
</li>
<li>If you prefer to <strong>learn concepts step by step</strong>, start with our <a href="https://reactjs.org/docs/hello-world.html">guide to main concepts</a>.</li>
</ul>
</blockquote>
<p>You also have the sidebar navigation showing you the other sections, some of which might be what someone was actually looking for when they went to the getting-started page (e.g.&nbsp;<a href="https://reactjs.org/docs/add-react-to-a-website.html">add React to a website</a>, <a href="https://reactjs.org/docs/create-a-new-react-app.html">create a new React app</a>). I also like the wording of “Main Concepts” (and how prominent it is in the menu)—most people aren’t trying to learn all the things, and it lets you know that this subset probably holds the key concepts you need to get going.</p>
</section>
</section>
</section>
<section id="sass" class="level2">
<h2 class="anchored" data-anchor-id="sass">Sass</h2>
<div class="status">
<div class="icon-container">
<p><i class="bi bi-filetype-scss"></i></p>
</div>
<div class="status-body">
<p><strong>Relationship status:</strong> I’ve been learning Sass over the past few months as I familiarize myself with <a href="https://quarto.org/">Quarto</a>, and Bootstrap theming.<sup>2</sup> While I’m by no means an expert, I have a decent sense of how it works at this point.</p>
</div>
</div>
<section id="sass-blog" class="level3">
<h3 class="anchored" data-anchor-id="sass-blog">Sass blog</h3>
<p>I think that, on the whole, the official <a href="https://sass-lang.com/documentation">Sass-language documentation</a> <span class="citation" data-cites="sassdocs2021">(Lintorn-Catlin et al. 2021)</span> is quite good. The <a href="https://sass-lang.com/blog">Sass blog</a> has a structure I like in terms of clear categories/types of posts that are consistent, with obvious target audiences, and calls to action.</p>
<p>Posts titled <strong>“Request for Comment”</strong>, e.g. <a href="https://sass-lang.com/blog/request-for-comments-new-js-api">Request for Comments: New JS API</a> <span class="citation" data-cites="weizenbaum2021a">(Weizenbaum 2021a)</span>, summarize the key aspects of feature proposals, linking to their full discussions on GitHub. It’s a nice way of both soliciting feedback for those who don’t necessarily want to go through what might be difficult-to-follow threads on GitHub, and creating something to refer back to if/when these proposals are implemented.</p>
<p>Posts announcing live implementations of <strong>release candidates</strong>, e.g. <a href="https://sass-lang.com/blog/new-js-api-release-candidate">New JS API Release Candidate is Live</a> <span class="citation" data-cites="weizenbaum2021b">(Weizenbaum 2021b)</span>, “give users a chance to kick the tires a bit before we set [a feature] in stone.” There are clear instructions about how to use the release candidate (including installation instructions, when necessary), and a concluding section on what to expect if/when deprecation time comes around.</p>
<p>A <strong>“Feature Watch”</strong> post, e.g. <a href="https://sass-lang.com/blog/feature-watchcss-imports-and-css-compatibility">Feature Watch: CSS Imports and CSS Compatibility</a> <span class="citation" data-cites="weizenbaum2018">(Weizenbaum 2018)</span>, goes into details about a feature that has gone through the their process of: proposal, tests, and implementation. They’re fairly similar to our package-release posts on the tidyverse blog.</p>
<p>Posts <strong>announcing deprecation</strong>, e.g. <a href="https://sass-lang.com/blog/libsass-is-deprecated">LibSass is Deprecated</a> <span class="citation" data-cites="weizenbaum2020">(Weizenbaum 2020)</span>, start off with the key points (which makes sense). After that, the key sections are as follows:</p>
<ul>
<li>Why deprecate?<br>
</li>
<li>What does “deprecated” mean?<br>
</li>
<li>How do I migrate?</li>
</ul>
<p>Other sections are context dependent, but I particularly like that they take the time to reiterate the meaning of the lifecycle stage (i.e.&nbsp;deprecation).</p>
<section id="my-take-1" class="level4">
<h4 class="anchored" data-anchor-id="my-take-1">My take</h4>
<p>The Sass blog is sufficiently sparse (about four posts a year) that it seems followable for heavy language users. It also creates a succinct, structured trail for the developers to point to as users who haven’t followed as closely encounter these things in the future.</p>
</section>
</section>
</section>
<section id="html" class="level2">
<h2 class="anchored" data-anchor-id="html">HTML</h2>
<div class="status">
<div class="icon-container">
<p><i class="bi bi-filetype-html"></i></p>
</div>
<div class="status-body">
<p><strong>Relationship status:</strong> I know HTML pretty well. These days, most of the HTML I “write” is Markdown-generated. But I’ve been writing things on the interwebs since before Markdown existed. So, y’know, I’m not <em>totally</em> oblivious.</p>
</div>
</div>
<section id="my-current-html-boilerplate-by-manuel-matuzović" class="level3">
<h3 class="anchored" data-anchor-id="my-current-html-boilerplate-by-manuel-matuzović">My current HTML boilerplate by Manuel Matuzović</h3>
<p>I probably wouldn’t bother to include a section on HTML here were it not for this blog post, <a href="https://www.matuzo.at/blog/html-boilerplate/">My current HTML boilerplate</a> <span class="citation" data-cites="matuzovic_2021">(Matuzović 2021)</span>, which I came across today, and just really loved.</p>
<p>The structure is simple. It begins by showing Matuzović’s boilerplate in full.</p>
<details>
<summary>
View code
</summary>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>HTML</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" data-filename="HTML" style="background: #f1f3f5;"><pre class="sourceCode html code-with-copy"><code class="sourceCode html"><span id="cb2-1"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;!DOCTYPE</span> html<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-2"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">html</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> lang</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"en"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> class</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"no-js"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-3"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">head</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-4">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> charset</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"UTF-8"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-5">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> name</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"viewport"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> content</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"width=device-width, initial-scale=1"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-6"></span>
<span id="cb2-7">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">title</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>Unique page title - My Site<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">title</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-8"></span>
<span id="cb2-9">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">script</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> type=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"module"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-10">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">document</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">documentElement</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">classList</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">remove</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'no-js'</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb2-11">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">document</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">documentElement</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">classList</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">add</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'js'</span>)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb2-12">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">script</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-13"></span>
<span id="cb2-14">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">link</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> rel</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"stylesheet"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> href</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"/assets/css/styles.css"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-15">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">link</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> rel</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"stylesheet"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> href</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"/assets/css/print.css"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> media</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"print"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-16"></span>
<span id="cb2-17">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> name</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"description"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> content</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Page description"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-18">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> property</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"og:title"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> content</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Unique page title - My Site"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-19">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> property</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"og:description"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> content</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Page description"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-20">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> property</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"og:image"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> content</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"https://www.mywebsite.com/image.jpg"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-21">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> property</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"og:image:alt"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> content</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Image description"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-22">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> property</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"og:locale"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> content</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"en_GB"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-23">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> property</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"og:type"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> content</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"website"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-24">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> name</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"twitter:card"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> content</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"summary_large_image"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-25">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> property</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"og:url"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> content</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"https://www.mywebsite.com/page"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-26">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">link</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> rel</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"canonical"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> href</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"https://www.mywebsite.com/page"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-27"></span>
<span id="cb2-28">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">link</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> rel</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"icon"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> href</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"/favicon.ico"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-29">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">link</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> rel</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"icon"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> href</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"/favicon.svg"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> type</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"image/svg+xml"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-30">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">link</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> rel</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"apple-touch-icon"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> href</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"/apple-touch-icon.png"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-31">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">link</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> rel</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"manifest"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> href</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"/my.webmanifest"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-32">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">meta</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> name</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"theme-color"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> content</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#FF00FF"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-33"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">head</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-34"></span>
<span id="cb2-35"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">body</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-36">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;!-- Content --&gt;</span></span>
<span id="cb2-37">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">script</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> src</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"/assets/js/xy-polyfill.js"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> nomodule</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">script</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-38">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">script</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> src</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"/assets/js/script.js"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> type=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"module"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">script</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-39"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">body</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb2-40"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">html</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div></div>
</div>
</details>
<p>This is followed by a line-by-line explanation of the code. The post doesn’t aim to teach you everything you need to know about HTML, or the components thereof (though there are plenty of resources linked to, if you were looking for that). The explanations are the <em>why</em> for each item—and they’re short!</p>
<p>It’s a great example of a type of “documentation” (though I suppose that’s not <em>technically</em> what this is) the aim of which is <strong>code literacy</strong>. It explains the type of content that you’re likely generating if you’re publishing anything online. Such content becomes invisible <em>because</em> it’s so common. Do you need to know all of this information? Probably not. But it’s delivered in such a digestible manner that I, for one, was happy to have learned these nuggets of knowledge.</p>
</section>
</section>
<section id="css" class="level2">
<h2 class="anchored" data-anchor-id="css">CSS</h2>
<div class="status">
<div class="icon-container">
<p><i class="bi bi-filetype-css"></i></p>
</div>
<div class="status-body">
<p><strong>Relationship status:</strong> I know enough CSS to know what to look up, and use it sparingly enough that I’m fine with that. I don’t really keep up with the latest, though, so when I <em>do</em> want to do something beyond the very basics, I need a concise resource that assumes the appropriate amount of underlying knowledge.</p>
</div>
</div>
<section id="mdn-web-docs" class="level3">
<h3 class="anchored" data-anchor-id="mdn-web-docs">MDN Web Docs</h3>
<p>The <a href="https://developer.mozilla.org/en-US/">MDN Web Docs</a> <span class="citation" data-cites="mdn_2022">(MDN Contributors 2022)</span> could fall under any number of language and/or framework headers. Their most meta table of contents, <a href="https://developer.mozilla.org/en-US/docs/Web">Web technology for developers</a>, is broken into “Documentation for Web developers,” and “Web technology references,” which covers <em>a lot</em>. I happen to be learning about <a href="./notes/2021-12_down-the-front-end-rabbit-hole/index.html#css-grid" aria-label="Down the front end rabbit hole - CSS Grid" title="Down the front end rabbit hole - CSS Grid">CSS Grid</a>, so I’ve been spending the most time in their CSS resources. However, the content isn’t as important as the structure.</p>
<section id="property-reference-pages" class="level4">
<h4 class="anchored" data-anchor-id="property-reference-pages">Property reference pages</h4>
<p>I’m using their reference page for <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-start"><code>grid-column-start</code></a> <span class="citation" data-cites="mdn_grid-column-start_2021">(MDN Contributors 2021)</span> as an example in Figure&nbsp;2, but there’s nothing specific to this page that distinguishes it from the others. The page opens with an informal definition (the formal definition comes later), and interactive demo that showcases a variety of property values/legal syntax options where applicable.</p>
<div id="fig-mdn-grid-column-start" class="quarto-float quarto-figure quarto-figure-center anchored" alt="Screenshot of https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-start which has the header, grid-column-start, in the body with a definition and demo below it. In the sidebar there is a Table of Contents, and a subsequent list of Related Topics.">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-mdn-grid-column-start-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://dataand.me/images/mdn_web_docs_screenshot.png" class="img-fluid figure-img" alt="Screenshot of https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-start which has the header, grid-column-start, in the body with a definition and demo below it. In the sidebar there is a Table of Contents, and a subsequent list of Related Topics.">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-mdn-grid-column-start-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;2: Screenshot of MDN Web Docs reference page for the grid-column-start CSS property
</figcaption>
</figure>
</div>
<p>The table of contents and subsequent sections are consistent across reference pages in a manner similar to that for “man pages” in most languages. What I like about the MDN page structure is the integration of “Related Topics” (in the sidebar), and “See also” (which comes at the very end of the page).</p>
<p>The related-topics section of the sidebar is broken into “Learn” (broader, getting-started material), “Reference” (other reference pages like the one you’re on), and “Guides” (which are broader than reference pages, but more specific and detailed than the learn pages). All of these give the reader cues about content they may not have searched for, but could be helpful (especially since a reference page is, by nature, niche).</p>
<p>I imagine the extent of the see-also section varies across pages, with some having more content than others. The first bullet is consistent, though, showing related properties (i.e.&nbsp;related reference pages). In the case of <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-start#see_also"><code>grid-column-start</code></a>, there’s also a link to an MDN guide, and, lastly, to an external video tutorial.</p>
</section>
<section id="my-take-2" class="level4">
<h4 class="anchored" data-anchor-id="my-take-2">My take</h4>
<p>All in all, the MDN Web Docs are great. I use them frequently I’m sure at least in part due to the fact that they’re sufficiently popular as to do very well in search results. There are a variety of types of resources targeting different personas and levels of experience, and they make it easy to traverse from one type of resource to another.</p>
</section>
</section>
<section id="css-vocabulary" class="level3">
<h3 class="anchored" data-anchor-id="css-vocabulary">CSS vocabulary</h3>
<p>There are several handy resources that amount to CSS glossaries (though they all go by different names). I found most of them by way of Chris Coyier’s post on CSS Tricks, <a href="https://css-tricks.com/css-ruleset-terminology/">CSS Ruleset Terminology</a> <span class="citation" data-cites="coyier_2017">(Coyier 2017)</span>, which includes a limited set of definitions, but has a visual guide I quite like (see Figure&nbsp;3).</p>
<div id="fig-css-ruleset-terminology" class="quarto-float quarto-figure quarto-figure-center anchored" alt="Visual depiction of CSS ruleset terminology from Chris Coyier's post by the same name on CSS Tricks: ruleset enboxes the whole of it, selector includes .module, declaration includes the property (padding) and value (1.25rem).">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-css-ruleset-terminology-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://dataand.me/images/css-ruleset-terminology-chris-coyier.png" class="img-fluid figure-img" alt="Visual depiction of CSS ruleset terminology from Chris Coyier's post by the same name on CSS Tricks: ruleset enboxes the whole of it, selector includes .module, declaration includes the property (padding) and value (1.25rem).">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-css-ruleset-terminology-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;3: Visual depiction of CSS ruleset terminology from Chris Coyier’s post by the same name on CSS Tricks.
</figcaption>
</figure>
</div>
<ul>
<li><a href="http://nimbupani.com/css-vocabulary.html"><strong>CSS Vocabulary</strong></a> by <a href="http://nimbupani.com/">Divya Manian</a><br>
</li>
<li><a href="https://www.impressivewebs.com/css-terms-definitions/"><strong>CSS Terms and Definitions</strong></a> by <a href="https://twitter.com/ImpressiveWebs">Louis Lazaris</a><br>
</li>
<li><a href="https://css-tricks.com/almanac/"><strong>CSS Almanac</strong></a> on <a href="https://css-tricks.com/">CSS Tricks</a></li>
</ul>
</section>
</section>
<section id="sec-assorted" class="level2">
<h2 class="anchored" data-anchor-id="sec-assorted">Assorted</h2>
<ul>
<li><p><a href="https://diataxis.fr/"><strong>Diátaxis</strong></a> (known by some as <a href="https://docs.divio.com/documentation-system/"><em>The Grand Unified Theory of Documentation</em></a>): “a systematic approach to technical documentation authoring” <span class="citation" data-cites="procida2025">(Procida 2025)</span>. It breaks documentation into four distinct forms that correspond to user needs:</p>
<div class="il">
<ol type="1">
<li>Tutorials,</li>
<li>How-to guides,</li>
<li>Technical reference, and</li>
<li>Explanation.</li>
</ol>
</div></li>
<li><p>The <a href="https://svg-path-visualizer.netlify.app/"><strong>SVG Path Visualizer</strong></a> by <a href="https://mathieu.dutour.me/">Mathieu Dutour</a> is an interactive SVG visualizer (per the name) and explainer. The <em>Explanations</em> section is linked to the drawn SVG such that you can hover over portions of the text and the related text and segments of the SVG will be highlighted, and vice-versa (hovering over parts of the SVG will highlight corresponding text, as seen in Figure&nbsp;4).</p></li>
</ul>
<div class="px-5">
<div id="fig-svg-visualizer" class="quarto-float quarto-figure quarto-figure-center anchored" alt="Screenshot of the SVG Path Visualizer with the mouse hovered over a control point of the SVG, with an added inlaid magnification box over the cursor. The corresponding text in the explanation is colored to match the control point and related SVG segment.">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-svg-visualizer-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://dataand.me/images/screenshot-svg-path-visualizer-min.png" class="img-fluid figure-img" alt="Screenshot of the SVG Path Visualizer with the mouse hovered over a control point of the SVG, with an added inlaid magnification box over the cursor. The corresponding text in the explanation is colored to match the control point and related SVG segment.">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-svg-visualizer-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;4: Screenshot of the SVG Path Visualizer with the mouse hovered over a control point – magnification added.
</figcaption>
</figure>
</div>
</div>



</section>


<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-coyier_2017" class="csl-entry">
Coyier, Chris. 2017. <span>“<span>CSS</span> Ruleset Terminology. <span>CSS</span>-Tricks.”</span> May 3, 2017. <a href="https://css-tricks.com/css-ruleset-terminology">https://css-tricks.com/css-ruleset-terminology</a>.
</div>
<div id="ref-gans2020" class="csl-entry">
Gans, Maya, Toby Hodges, and Greg Wilson. 2020. <em><span>JavaScript</span> for Data Science</em>. Boca Raton, FL: CRC Press. <a href="https://js4ds.org">https://js4ds.org</a>.
</div>
<div id="ref-sassdocs2021" class="csl-entry">
Lintorn-Catlin, Hampton, Natalie Weizenbaum, Chris Eppstein, and Jina Anne. 2021. <span>“<span>Sass</span> Documentation.”</span> <em>Sass-Lang.com</em>. <a href="https://sass-lang.com/documentation">https://sass-lang.com/documentation</a>.
</div>
<div id="ref-matuzovic_2021" class="csl-entry">
Matuzović, Manuel. 2021. <span>“My Current HTML Boilerplate.”</span> <em>Web Development Blog</em>. <a href="https://www.matuzo.at/blog/html-boilerplate/">https://www.matuzo.at/blog/html-boilerplate/</a>.
</div>
<div id="ref-mdn_grid-column-start_2021" class="csl-entry">
MDN Contributors. 2021. <span>“Grid-Column-Start - <span>CSS</span>: Cascading Style Sheets. <span>MDN</span> Web Docs.”</span> August 12, 2021. <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-start">https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-start</a>.
</div>
<div id="ref-mdn_2022" class="csl-entry">
———. 2022. <span>“<span>MDN</span> Web Docs.”</span> January 18, 2022. <a href="https://developer.mozilla.org">https://developer.mozilla.org</a>.
</div>
<div id="ref-procida2025" class="csl-entry">
Procida, Daniele. 2025. <span>“Diátaxis: <span>A</span> Systematic Approach to Technical Documentation Authoring.”</span> Diátaxis. 2025. <a href="https://diataxis.fr/">https://diataxis.fr/</a>.
</div>
<div id="ref-speakingjs" class="csl-entry">
Rauschmayer, Axel. 2014. <em>Speaking <span>JavaScript</span></em>. Sebastopol, CA: O’Reilly Media. <a href="http://speakingjs.com">http://speakingjs.com</a>.
</div>
<div id="ref-reactjs" class="csl-entry">
React Contributors. 2021. <span>“<span>React</span> - a <span>JavaScript</span> Library for Building User Interfaces.”</span> <em>Reactjs.org</em>. <a href="https://reactjs.org">https://reactjs.org</a>.
</div>
<div id="ref-weizenbaum2018" class="csl-entry">
Weizenbaum, Natalie. 2018. <span>“Feature Watch: <span>CSS</span> Imports and <span>CSS</span> Compatibility.”</span> <em>Sass Blog</em>. <a href="https://sass-lang.com/blog/feature-watchcss-imports-and-css-compatibility">https://sass-lang.com/blog/feature-watchcss-imports-and-css-compatibility</a>.
</div>
<div id="ref-weizenbaum2020" class="csl-entry">
———. 2020. <span>“<span>LibSass</span> Is Deprecated.”</span> <em>Sass Blog</em>. <a href="https://sass-lang.com/blog/libsass-is-deprecated">https://sass-lang.com/blog/libsass-is-deprecated</a>.
</div>
<div id="ref-weizenbaum2021a" class="csl-entry">
———. 2021a. <span>“Request for Comments: New <span>JS</span> <span>API</span>.”</span> <em>Sass Blog</em>. <a href="https://sass-lang.com/blog/request-for-comments-new-js-api">https://sass-lang.com/blog/request-for-comments-new-js-api</a>.
</div>
<div id="ref-weizenbaum2021b" class="csl-entry">
———. 2021b. <span>“New <span>JS</span> <span>API</span> Release Candidate Is Live.”</span> <em>Sass Blog</em>. <a href="https://sass-lang.com/blog/new-js-api-release-candidate">https://sass-lang.com/blog/new-js-api-release-candidate</a>.
</div>
<div id="ref-wilson2020" class="csl-entry">
Wilson, Greg. 2020. <em>Teaching Tech Together: How to Create and Deliver Lessons That Work and Build a Teaching Community Around Them</em>. Boca Raton, FL: CRC Press. <a href="https://teachtogether.tech">https://teachtogether.tech</a>.
</div>
</div></section><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Footnotes</h2>

<ol>
<li id="fn1"><p>That’s not a bad thing in those contexts, but this is something special.↩︎</p></li>
<li id="fn2"><p>See <a href="./notes/2021-12_down-the-front-end-rabbit-hole/index.html">Down the front-end rabbit hole</a> for more on that journey.↩︎</p></li>
</ol>
</section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/4.0/deed.en_us">CC BY 4.0</a></div></div></section></div> ]]></description>
  <category>notes</category>
  <category>documentation</category>
  <category>sci-comm</category>
  <guid>https://dataand.me/docspo.html</guid>
  <pubDate>Sat, 09 Apr 2022 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/images/docspo-thumb-min.png" medium="image" type="image/png" height="81" width="144"/>
</item>
<item>
  <title>highcharter a11y talk</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/talks/highcharter-a11y-talk/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<section id="adventures-with-highcharter-and-the-highcharts-accessibility-module" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="adventures-with-highcharter-and-the-highcharts-accessibility-module">Adventures with <a href="https://jkunst.com/highcharter/">{highcharter}</a> and the <a href="https://www.highcharts.com/products/highcharts/">Highcharts</a> accessibility module</h2>
<section id="video" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="video">Video</h3>
<div class="video-container">
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/l_U3hQ6mm60?start=1813" title="Video player for Mara Averick &amp; Maya Gans | Data Visualization Accessibility | RStudio Meetup" frameborder="0" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
</div>
<p>Above, the video opens at the start of my talk. However, I definitely recommend watching <a href="https://twitter.com/mayacelium">Maya Gans’</a> talk, <a href="https://youtu.be/l_U3hQ6mm60?t=175">A11Y in R: Adapting Sarah L. Fossheim’s 10 dos and don’ts to keep in mind when designing accessible data visualizations</a>, as well.</p>
<aside>
a11y is a <a href="https://en.wikipedia.org/wiki/Numeronym">numeronym</a> for accessibility (which is eleven characters long).
</aside>
<p>If you view the <a href="https://www.youtube.com/watch?v=l_U3hQ6mm60">video on YouTube</a>, <a href="https://twitter.com/_rachaeldempsey">Rachael Dempsy</a> (our wonderful host and moderator) has added links to resources and R packages mentioned in the discussion.</p>
</section>
<section id="slides" class="level3">
<h3 class="anchored" data-anchor-id="slides">Slides</h3>
<p>You can see the slides (embedded, below) on their own <a href="https://colorado.rstudio.com/rsc/highcharter-a11y-talk/" target="_blank">here</a> (which should be the most accessible version).</p>
<iframe title="Adventures with {highcharter} and the Highcharts accessibility module" class="slide-deck" src="https://colorado.rstudio.com/rsc/highcharter-a11y-talk/"></iframe>
<p>The source code for the slides is available in <a href="https://github.com/batpigandme/highcharter-a11y-talk" target="_blank">this GitHub repo</a>, which also contains the slides in PDF format.</p>
<p>More working examples can also be found in my <a href="https://github.com/batpigandme/accessible-highcharter">accessible-highcharter GitHub repo</a>.</p>
</section>
<section id="references" class="level3">




</section>
</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-bert2018" class="csl-entry">
Bert, Alison, and Lisa Marie Hayes. 2018. <span>“Making charts accessible for people with visual impairments: <span>A</span> collaboration between <span>Elsevier</span> and <span>Highcharts</span> sets a new standard for chart accessibility.”</span> <span>Elsevier Connect</span>. February 18, 2018. <a href="https://www.elsevier.com/connect/making-charts-accessible-for-people-with-visual-impairments">https://www.elsevier.com/connect/making-charts-accessible-for-people-with-visual-impairments</a>.
</div>
<div id="ref-aom_explainer_2021" class="csl-entry">
Boxhall, Alice, James Craig, Dominic Mazzoni, and Alexander Surkov. 2021. <span>“The <span>Accessibility</span> <span>Object</span> <span>Model</span>: <span>Explainer</span>.”</span> <em>The Accessibility Object Model (AOM)</em>. WICG. <a href="https://wicg.github.io/aom/explainer.html">https://wicg.github.io/aom/explainer.html</a>.
</div>
<div id="ref-canelon2021" class="csl-entry">
Canelón, Silvia. 2021. <span>“Resources for <span>Data Viz Accessibility</span>.”</span> September 23, 2021. <a href="https://silvia.rbind.io/blog/2021-curated-compilations/01-data-viz-a11y/">https://silvia.rbind.io/blog/2021-curated-compilations/01-data-viz-a11y/</a>.
</div>
<div id="ref-cantrell2021" class="csl-entry">
Cantrell, Stanley J, Bruce N Walker, and Øystein Moseng. 2021. <span>“Highcharts <span>Sonification Studio</span>: <span>An</span> online, open-source, extensible, and accessible data sonification tool.”</span> In <em>The 26th <span>International Conference</span> on <span>Auditory Display</span> (<span>ICAD</span> 2021)</em>, 7.
</div>
<div id="ref-gies2019" class="csl-entry">
Gies, Ted, and Øystein Moseng. 2019. <span>“Highcharts <span>-</span> <span>The Next Chapter</span>.”</span> Presented at the <span>CSUN</span> 2019, March 14. <a href="https://www.slideshare.net/tedgies/highcharts-the-next-chapter-csun-2019">https://www.slideshare.net/tedgies/highcharts-the-next-chapter-csun-2019</a>.
</div>
<div id="ref-gies2020" class="csl-entry">
———. 2020. <span>“Accessible <span>Visualizations</span>: <span>Maps</span>, <span>Annotations</span>, and <span>Spark</span> lines.”</span> Presented at the <span>CSUN</span> 2020, March 11. <a href="https://www.slideshare.net/tedgies/csun-2020-accessible-visualizations-maps-annotations-and-spark-lines">https://www.slideshare.net/tedgies/csun-2020-accessible-visualizations-maps-annotations-and-spark-lines</a>.
</div>
<div id="ref-goransson2017" class="csl-entry">
Göransson, Daniel. 2017. <span>“Alt-texts: <span>The Ultimate Guide</span>.”</span> <span>Axess Lab</span>. October 15, 2017. <a href="https://axesslab.com/alt-texts/">https://axesslab.com/alt-texts/</a>.
</div>
<div id="ref-highsoftas2021" class="csl-entry">
Highsoft AS. 2021a. <span>“Gaining competitive advantage through accessible web applications.”</span> White Paper. <a href="https://wp-assets.highcharts.com/www-highcharts-com/blog/wp-content/uploads/2021/02/18092938/A11y-Whitepaper-Gaining-competitive-advantage-through-accessible-web-applications.pdf">https://wp-assets.highcharts.com/www-highcharts-com/blog/wp-content/uploads/2021/02/18092938/A11y-Whitepaper-Gaining-competitive-advantage-through-accessible-web-applications.pdf</a>.
</div>
<div id="ref-highcharts2021" class="csl-entry">
———. 2021b. <span>“Highcharts <span>JS</span>.”</span> <a href="https://www.highcharts.com/products/highcharts/">https://www.highcharts.com/products/highcharts/</a>.
</div>
<div id="ref-kunst2021" class="csl-entry">
Kunst, Joshua. 2021. <span>“<span class="nocase">highcharter</span>: <span>A</span> wrapper for the ’highcharts’ library.”</span> <a href="https://jkunst.com/highcharter/">https://jkunst.com/highcharter/</a>.
</div>
<div id="ref-lundgard2022" class="csl-entry">
Lundgard, Alan, and Arvind Satyanarayan. 2022. <span>“Accessible visualization via natural language descriptions: <span>A</span> four-level model of semantic content.”</span> <em>IEEE Transactions on Visualization and Computer Graphics</em> 28 (1): 1073–83. <a href="https://doi.org/10.1109/TVCG.2021.3114770">https://doi.org/10.1109/TVCG.2021.3114770</a>.
</div>
<div id="ref-moseng2016" class="csl-entry">
Moseng, Øystein, and Ted Gies. 2016. <span>“Acessible <span>SVG</span> charts using <span>ARIA</span>.”</span> Presented at the <span>CSUN</span> 2016, March 4. <a href="https://www.slideshare.net/tedgies/accessible-svg-charts-using-aria-2016">https://www.slideshare.net/tedgies/accessible-svg-charts-using-aria-2016</a>.
</div>
</div></section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/SA/deed.en_us">CC BY SA</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2022,
  author = {Averick, Mara},
  title = {Highcharter A11y Talk},
  date = {2022-03-09},
  url = {https://dataand.me/talks/highcharter-a11y-talk/},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2022" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2022. <span>“Highcharter a11y talk.”</span> March 9,
2022. <a href="https://dataand.me/talks/highcharter-a11y-talk/">https://dataand.me/talks/highcharter-a11y-talk/</a>.
</div></div></section></div> ]]></description>
  <category>talks</category>
  <category>video</category>
  <category>R</category>
  <category>data visualization</category>
  <category>accessibility</category>
  <category>Highcharts</category>
  <category>highcharter</category>
  <guid>https://dataand.me/talks/highcharter-a11y-talk/</guid>
  <pubDate>Wed, 09 Mar 2022 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/talks/images/adventures-with-highcharter-talk-image-min.png" medium="image" type="image/png" height="77" width="144"/>
</item>
<item>
  <title>CSS Grid and accessibility</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/notes/2022-02_css-grid-and-accessibility/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<section id="preface" class="level2">
<h2 class="anchored" data-anchor-id="preface">Preface</h2>
<p>It is in the very nature of falling down “rabbit holes” that learning one thing leads to another, and another <em>ad infinitum</em>. It’s only fitting, then, that the final section of <a href="../../notes/2021-12_down-the-front-end-rabbit-hole/index.html">Down the front-end rabbit hole</a> (on <a href="../../notes/2021-12_down-the-front-end-rabbit-hole/index.html#css-grid">CSS Grid</a>) began to suffer from some serious informational bloat, and minor topical drift. So, in an effort to factor things out, my notes on CSS Grid and accessibility continue here.</p>
<p>All prior caveats apply. These are merely the notes of a new learner, and I can only promise to direct you to the sources of information (all of which are infinitely more comprehensive and reliable than the notes themselves). In fact, if you want to learn about digital accessibility, you should probably jump ship and head to <a href="https://www.a11yproject.com/">The A11y Project</a> now.</p>
</section>
<section id="css-grid-power-and-responsibility" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="css-grid-power-and-responsibility">CSS Grid: Power and responsibility</h2>
<p>A quick reminder as to how we got here: <a href="https://quarto.org/docs/output-formats/html-themes.html">Quarto’s HTML theming</a> is powered by <a href="https://getbootstrap.com/docs/5.3/getting-started/introduction/">Bootstrap</a>—specifically, <a href="https://getbootstrap.com/docs/5.3/layout/css-grid/">Bootstrap 5.3 with CSS Grid</a> enabled. Quarto has plenty of built-in <a href="https://quarto.org/docs/authoring/article-layout.html">article-layout</a> and <a href="https://quarto.org/docs/output-formats/page-layout.html">page-layout</a> features, but, for <code>page-layout: custom</code> you’d want to get to know <a href="(https://quarto.org/docs/output-formats/page-layout.html#css-grid)">CSS Grid</a> a bit better.</p>
<div class="callout callout-style-simple callout-note">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-body-container">
<p><span class="visually-hidden">Note:</span> From here on out, if I use the term “Grid” it will be in reference to CSS Grid, despite the fact that other grid systems exist (such as Bootstrap’s native grid).</p>
</div>
</div>
</div>
<p>I should note, <strong><em>I think CSS Grid is great</em></strong>, and I’ve had a blast playing around with it in Quarto (e.g.&nbsp;in my <a href="https://quartoand.me/page-layout.html">Quarto page-layout demo</a>)! It also has a lot of really great documentation and guides, such as <a href="https://css-tricks.com/snippets/css/complete-guide-grid/">A Complete Guide to Grid</a> <span class="citation" data-cites="house2023">(House 2023)</span>, which makes it all the more fun to learn about. And, because Grid is a tool for responsive design, it can be used to <em>enhance</em> accessibility across devices.</p>
<p>Accessibility is a huge topic, and CSS Grid is by no means immune to the challenges inherent in it. The aforementioned <a href="https://www.a11yproject.com/">A11y Project</a> and the <a href="https://www.w3.org/WAI/">W3C Web Accessibility Initiative</a> are two great places for finding general resources—<a href="https://www.w3.org/WAI/tips/developing/">Developing for Web Accessibility - Tips for Getting Started</a> <span class="citation" data-cites="wai2019">(White, Abou-Zahra, and Henry 2019)</span> is a good starting point if this is new to you. There are two broad areas, though, where Grid (if not wielded properly) can yield accessibility problems: content re-ordering, and “markup flattening.”</p>
<section id="source-vs.-visual-order" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="source-vs.-visual-order">Source vs.&nbsp;visual order</h3>
<p>Part of what makes Grid so powerful, the ability to re-flow and rearrange content, can also make it dangerously easy to create a disconnect between the logical and visual ordering of content. In fact, it’s right in the <a href="https://www.w3.org/TR/css-grid-2/#order-accessibility">World Wide Web Consortium (W3C) Grid spec</a>:</p>
<blockquote class="blockquote">
<p>Grid layout gives authors great powers of rearrangement over the document. However, these are not a substitute for correct ordering of the document source <span class="citation" data-cites="w3cgrid2_2020">(Etemad, Atanassov, and Jr. 2020)</span>.</p>
</blockquote>
<p>Luckily, there are also many resources, such as <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/CSS_Grid_Layout_and_Accessibility#re-ordering_content_in_css_grid_layout">CSS Grid Layout and Accessibility: Re-ordering content in CSS Grid Layout</a> <span class="citation" data-cites="mdn_gridaccessibility2021">(MDN Contributors 2021a)</span>, addressing this topic. And, to be clear, this challenge isn’t endemic to CSS Grid, or particularly new. CSS experts, such as <a href="https://rachelandrew.co.uk/about/">Rachel Andrew</a>, have been writing about this for a long time.</p>
<aside>
Andrew’s many <a href="https://noti.st/rachelandrew">talks and presentations are available on notist</a>.
</aside>
<p>In <a href="https://rachelandrew.co.uk/archives/2015/07/28/modern-css-layout-power-and-responsibility/">Modern CSS layout, power and responsibility</a>, she writes:</p>
<blockquote class="blockquote">
<p>With Grid and Flexbox you no longer need to describe your layout in markup, they give us a way to truly separate content and presentation…<strong>With this power comes great responsibility.</strong> For just as it will be possible for a developer to start out with a beautifully semantic, well structured document and use Grid and Flexbox to meet the design requirements, it will be possible for them to stop caring about the document structure at all <span class="citation" data-cites="andrew2015">(Andrew 2015)</span>.</p>
</blockquote>
<p>Why does this matter so much? From a more recent post by Andrew, <a href="https://web.dev/content-reordering/">Content reordering</a>:</p>
<blockquote class="blockquote">
<p>The order of content in your document is important for the accessibility of your site. A screen reader will read out content based on the document order, using the HTML elements that you have selected to give meaning to that content <span class="citation" data-cites="andrew2020">(Andrew 2020)</span>.</p>
</blockquote>
<p>In <a href="https://www.matuzo.at/blog/the-dark-side-of-the-grid-part-2/#visual-order">The Dark Side of the Grid (Part 2)</a>, Manuel Matuzović concisely describes what CSS can and <em>cannot</em> change when it comes to order:</p>
<blockquote class="blockquote">
<ol type="1">
<li>Both tab order and the order in which screen readers read content follow DOM order.</li>
<li>Changing visual order with CSS has no effect on DOM order.</li>
</ol>
<p>No matter where we place items with CSS, keyboard users will still encounter elements in the order in which they appear in the HTML document <span class="citation" data-cites="matuzovic_2019b">(Matuzović 2019b)</span>.</p>
</blockquote>
<aside>
<a href="https://www.matuzo.at/blog/the-dark-side-of-the-grid-part-2/#visual-order">The Dark Side of the Grid (Part 2)</a> also has helpful animations of what it looks like for keyboard users when visual order does and does not match the DOM order.
</aside>
</section>
<section id="markup-flattening" class="level3">
<h3 class="anchored" data-anchor-id="markup-flattening">Markup flattening</h3>
<p>MDN’s <a href="https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML">HTML: A good basis for accessibility</a> opens with the following statement:</p>
<blockquote class="blockquote">
<p>A great deal of web content can be made accessible just by making sure the correct Hypertext Markup Language [HTML] elements are used for the correct purpose at all times <span class="citation" data-cites="mdn_htmlaccessibility2022">(MDN Contributors 2022)</span>.</p>
</blockquote>
<p>Using <strong>semantic HTML</strong> (or semantic markup) is, essentially, using the right HTML element for the job. For example, using <code>&lt;h1&gt;</code>, <code>&lt;h2&gt;</code>, etc. for headers gives your document structure for assistive technologies (which we’ll discuss in more detail in a subsequent section).</p>
<div class="callout callout-style-simple callout-note">
<div class="callout-body d-flex">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-body-container">
<p><span class="visually-hidden">Note:</span> Given my focus on Quarto and R Markdown, it’s worth noting here that, generally speaking, markdown lends itself to good semantic markup (which isn’t to say that there aren’t limitations). Check out <a href="https://www.smashingmagazine.com/2021/09/improving-accessibility-of-markdown/">Improving the Accessibility of your Markdown</a> <span class="citation" data-cites="bailey2021">(Bailey 2021)</span> for some helpful tips.</p>
</div>
</div>
</div>
<p>However, there are certain features of Grid (namely the fact that items need to be <em>direct children</em> of the grid container in order to be treated as grid items) that can lead to “compromising on semantics,” as described in <a href="https://www.matuzo.at/blog/the-dark-side-of-the-grid/#compromising-on-semantics">The Dark Side of the Grid (Part 1)</a> <span class="citation" data-cites="matuzovic_2019a">(Matuzović 2019a)</span>. There are solutions in the pipeline (several of which are discussed in The Dark Side of the Grid Part 1), but it’s something to keep in mind as you start using Grid.</p>
</section>
<section id="getting-it-right" class="level3">
<h3 class="anchored" data-anchor-id="getting-it-right">Getting it right</h3>
<ul>
<li><p><a href="https://www.smashingmagazine.com/2018/04/best-practices-grid-layout/">Best Practices With CSS Grid Layout</a> <span class="citation" data-cites="andrew2018">(Andrew 2018)</span></p></li>
<li><p><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/CSS_Grid_Layout_and_Accessibility#how_should_we_approach_accessibility_for_grid_layout">How should we approach accessibility for grid layout?</a> <span class="citation" data-cites="mdn_gridaccessibility2021">(MDN Contributors 2021a)</span></p></li>
<li><p><a href="https://hiddedevries.nl/en/blog/2022-01-23-more-to-give-than-just-the-div-semantics-and-how-to-get-them-right">More to give than just the div: semantics and how to get them right</a> <span class="citation" data-cites="devries2022">(de Vries 2022)</span></p></li>
</ul>
<details>
<summary>
<strong>Official specs and guidelines</strong>
</summary>
<ul>
<li>Web Content Accessibility Guidelines (WCAG) Overview <a href="https://www.w3.org/WAI/standards-guidelines/wcag/">http://www.w3.org/WAI/intro/wcag</a></li>
<li>Web Accessibility Initiative - Accessible Rich Internet Applications (WAI-ARIA) Overview for Accessible Rich Internet Applications <a href="http://www.w3.org/WAI/intro/aria" class="uri">http://www.w3.org/WAI/intro/aria</a></li>
<li><a href="https://www.w3.org/TR/WCAG21/">Web Content Accessibility Guidelines 2.1</a> <span class="citation" data-cites="wcag21_2018">(O’Connor et al. 2018)</span></li>
<li><a href="https://www.w3.org/TR/wai-aria-practices-1.2/">WAI-ARIA Authoring Practices 1.2</a> <span class="citation" data-cites="aria-ap_2021">(Cooper et al. 2021)</span></li>
</ul>
</details>
</section>
</section>
<section id="the-accessibility-tree" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="the-accessibility-tree">The accessibility tree</h2>
<p>Understanding the big picture (e.g.&nbsp;how <a href="https://www.w3.org/TR/WCAG21/#dfn-assistive-technologies">assistive technologies</a><sup>1</sup> interact with web content) makes inclusive, accessible development much easier. I <em>strongly</em> recommend reading these brief background appendices from <a href="https://wicg.github.io/aom/explainer.html">The Accessibility Object Model (AOM) - Explainer</a> <span class="citation" data-cites="aom_explainer_2021">(Boxhall et al. 2021)</span>:</p>
<div class="il">
<ol type="1">
<li><p><a href="https://wicg.github.io/aom/explainer.html#background-assistive-technology-and-the-accessibility-tree">Assistive technology and the accessibility tree</a>; and</p></li>
<li><p><a href="https://wicg.github.io/aom/explainer.html#background-dom-tree-accessibility-tree-and-platform-accessibility-apis">DOM tree, accessibility tree and platform accessibility APIs</a>.</p></li>
</ol>
</div>
<p>The appendices, above, are the source of the notes and figures that follow in this section.</p>
<p>Assistive technologies interact with web pages and applications through platform-specific <a href="https://w3c.github.io/core-aam/#intro_aapi">accessibility APIs</a> that expose a tree of objects referred to as the <strong>accessibility tree</strong>.</p>
<div id="fig-aom-a11y-tree" class="quarto-float quarto-figure quarto-figure-center anchored" alt="Flow from application UI to accessibility tree to assistive technology to user.">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-aom-a11y-tree-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://dataand.me/images/wicg-aom-a11y-tree-min.png" class="img-fluid figure-img" alt="Flow from application UI to accessibility tree to assistive technology to user.">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-aom-a11y-tree-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: Figure from AOM Explainer shows flow from application UI to accessibility tree to assistive technology to user.
</figcaption>
</figure>
</div>
<p>In web browsers, the structure and content of a web page’s markup is represented by a <strong>Document Object Model (DOM) tree</strong> <span class="citation" data-cites="mdn_dom2021">(MDN Contributors 2021b)</span>. The DOM tree is, then, translated into both the visual representation (what you see in the browser), and the accessibility tree, which can be accessed by platform-specific accessibility APIs, which bring the information to the user via assistive technologies.</p>
<div class="page-columns page-full">
<div id="fig-aom-dom-a11y-tree" class="preview-image quarto-float quarto-figure quarto-figure-center anchored page-columns page-full" alt="HTML translated into DOM tree translated into visual UI and accessibility tree.">
<figure class="quarto-float quarto-float-fig figure page-columns page-full">
<div aria-describedby="fig-aom-dom-a11y-tree-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca" class="page-columns page-full">
<img src="https://dataand.me/images/wicg-aom-DOM-a11y-tree-min.png" class="preview-image img-fluid figure-img column-body-outset" alt="HTML translated into DOM tree translated into visual UI and accessibility tree.">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-aom-dom-a11y-tree-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;2: Figure from AOM Explainer shows HTML translated into DOM tree translated into visual UI and accessibility tree.
</figcaption>
</figure>
</div>
</div>
<p>Each node of the accessibility tree (referred to as an <strong>accessibility node</strong>) has a <strong>role</strong><sup>2</sup>, which indicates its semantic purpose. Native HTML elements are implicitly mapped to accessibility notes with their semantic roles—e.g. an <code>&lt;img&gt;</code> element becomes an accessibility node with the role of “image”.</p>
<div id="fig-aom-a11y-node-img" class="quarto-float quarto-figure quarto-figure-center anchored" alt="<img> node translated into an image on the page and an accessibility node">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-aom-a11y-node-img-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://dataand.me/images/wicg-aom-a11y-node-img-min.png" class="img-fluid figure-img" alt="<img> node translated into an image on the page and an accessibility node">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-aom-a11y-node-img-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;3: Figure from AOM Explainer shows img node translated into an image on the page and an accessibility node.
</figcaption>
</figure>
</div>
<p>Some nodes have a grouping role, helping users to meaningfully navigate the page. Others, such as <code>&lt;summary&gt;</code>, have a <strong>state</strong> (in the case of <code>&lt;summary&gt;</code>, collapsed or expanded). For more on Accessible Rich Internet Application (ARIA) role types, see the Mozilla Developer Network (MDN) <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques">Using ARIA: Roles, states, and properties</a>.</p>
<p>For more formal definitions of the accessibility tree see:</p>
<ul>
<li><p><a href="https://developer.mozilla.org/en-US/docs/Glossary/Accessibility_tree">Accessibility tree</a> <span class="citation" data-cites="mdn_accessibilitytree_2021">(MDN Contributors 2021c)</span> in the MDN Web Docs Glossary, and</p></li>
<li><p><a href="https://developers.google.com/web/fundamentals/accessibility/semantics-builtin/the-accessibility-tree">The Accessibility Tree</a> <span class="citation" data-cites="kearney_accessibility_2020">(Kearney, Gash, and Boxhall 2020)</span> from Google Dev Web Fundamentals.</p></li>
</ul>
<p>I also recommend <a href="https://hacks.mozilla.org/2019/06/how-accessibility-trees-inform-assistive-tech/">How accessibility trees inform assistive tech</a> by accessibility expert, <a href="https://hiddedevries.nl/en/">Hidde de Vries</a> <span class="citation" data-cites="devries2019">(de Vries 2019)</span>.</p>



</section>


<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-andrew2015" class="csl-entry">
Andrew, Rachel. 2015. <span>“Modern <span>CSS Layout</span>, Power and Responsibility.”</span> <span>Rachel Andrew’s Blog</span>. July 28, 2015. <a href="http://rachelandrew.co.uk/archives/2015/07/28/modern-css-layout-power-and-responsibility/">http://rachelandrew.co.uk/archives/2015/07/28/modern-css-layout-power-and-responsibility/</a>.
</div>
<div id="ref-andrew2018" class="csl-entry">
———. 2018. <span>“Best <span>Practices With CSS Grid Layout</span>.”</span> <span>Smashing Magazine</span>. April 16, 2018. <a href="https://www.smashingmagazine.com/2018/04/best-practices-grid-layout/">https://www.smashingmagazine.com/2018/04/best-practices-grid-layout/</a>.
</div>
<div id="ref-andrew2020" class="csl-entry">
———. 2020. <span>“Content Reordering.”</span> <span>web.dev</span>. May 29, 2020. <a href="https://web.dev/content-reordering/">https://web.dev/content-reordering/</a>.
</div>
<div id="ref-bailey2021" class="csl-entry">
Bailey, Eric. 2021. <span>“Improving <span>The Accessibility Of Your Markdown</span>.”</span> <span>Smashing Magazine</span>. September 28, 2021. <a href="https://www.smashingmagazine.com/2021/09/improving-accessibility-of-markdown/">https://www.smashingmagazine.com/2021/09/improving-accessibility-of-markdown/</a>.
</div>
<div id="ref-aom_explainer_2021" class="csl-entry">
Boxhall, Alice, James Craig, Dominic Mazzoni, and Alexander Surkov. 2021. <span>“The Accessibility Object Model: Explainer.”</span> <em>The Accessibility Object Model (AOM)</em>. WICG. <a href="https://wicg.github.io/aom/explainer.html">https://wicg.github.io/aom/explainer.html</a>.
</div>
<div id="ref-aria-ap_2021" class="csl-entry">
Cooper, Michael, Zoë Bijl, James Nurthen, Matthew King, and JaEun Jemma Ku. 2021. <span>“<span>WAI</span>-<span>ARIA</span> Authoring Practices 1.2.”</span> W3C note. W3C. <a href="https://www.w3.org/TR/2021/NOTE-wai-aria-practices-1.2-20211129/">https://www.w3.org/TR/2021/NOTE-wai-aria-practices-1.2-20211129/</a>.
</div>
<div id="ref-devries2019" class="csl-entry">
de Vries, Hidde. 2019. <span>“How Accessibility Trees Inform Assistive Tech.”</span> <span>Mozilla Hacks</span>. June 26, 2019. <a href="https://hacks.mozilla.org/2019/06/how-accessibility-trees-inform-assistive-tech">https://hacks.mozilla.org/2019/06/how-accessibility-trees-inform-assistive-tech</a>.
</div>
<div id="ref-devries2022" class="csl-entry">
———. 2022. <span>“More to Give Than Just the Div: Semantics and How to Get Them Right.”</span> <span>hiddedevries.nl</span>. January 23, 2022. <a href="https://hiddedevries.nl/en/blog/2022-01-23-more-to-give-than-just-the-div-semantics-and-how-to-get-them-right">https://hiddedevries.nl/en/blog/2022-01-23-more-to-give-than-just-the-div-semantics-and-how-to-get-them-right</a>.
</div>
<div id="ref-w3cgrid2_2020" class="csl-entry">
Etemad, Elika, Rossen Atanassov, and Tab Atkins Jr. 2020. <span>“<span>CSS</span> Grid Layout Module Level 2.”</span> Candidate Recommendation. W3C. <a href="https://www.w3.org/TR/2020/CRD-css-grid-2-20201218/">https://www.w3.org/TR/2020/CRD-css-grid-2-20201218/</a>.
</div>
<div id="ref-house2023" class="csl-entry">
House, Chris. 2023. <span>“A Complete Guide to <span>CSS Grid</span>.”</span> <span>CSS-Tricks</span>. February 9, 2023. <a href="https://css-tricks.com/snippets/css/complete-guide-grid/">https://css-tricks.com/snippets/css/complete-guide-grid/</a>.
</div>
<div id="ref-kearney_accessibility_2020" class="csl-entry">
Kearney, Meggin, Dave Gash, and Alice Boxhall. 2020. <span>“The <span>Accessibility</span> <span>Tree</span>.”</span> <em>Google Developers <span></span> Web Fundamentals</em>. <a href="https://developers.google.com/web/fundamentals/accessibility/semantics-builtin/the-accessibility-tree">https://developers.google.com/web/fundamentals/accessibility/semantics-builtin/the-accessibility-tree</a>.
</div>
<div id="ref-matuzovic_2019a" class="csl-entry">
Matuzović, Manuel. 2019a. <span>“The Dark Side of the Grid (Part 1).”</span> Web Development Blog. February 7, 2019. <a href="https://www.matuzo.at/blog/the-dark-side-of-the-grid/">https://www.matuzo.at/blog/the-dark-side-of-the-grid/</a>.
</div>
<div id="ref-matuzovic_2019b" class="csl-entry">
———. 2019b. <span>“The Dark Side of the Grid (Part 2).”</span> Web Development Blog. May 11, 2019. <a href="https://www.matuzo.at/blog/the-dark-side-of-the-grid-part-2/">https://www.matuzo.at/blog/the-dark-side-of-the-grid-part-2/</a>.
</div>
<div id="ref-mdn_gridaccessibility2021" class="csl-entry">
MDN Contributors. 2021a. <span>“<span>CSS</span> Grid Layout and Accessibility.”</span> <span>MDN</span> Web Docs. August 12, 2021. <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/CSS_Grid_Layout_and_Accessibility">https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/CSS_Grid_Layout_and_Accessibility</a>.
</div>
<div id="ref-mdn_dom2021" class="csl-entry">
———. 2021b. <span>“Introduction to the <span>DOM</span> - <span>Web</span> <span>APIs</span>.”</span> <em><span>MDN</span> Web Docs</em>. <a href="https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction">https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction</a>.
</div>
<div id="ref-mdn_accessibilitytree_2021" class="csl-entry">
———. 2021c. <span>“Accessibility Tree.”</span> <em>MDN Web Docs Glossary</em>. <a href="https://developer.mozilla.org/en-US/docs/Glossary/Accessibility_tree">https://developer.mozilla.org/en-US/docs/Glossary/Accessibility_tree</a>.
</div>
<div id="ref-mdn_htmlaccessibility2022" class="csl-entry">
———. 2022. <span>“<span>HTML</span>: A Good Basis for Accessibility.”</span> <em><span>MDN</span> Web Docs</em>. <a href="https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML">https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML</a>.
</div>
<div id="ref-wcag21_2018" class="csl-entry">
O’Connor, Joshue, Michael Cooper, Andrew Kirkpatrick, and Alastair Campbell. 2018. <span>“Web Content Accessibility Guidelines (<span>WCAG</span>) 2.1.”</span> W3C recommendation. W3C. <a href="https://www.w3.org/TR/WCAG21/">https://www.w3.org/TR/WCAG21/</a>.
</div>
<div id="ref-wai2019" class="csl-entry">
White, Kevin, Shadi Abou-Zahra, and Shawn Lawton Henry. 2019. <span>“Developing for Web Accessibility <span></span> Tips for Getting Started.”</span> <a href="https://www.w3.org/WAI/tips/developing/">https://www.w3.org/WAI/tips/developing/</a>.
</div>
</div></section><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Footnotes</h2>

<ol>
<li id="fn1"><p>As defined in the WCAG 2.1 Standard, assistive technology is: “hardware and/or software that acts as a user agent, or along with a mainstream user agent, to provide functionality to meet the requirements of users with disabilities that go beyond those offered by mainstream user agents” <span class="citation" data-cites="wcag21_2018">(O’Connor et al. 2018)</span>.↩︎</p></li>
<li id="fn2"><p>See MDN docs on <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles">WAI-ARIA roles</a> for details.↩︎</p></li>
</ol>
</section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/SA/deed.en_us">CC BY SA</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2022,
  author = {Averick, Mara},
  title = {CSS {Grid} and Accessibility},
  date = {2022-02-14},
  url = {https://dataand.me/notes/2022-02_css-grid-and-accessibility/},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2022" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2022. <span>“CSS Grid and Accessibility.”</span> February
14, 2022. <a href="https://dataand.me/notes/2022-02_css-grid-and-accessibility/">https://dataand.me/notes/2022-02_css-grid-and-accessibility/</a>.
</div></div></section></div> ]]></description>
  <category>notes</category>
  <category>CSS Grid</category>
  <category>accessibility</category>
  <category>CSS</category>
  <guid>https://dataand.me/notes/2022-02_css-grid-and-accessibility/</guid>
  <pubDate>Mon, 14 Feb 2022 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Down the front-end rabbit hole</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/notes/2021-12_down-the-front-end-rabbit-hole/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<div class="mt-1 callout callout-style-simple callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Note</span>Updates
</div>
</div>
<div class="callout-body-container callout-body">
<ul>
<li><strong>2024-02-28</strong> Support for Sass <code>@use</code> rule with the addition of the Quarto region decorator for <code>scss:uses</code>.</li>
<li><strong>2024-02-24</strong> Update links to Bootstrap docs to version 5.3.</li>
</ul>
</div>
</div>
<section id="preface" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="preface">Preface</h2>
<p>I am <em>not</em> a front-end engineer. Sure, I know how to hackily make a few adjustments to a CSS file—I’ve lived through enough web scraping to learn a little about selectors—but things like <a href="https://gulpjs.com/">Gulp</a> and <a href="https://gruntjs.com/">Grunt</a> just sound like <a href="https://babeljs.io/">Babel</a> to me.<sup>1</sup></p>
<p>What I <em>do</em> know about front-end development always comes as a result of falling down a rabbit hole. There’s something I want to customize, one link leads to another, and suddenly I’m trying to grok larger concepts that I won’t be putting to use on the regular—which is why I’m taking notes!</p>
<p>In this instance, I was reading up on <a href="https://quarto.org/">Quarto</a> <span class="citation" data-cites="quarto">(Allaire and Dervieux 2024)</span>, which led to docs on <a href="https://quarto.org/docs/output-formats/html-themes.html">Quarto’s HTML Theming</a> (and <a href="https://quarto.org/docs/output-formats/html-themes-more.html">“More About Quarto Themes”</a>), which somehow got me elbow-deep in the <a href="https://sass-lang.com/">Sass lang documentation</a>, trying to get a handle on how <a href="https://bootswatch.com/">Bootswatch themes</a> modify the underlying <a href="https://getbootstrap.com/">Bootstrap</a> framework.</p>
<aside>
If this paragraph makes no sense, then it accurately captures my level of confusion when I began.
</aside>
<p><img src="https://dataand.me/images/quarto_rabbit_hole_outlined_text_min.svg" class="img-fluid" alt="R-to-L flowchart where node labelled Quarto leads to HTML Theming and More HTML Theming nodes which lead to three nodes: SASS, Bootswatch, and Bootstrap."></p>
<p>Before/if you proceed, keep these things in mind:</p>
<div class="il">
<ol type="1">
<li><p>The aforementioned documentation is very good.</p></li>
<li><p>The target audience for these notes is mainly me.</p></li>
<li><p>These concepts are decidedly non-linear. (Bootswatch uses Sass files to customize Bootstrap, so who’s to say which part to learn first?)</p></li>
<li><p>I’m pretty sure you can do all of these things in Quarto without ever learning any of this.</p></li>
</ol>
</div>
</section>
<section id="sass-i-ness" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="sass-i-ness">Sass-i-ness</h2>
<p><a href="https://sass-lang.com/">Sass</a> <span class="citation" data-cites="sassdocs2021">(Lintorn-Catlin et al. 2021)</span> bills itself as <em>CSS with superpowers</em>, and I’m inclined to believe it. Actually, some of these superpowers (namely “at-rules”) are built right into CSS these days.<sup>2</sup></p>
<p>If you’ve read the Quarto-theme docs, you might be wondering why I’m going on about Sass when all of the files for customization end in <code>.scss</code>. Apparently Sass supports <a href="https://sass-lang.com/documentation/syntax">two syntaxes</a>: SCSS (the files for which end in <code>.scss</code>), and “the indented syntax” (which uses the file extension <code>.sass</code>). Both <code>.scss</code> and <code>.sass</code> files are “Sass stylesheets”—so, just run with it.</p>
<p><a href="https://quarto.org/docs/output-formats/html-themes-more.html"><strong>Quarto themes</strong></a> are SCSS text files that use “decorators” (special comments) to denote the “type” (in a non-technical sense of the word) of SCSS thing going on in that area. The regions are: uses, functions, defaults, mixins, and rules, each of which gets a decorator that follows the format <code>/*-- scss:TYPE --*/</code> (where TYPE is, e.g.&nbsp;functions, or rules).</p>
<p>Expand the code below to see an example of a Quarto theme with region decorators:</p>
<details>
<summary>
Show the code
</summary>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>SCSS</strong></pre>
</div>
<div class="sourceCode" id="cb1" data-filename="SCSS" style="background: #f1f3f5;"><pre class="sourceCode scss"><code class="sourceCode scss"><span id="cb1-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/*-- scss:functions --*/</span></span>
<span id="cb1-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">@function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">colorToRGB</span> (<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$color</span>) {</span>
<span id="cb1-3">  <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">@return</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"rgb("</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">red(</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$color</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">)</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">", "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">green(</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$color</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">)</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">", "</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">blue(</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$color</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">)</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">")"</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb1-4">}</span>
<span id="cb1-5"></span>
<span id="cb1-6"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/*-- scss:defaults --*/</span></span>
<span id="cb1-7"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$h2-font-size</span>:          <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.6</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">rem</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">!default</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb1-8"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$headings-font-weight</span>:  <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">500</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">!default</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb1-9"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$body-color</span>:            <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$gray-700</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">!default</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb1-10"></span>
<span id="cb1-11"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">/*-- scss:rules --*/</span></span>
<span id="cb1-12">h1<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> h2<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> h3<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> h4<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> h5<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> h6 {</span>
<span id="cb1-13">  <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">text-shadow</span>: <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">px</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">px</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rgba(</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">.3</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">)</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb1-14">}</span></code></pre></div>
</div>
</details>
<p>You might not need a <code>sass:uses</code> region (which wasn’t a thing when I first wrote this post in January of 2022, so I used <code>@import</code> instead — they both let you load other “modules”/stylesheets). Sass requires that the <a href="https://sass-lang.com/documentation/at-rules/use"><code>@use</code> rule</a> must come before any other rules in the stylesheet, which is why this section of your theme has to come first. If you put <code>@use</code> elsewhere in your theme, it will error out with:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>Terminal</strong></pre>
</div>
<div class="sourceCode" id="cb2" data-filename="Terminal" style="background: #f1f3f5;"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># @use rules must be written before any other rules.</span></span></code></pre></div>
</div>
<p>The defaults section is made up of <a href="https://sass-lang.com/documentation/variables#default-values">default values</a> for <a href="https://sass-lang.com/documentation/variables"><em>Sass</em> variables</a> (not to be confused with <a href="https://sass-lang.com/documentation/style-rules/declarations#custom-properties">CSS variables</a>). You can tell you’re reading the name of a Sass variable if it starts with a <code>$</code>. You can tell a default is being set when the value ends in <code>!default</code>. <a href="https://sass-lang.com/documentation/style-rules">Sass style rules</a> are basically the same as CSS rulesets: elements are chosen with selectors, and then styled with <a href="https://sass-lang.com/documentation/style-rules/declarations">property declarations</a> (i.e.&nbsp;how elements that match the selector are styled).</p>
<aside>
Technically, Sass stylesheets are divided into <a href="https://sass-lang.com/documentation/syntax/structure#statements">Statements</a> and <a href="https://sass-lang.com/documentation/syntax/structure#expressions">Expressions</a>, but I won’t use that terminology here.
</aside>
<p>Functions are defined with the <a href="https://sass-lang.com/documentation/at-rules/function"><code>@function</code> at-rule</a>, and take arguments (just like R functions). For example, Bootstrap has the following <a href="https://getbootstrap.com/docs/5.3/customize/sass/#functions">Sass functions</a>, <code>tint-color()</code> and <code>shade-color()</code>, that lighten or darken colors by a given amount.</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>SCSS</strong></pre>
</div>
<div class="sourceCode" id="cb3" data-filename="SCSS" style="background: #f1f3f5;"><pre class="sourceCode scss"><code class="sourceCode scss"><span id="cb3-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// Tint a color: mix a color with white</span></span>
<span id="cb3-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">@function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">tint-color</span>(<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$color</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$weight</span>) {</span>
<span id="cb3-3">  <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">@return</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mix(</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">white</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$color</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$weight</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">)</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb3-4">}</span>
<span id="cb3-5"></span>
<span id="cb3-6"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// Shade a color: mix a color with black</span></span>
<span id="cb3-7"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">@function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">shade-color</span>(<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$color</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$weight</span>) {</span>
<span id="cb3-8">  <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">@return</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mix(</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">black</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$color</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$weight</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">)</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb3-9">}</span></code></pre></div>
</div>
<p>I go into more detail about Sass mixins later on in these notes.</p>
<p>All this Sass stuff can work independent of Bootstrap innards. The <a href="https://quarto.org/docs/output-formats/html-themes.html#sass-variables">Quarto Sass variables</a> can be specified within an SCSS file.</p>
</section>
<section id="bootstrap" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="bootstrap">Bootstrap</h2>
<p><a href="https://getbootstrap.com/">Bootstrap</a> is a front-end open source “toolkit.” Lifting straight from the Quarto-theme docs here:</p>
<blockquote class="blockquote">
<p>Bootstrap defines over 1,400 variables that control fonts, colors, padding, borders, and much more.</p>
</blockquote>
<p>You can see the raw Bootstrap Sass variables in Bootstrap’s <a href="https://github.com/twbs/bootstrap/blob/main/scss/_variables.scss"><code>_variables.scss</code> file</a>.</p>
<p>Bootstrap can be used to design full-blown user interfaces. Since this is well beyond the scope of what I want to do, I use the Bootstrap docs in an <em>ad hoc</em> manner. If I find myself wanting to tinker with something—say, <a href="https://getbootstrap.com/docs/5.3/content/typography/">typography</a> or <a href="https://getbootstrap.com/docs/5.3/utilities/text/">text alignment</a>—I go to the Bootstrap reference before I bother to implement something on my own. Chances are, they’ve already got it covered—actually, Quarto probably has its own user-friendly layer of abstraction over it, so maybe go to the Quarto docs <em>then</em> Bootstrap.</p>
<aside>
Quarto uses <a href="https://getbootstrap.com/docs/5.3/getting-started/introduction/">Bootstrap 5</a>. Bootstrap(s) 3 and 4 are still in use. So, make sure you’re referencing documentation for the proper version.
</aside>
</section>
<section id="bootswatch" class="level2">
<h2 class="anchored" data-anchor-id="bootswatch">Bootswatch</h2>
<p><a href="https://bootswatch.com/">Bootswatch</a> is a collection of free themes for Bootstrap. The single-file structure for Quarto themes (y’know, the one that uses region decorators) is specific to Quarto, so the <a href="https://quarto.org/docs/output-formats/html-themes-more.html#bootswatch-sass-theme-files">Bootswatch theme files</a> have been adapted for use with Quarto.<sup>3</sup> By and large, they’re different defaults for things like colors and fonts for the various bootstrap components.</p>
<p>With Quarto you can add your own custom CSS or SCSS files <em>on top of</em> a chosen Bootswatch theme. Be sure to reference Quarto’s docs <a href="https://quarto.org/docs/output-formats/html-themes-more.html#bootstrap-bootswatch-layering">Bootstrap/Bootswatch Layering</a>, as this will affect what values come out on top for your variable defaults, etc. When compiling the CSS for a page, the order in which themes appear in your YAML determines the order in which they are layered. For variables:</p>
<blockquote class="blockquote">
<p>files specified later in the list to provide defaults variable values to the files specified earlier in the list.</p>
</blockquote>
</section>
<section id="other-useful-tidbits" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="other-useful-tidbits">Other useful tidbits</h2>
<section id="markdown-divs" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="markdown-divs">Markdown <code>&lt;div&gt;</code>s</h3>
<p>If you’re writing something for Quarto, chances are you’re doing it in <a href="https://en.wikipedia.org/wiki/Markdown">Markdown</a> (that’s what I’m doing right now). However, Bootstrap’s building blocks (e.g.&nbsp;<a href="https://getbootstrap.com/docs/5.3/layout/containers/">containers</a>) are defined using <em>classes</em>. These classes are often applied to <code>&lt;div&gt;</code>s, which aren’t a natural part of Markdown syntax. Rather than write out the HTML, you can use <a href="https://bookdown.org/yihui/rmarkdown-cookbook/custom-blocks.html#block-syntax">“fenced <code>Div</code> blocks”</a>, which somewhat resemble code chunks. These <code>Div</code> blocks use the following syntax, where <code>#</code> denotes the ID, and <code>.</code> denotes a class.</p>
<aside>
Quarto has some built-in <a href="https://quarto.org/docs/authoring/callouts.html">callout blocks</a> which have even simpler syntax (no dots needed).
</aside>
<p>The markdown below:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>Markdown</strong></pre>
</div>
<div class="sourceCode" id="cb4" data-filename="Markdown" style="background: #f1f3f5;"><pre class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb4-1">::: {#hello .greeting"}</span>
<span id="cb4-2">Hello **world**!</span>
<span id="cb4-3">:::</span></code></pre></div>
</div>
<p>would be converted to the following HTML:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>HTML</strong></pre>
</div>
<div class="sourceCode" id="cb5" data-filename="HTML" style="background: #f1f3f5;"><pre class="sourceCode html"><code class="sourceCode html"><span id="cb5-1"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> id</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"hello"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> class</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"greeting"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb5-2">  Hello world!</span>
<span id="cb5-3"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div>
</div>
<p>You can also use <code>style="property: value;"</code> inside the curly braces to apply styling directly to the div. For example:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>Markdown</strong></pre>
</div>
<div class="sourceCode" id="cb6" data-filename="Markdown" style="background: #f1f3f5;"><pre class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb6-1">::: {style="color: red; border: solid black;"}</span>
<span id="cb6-2">Goodbye, world.</span>
<span id="cb6-3">:::</span></code></pre></div>
</div>
<p>converts to:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>HTML</strong></pre>
</div>
<div class="sourceCode" id="cb7" data-filename="HTML" style="background: #f1f3f5;"><pre class="sourceCode html"><code class="sourceCode html"><span id="cb7-1"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> style</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"color: red; border: solid black;"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb7-2">  Goodbye, world.</span>
<span id="cb7-3"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div>
</div>
<p>You can use IDs, classes, and directly applied styles in any combination. To learn more about <code>Div</code> blocks, see the <a href="https://bookdown.org/yihui/rmarkdown-cookbook/custom-blocks.html">custom blocks</a> section of the <a href="https://bookdown.org/yihui/rmarkdown-cookbook/">R Markdown Cookbook</a> <span class="citation" data-cites="xie2021">(Xie, Dervieux, and Riederer 2021)</span>. There’s also nice documentation on <a href="https://quarto.org/docs/authoring/page-layout.html#using-classes">using layout classes in Quarto</a>.</p>
</section>
<section id="relative-units-and-rems" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="relative-units-and-rems">Relative units and <code>rem</code>s</h3>
<p>Bootstrap is optimized for designing responsive, mobile-first sites. As such, it makes heavy use of <a href="https://www.w3schools.com/cssref/css_units.asp">relative CSS units</a> for better rendering across devices. According to the <a href="https://www.w3.org/TR/css-values-3/#relative-lengths">W3C spec</a> <span class="citation" data-cites="w3c2019">(Atkins Jr. and Etemad 2019)</span>:</p>
<blockquote class="blockquote">
<p><strong><em>Relative length units</em></strong> specify a length relative to another length.</p>
</blockquote>
<p>A subset of these relative length units can be used with fonts (aptly named <a href="https://www.w3.org/TR/css-values-3/#font-relative-lengths">font-relative lengths</a>). Bootstrap makes heavy use of the <a href="https://www.w3.org/TR/css-values-3/#rem"><strong><code>rem</code> unit</strong></a>, which is</p>
<blockquote class="blockquote">
<p>Equal to the computed value of font-size on the root element.</p>
</blockquote>
<p>Bootstrap has two key <a href="https://getbootstrap.com/docs/5.3/utilities/text/#sass-variables">Sass variables</a> for this: <code>$font-size-root</code>, and <code>$font-size-base</code>. Looking at the Bootstrap SCSS, you’ll see <code>$font-size-base</code> used to calculate the font sizes for other text classes:</p>
<aside>
<a href="https://quarto.org/docs/output-formats/html-themes.html#fonts"><code>$font-size-root</code></a> is the Sass variable you should use with Quarto.
</aside>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>SCSS</strong></pre>
</div>
<div class="sourceCode" id="cb8" data-filename="SCSS" style="background: #f1f3f5;"><pre class="sourceCode scss"><code class="sourceCode scss"><span id="cb8-1"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$font-size-base</span>:              <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">rem</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// Assumes the browser default, typically `16px`</span></span>
<span id="cb8-2"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$font-size-sm</span>:                <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$font-size-base</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">.875</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb8-3"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$font-size-lg</span>:                <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$font-size-base</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1.25</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span></code></pre></div>
</div>
<p>So, in the case above, <code>$font-size-sm</code> would be equal to .875rem. But, it’s <code>$font-size-root</code> that determines the <em>root</em> value—i.e. the actual size of 1rem—which, in addition to font sizes, is used to calculate the value of other CSS properties, like margins and padding.</p>
<aside>
Note that percentages and decimal values mean different things in CSS (<code>%</code> itself is its own unit).
</aside>
<p>When using <a href="https://sass-lang.com/documentation/operators/numeric">numeric operators in Sass</a> the values must have compatible <a href="https://sass-lang.com/documentation/operators/numeric#units">units</a>. This doesn’t mean that the units have to be the same, but they must have some convertible relationship. From the Sass docs:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>SCSS</strong></pre>
</div>
<div class="sourceCode" id="cb9" data-filename="SCSS" style="background: #f1f3f5;"><pre class="sourceCode scss"><code class="sourceCode scss"><span id="cb9-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// CSS defines one inch as 96 pixels.</span></span>
<span id="cb9-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">@debug</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">in</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">6</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">px</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span> <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// 102px or 1.0625in</span></span>
<span id="cb9-3"></span>
<span id="cb9-4"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">@debug</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">in</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">em</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb9-5"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">//     ^^^^^^^^</span></span>
<span id="cb9-6"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// Error: Incompatible units em and in.</span></span></code></pre></div>
</div>
</section>
<section id="sass-mixins" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="sass-mixins">Sass mixins</h3>
<p>I read the <a href="https://sass-lang.com/documentation/at-rules/mixin">Sass description of mixins</a> <em>several</em> times before it clicked (hence the bonus notes).</p>
<blockquote class="blockquote">
<p>Mixins allow you to define styles that can be re-used throughout your stylesheet.</p>
</blockquote>
<p>Initially, I didn’t get the difference between this and a variable. But, they’re actually more powerful: Mixins let you define a whole bunch of styles as a single named rule which you can then reference in multiple places. You define a mixin with the <code>@mixin</code> at-rule (which takes the form <code>@mixin &lt;name&gt; { ... }</code>), and reference a mixin using the <code>@include</code> at-rule (which is written <code>@include &lt;name&gt;</code>).</p>
<aside>
Mixins are kind of like functions in R. If you’re repeating property declarations across selectors, write a mixin.
</aside>
<p>For example, the following SCSS:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>SCSS</strong></pre>
</div>
<div class="sourceCode" id="cb10" data-filename="SCSS" style="background: #f1f3f5;"><pre class="sourceCode scss"><code class="sourceCode scss"><span id="cb10-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">@mixin</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">reset-list</span> {</span>
<span id="cb10-2">  <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">margin</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb10-3">  <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">padding</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb10-4">  <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">list-style</span>: <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">none</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb10-5">}</span>
<span id="cb10-6"></span>
<span id="cb10-7">nav ul {</span>
<span id="cb10-8">  <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">@include</span> horizontal-list<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb10-9">}</span></code></pre></div>
</div>
<p>becomes this CSS:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>CSS</strong></pre>
</div>
<div class="sourceCode" id="cb11" data-filename="CSS" style="background: #f1f3f5;"><pre class="sourceCode css"><code class="sourceCode css"><span id="cb11-1">nav ul {</span>
<span id="cb11-2">  <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">margin</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb11-3">  <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">padding</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb11-4">  <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">list-style</span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">:</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">none</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb11-5">}</span></code></pre></div>
</div>
<p>Mixins can also take arguments, in which case they take the following form:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>SCSS</strong></pre>
</div>
<div class="sourceCode" id="cb12" data-filename="SCSS" style="background: #f1f3f5;"><pre class="sourceCode scss"><code class="sourceCode scss"><span id="cb12-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">@mixin</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">name</span>(<span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;arguments</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">...</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>) { <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">...</span> }</span></code></pre></div>
</div>
<p>Argument names get a <code>$</code> prefix (just like everywhere else in SCSS), and are separated by commas. The R-function analogy works pretty well here, too. You can have required arguments, and <a href="https://sass-lang.com/documentation/at-rules/mixin#optional-arguments">optional arguments</a> that have default values. Default values are specified using the same syntax for variable declarations: <code>$arg: value</code>.</p>
<aside>
Mixins even let you use <code>...</code> to pass in <a href="https://sass-lang.com/documentation/at-rules/mixin#taking-arbitrary-arguments">arbitrary arguments</a> as a list.
</aside>
</section>
<section id="css-grid" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="css-grid">CSS Grid</h3>
<p>For <a href="https://quarto.org/docs/authoring/article-layout.html">article</a> and <a href="https://quarto.org/docs/output-formats/page-layout.html">page layout</a>, Quarto uses Bootstrap 5’s alternate layout system, <a href="https://getbootstrap.com/docs/5.3/layout/css-grid/">CSS Grid</a>. Though the feature is opt-in by default for Bootstrap (as of Bootstrap v5.1.0), it’s turned on by default in Quarto (i.e.&nbsp;<code>$enable-cssgrid: true</code>).</p>
<p>CSS grid is an incredibly powerful layout system, and there’s more than enough to get you started in the Bootstrap docs linked to above. <a href="https://css-tricks.com/snippets/css/complete-guide-grid/">A Complete Guide to CSS Grid</a> <span class="citation" data-cites="house2023">(House 2023)</span> on CSS Tricks is also an excellent resource.</p>
<p>Chances are, you’ll be making use of Quarto’s built-in layouts (which I’ve put to use on this <a href="https://quartoand.me/page-layout.html">Quarto page-layout demo here</a>). However, should you decide to define your own “tracks” (rows and columns), there’s an abundance of options and <em>units</em>. As with <code>rem</code>s in typography, CSS-layout units have also evolved to accommodate a variety of devices more easily.</p>
<aside>
For more on CSS units in general, see <a href="https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units">CSS values and units</a> <span class="citation" data-cites="mdn_cssvals2022">(MDN Contributors 2022)</span>.
</aside>
<p>New to me was the <strong>flex fraction</strong> or <a href="https://www.w3.org/TR/css3-grid-layout/#fr-unit"><strong><code>fr</code> unit</strong></a>, “which represents a fraction of the leftover space in the grid container” <span class="citation" data-cites="w3ccss2020">(Brufau et al. 2020)</span>. Flex fractions (<code>fr</code>s) are particularly useful in consort with the CSS <code>grid-template-*</code> properties: <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns"><code>grid-template-columns</code></a>, and <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-rows"><code>grid-template-rows</code></a>. Mastery Games’ <a href="https://mastery.games/post/grid-track-options/">CSS Grid Track Options</a> provides a helpful overview of the various units relevant to defining your grid layout.</p>
<p>Another neat feature is that you can <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/Layout_using_Named_Grid_Lines">name the lines of your grid</a> when defining it with <code>grid-template-rows</code> and <code>grid-template-columns</code>. This is helpful as you can then reference these named lines when placing items in your grid using the <code>grid-row-</code> and <code>grid-column-</code> <code>start</code> and <code>end</code> properties.</p>
<aside>
You can also name <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/Grid_Template_Areas">grid template areas.</a>
</aside>
<div class="callout callout-style-simple callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Note</span>Pro Tip
</div>
</div>
<div class="callout-body-container callout-body">
<p>Your browser’s built-in developer tools are a great way to learn more about CSS grid. If you inspect a page’s HTML, grid elements will have a little <code>grid</code> pill button next to them which you can click to toggle a grid overlay display. The Layout pane gives you more options, such as showing grid-line or area names, and has a listing of all of the grid overlays on the page.</p>
</div>
</div>
<p>For more details on viewing the grid with browser developer tools for Chrome (or Chromium-based browsers), check out <a href="https://developer.chrome.com/docs/devtools/css/grid/">Inspect CSS Grid</a> <span class="citation" data-cites="yeen2021">(Yeen 2021)</span>. For Firefox, see <a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Examine_grid_layouts">CSS Grid Inspector: Examine grid layouts</a> <span class="citation" data-cites="mdn_grid2021">(MDN Contributors 2021a)</span>.</p>
<div id="fig-about-grid" class="preview-image quarto-float quarto-figure quarto-figure-center anchored" alt="Screenshot of browser with a Quarto page using full-page layout with CSS grid overlay displayed by browser using grid line names, and developer tools open at the bottom of the window.">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-about-grid-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://dataand.me/images/quarto-full-page-layout-screenshot-min.png" class="preview-image img-fluid figure-img" alt="Screenshot of browser with a Quarto page using full-page layout with CSS grid overlay displayed by browser using grid line names, and developer tools open at the bottom of the window.">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-about-grid-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: Screenshot of full-page-layout Quarto page in browser with CSS grid overlay displayed with grid line names.
</figcaption>
</figure>
</div>
<section id="learn-like-an-a11y" class="level4 page-columns page-full">
<h4 class="anchored" data-anchor-id="learn-like-an-a11y">Learn like an a11y</h4>
<p>If, like me, you’ve sort of stumbled into learning more about CSS, be sure to take the time to zoom back out and read up a bit on best practices, especially when it comes to accessibility. Quarto and Bootstrap are both built with accessibility in mind, <em>but</em> if you’re tweaking things on your own, there are some quick things worth checking for to ensure you haven’t borked said accessibility efforts. <a href="https://medium.com/@matuzo/writing-css-with-accessibility-in-mind-8514a0007939">Writing CSS with Accessibility in Mind</a> <span class="citation" data-cites="matuzovic2017">(Matuzović 2017a)</span> isn’t the newest article on the matter, but I found it concise and helpful—plus, it gives you many more resources to explore.<sup>4</sup> Also worth peeping <a href="https://medium.com/alistapart/writing-html-with-accessibility-in-mind-a62026493412">Writing HTML with Accessibility in Mind</a> while you’re in the neighborhood <span class="citation" data-cites="matuzovic2016">(Matuzović 2017b)</span>.</p>
<aside>
See <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/CSS_Grid_Layout_and_Accessibility">CSS Grid Layout and Accessibility</a> <span class="citation" data-cites="mdn_gridaccessibility2021">(MDN Contributors 2021b)</span> for considerations specific to CSS grid.
</aside>
<p>Since there was so much to learn from these resources, I’ve continued my notes in a second post, <a href="../../notes/2022-02_css-grid-and-accessibility/index.html">CSS Grid and accessibility</a>.</p>



</section>
</section>
</section>


<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-quarto" class="csl-entry">
Allaire, JJ, and Christophe Dervieux. 2024. <em>Quarto: R Interface to ’Quarto’ Markdown Publishing System</em>. <a href="https://CRAN.R-project.org/package=quarto">https://CRAN.R-project.org/package=quarto</a>.
</div>
<div id="ref-w3c2019" class="csl-entry">
Atkins Jr., Tab, and Elika Etemad. 2019. <span>“<span>CSS</span> Values and Units Module Level 3.”</span> Candidate Recommendation. W3C. <a href="https://www.w3.org/TR/2019/CR-css-values-3-20190606/">https://www.w3.org/TR/2019/CR-css-values-3-20190606/</a>.
</div>
<div id="ref-w3ccss2020" class="csl-entry">
Brufau, Oriol, Elika Etemad, Tab Atkins Jr., and Rossen Atanassov. 2020. <span>“<span>CSS</span> Grid Layout Module Level 1.”</span> Candidate Recommendation. W3C. <a href="https://www.w3.org/TR/2020/CRD-css-grid-1-20201218/">https://www.w3.org/TR/2020/CRD-css-grid-1-20201218/</a>.
</div>
<div id="ref-house2023" class="csl-entry">
House, Chris. 2023. <span>“A Complete Guide to <span>CSS Grid</span>.”</span> <span>CSS-Tricks</span>. February 9, 2023. <a href="https://css-tricks.com/snippets/css/complete-guide-grid/">https://css-tricks.com/snippets/css/complete-guide-grid/</a>.
</div>
<div id="ref-sassdocs2021" class="csl-entry">
Lintorn-Catlin, Hampton, Natalie Weizenbaum, Chris Eppstein, and Jina Anne. 2021. <span>“<span>Sass</span> Documentation.”</span> <em>Sass-Lang.com</em>. <a href="https://sass-lang.com/documentation">https://sass-lang.com/documentation</a>.
</div>
<div id="ref-matuzovic2017" class="csl-entry">
Matuzović, Manuel. 2017a. <span>“Writing <span>CSS</span> with Accessibility in Mind.”</span> A List Apart Sidebar. September 18, 2017. <a href="https://medium.com/@matuzo/writing-css-with-accessibility-in-mind-8514a0007939">https://medium.com/@matuzo/writing-css-with-accessibility-in-mind-8514a0007939</a>.
</div>
<div id="ref-matuzovic2016" class="csl-entry">
———. 2017b. <span>“Writing <span>HTML</span> with Accessibility in Mind.”</span> A List Apart Sidebar. September 18, 2017. <a href="https://medium.com/alistapart/writing-html-with-accessibility-in-mind-a62026493412">https://medium.com/alistapart/writing-html-with-accessibility-in-mind-a62026493412</a>.
</div>
<div id="ref-matuzovic_2020a" class="csl-entry">
———. 2020a. <span>“Writing Even More <span>CSS</span> with Accessibility in Mind, Part 1: Progressive Enhancement.”</span> Web Development Blog. September 9, 2020. <a href="https://www.matuzo.at/blog/writing-even-more-css-with-accessibility-in-mind-progressive-enhancement/">https://www.matuzo.at/blog/writing-even-more-css-with-accessibility-in-mind-progressive-enhancement/</a>.
</div>
<div id="ref-matuzovic_2020b" class="csl-entry">
———. 2020b. <span>“Writing Even More <span>CSS</span> with Accessibility in Mind, Part 2: Respecting User Preferences.”</span> Web Development Blog. October 12, 2020. <a href="https://www.matuzo.at/blog/writing-even-more-css-with-accessibility-in-mind-user-preferences/">https://www.matuzo.at/blog/writing-even-more-css-with-accessibility-in-mind-user-preferences/</a>.
</div>
<div id="ref-mdn_grid2021" class="csl-entry">
MDN Contributors. 2021a. <span>“<span>CSS</span> Grid Inspector: Examine Grid Layouts.”</span> <span>MDN</span> Web Docs. April 28, 2021. <a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Examine_grid_layouts">https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Examine_grid_layouts</a>.
</div>
<div id="ref-mdn_gridaccessibility2021" class="csl-entry">
———. 2021b. <span>“<span>CSS</span> Grid Layout and Accessibility.”</span> <span>MDN</span> Web Docs. August 12, 2021. <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/CSS_Grid_Layout_and_Accessibility">https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/CSS_Grid_Layout_and_Accessibility</a>.
</div>
<div id="ref-mdn_cssvals2022" class="csl-entry">
———. 2022. <span>“<span>CSS</span> Values and Units.”</span> <span>MDN</span> Web Docs. January 31, 2022. <a href="https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units">https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units</a>.
</div>
<div id="ref-xie2021" class="csl-entry">
Xie, Yihui, Christophe Dervieux, and Emily Riederer. 2021. <em>R Markdown Cookbook</em>. Chapman <span>&amp;</span> Hall/CRC. <a href="https://bookdown.org/yihui/rmarkdown-cookbook/">https://bookdown.org/yihui/rmarkdown-cookbook/</a>.
</div>
<div id="ref-yeen2021" class="csl-entry">
Yeen, Jecelyn. 2021. <span>“Inspect <span>CSS</span> Grid.”</span> Chrome Developers. June 2021. <a href="https://developer.chrome.com/docs/devtools/css/grid/">https://developer.chrome.com/docs/devtools/css/grid/</a>.
</div>
</div></section><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Footnotes</h2>

<ol>
<li id="fn1"><p>I don’t even know enough about Babel to decide whether or not that joke works.↩︎</p></li>
<li id="fn2"><p>See <a href="https://sass-lang.com/documentation/at-rules/css">CSS At-Rules</a> for details.↩︎</p></li>
<li id="fn3"><p>The <a href="https://github.com/quarto-dev/quarto-cli/tree/main/src/resources/formats/html/bootstrap/themes">single-file themes</a> are in the Quarto GitHub repo.↩︎</p></li>
<li id="fn4"><p>See also the more recent series by the same author, <em>Writing Even More CSS with Accessibility in Mind</em> <span class="citation" data-cites="matuzovic_2020a matuzovic_2020b">(Matuzović 2020a, 2020b)</span>.↩︎</p></li>
</ol>
</section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/SA/deed.en_us">CC BY SA</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2022,
  author = {Averick, Mara},
  title = {Down the Front-End Rabbit Hole},
  date = {2022-01-01},
  url = {https://dataand.me/notes/2021-12_down-the-front-end-rabbit-hole/},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2022" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2022. <span>“Down the Front-End Rabbit Hole.”</span>
January 1, 2022. <a href="https://dataand.me/notes/2021-12_down-the-front-end-rabbit-hole/">https://dataand.me/notes/2021-12_down-the-front-end-rabbit-hole/</a>.
</div></div></section></div> ]]></description>
  <category>notes</category>
  <category>Quarto</category>
  <category>Sass</category>
  <category>SCSS</category>
  <category>Bootstrap</category>
  <category>CSS Grid</category>
  <guid>https://dataand.me/notes/2021-12_down-the-front-end-rabbit-hole/</guid>
  <pubDate>Sat, 01 Jan 2022 00:00:00 GMT</pubDate>
</item>
<item>
  <title>What I read in 2021</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/blog/2021-12_what-i-read-in-2021/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<p>My relationship with reading borders on pathological (and by “borders on” I mean “has literally been a topic of discussion in therapy”). I mean, I’ve gotten it under control <em>somewhat</em>—we’ll use my <a href="https://www.goodreads.com/user_challenges/1055710">2014 Goodreads Reading Challenge</a> as a bar for a <em>bit</em> out of control—which means I can take a look back on <a href="https://www.goodreads.com/user/year_in_books/2021/1923002"><strong>my 2021 year in books</strong></a> without too much self-recrimination.</p>
<section id="the-data" class="level2">
<h2 class="anchored" data-anchor-id="the-data">The data</h2>
<p>For all its faults (and there are many), I’ve gotten in the habit of using Goodreads to log what I’m reading over the past seven(ish) years. If nothing more, it has a nice enough export function, which lets you (or me, or whomever) retrieve your reading data as a CSV.</p>
<p>I stashed my exported data in Google Sheets. So, I’ll use <span class="package"><a href="https://googlesheets4.tidyverse.org/">{googlesheets4}</a></span> to read it into R with its sheet ID, and make our lives easier by passing it straight through <a href="https://sfirke.github.io/janitor/reference/clean_names.html"><code>janitor::clean_names()</code></a>.</p>
<div class="cell">
<details open="" class="code-fold">
<summary>View code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(tidyverse)</span>
<span id="cb1-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(googlesheets4)</span>
<span id="cb1-3"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(skimr)</span></code></pre></div></div>
</details>
</div>
<div class="cell">
<details open="" class="code-fold">
<summary>View code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb2-1">gr_data <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">read_sheet</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1PqnJ2UOaYnfIRCVSvlYlyfeQ4OlynMiPq0eCIfDbjLU"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-2">  janitor<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">clean_names</span>()</span></code></pre></div></div>
</details>
</div>
<p>Since I just want to see the books I read in 2021, I’m going to filter these by <code>bookshelves</code>—keeping only those books on my 2021-reads shelf. (The count of books on this shelf matches up with the count of books read this year according to my <a href="https://www.goodreads.com/user_challenges/25432406">Goodreads 2021 Reading Challenge</a>, 188, and I’m too lazy to track down the five books that go missing when I filter by date.) I’m also going to convert <code>book_id</code> to be a string, since it seems to come through as numeric by default.</p>
<div class="cell">
<details open="" class="code-fold">
<summary>View code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1">read_2021 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> gr_data <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb3-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">str_detect</span>(bookshelves, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"2021-reads"</span>)) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb3-3">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">book_id =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">as.character</span>(book_id))</span></code></pre></div></div>
</details>
</div>
</section>
<section id="summary-stats" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="summary-stats">Summary stats</h2>
<p>Let’s peep a quick summary of the data using <a href="https://docs.ropensci.org/skimr/reference/skim.html"><code>skimr::skim()</code></a>.</p>
<div class="cell page-columns page-full">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb4-1">skimr<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">skim</span>(read_2021)</span></code></pre></div></div>
<div class="cell-output-display column-body-outset">
<table class="caption-top table table-sm table-striped small">
<caption>Data summary</caption>
<tbody>
<tr class="odd">
<td style="text-align: left;">Name</td>
<td style="text-align: left;">read_2021</td>
</tr>
<tr class="even">
<td style="text-align: left;">Number of rows</td>
<td style="text-align: left;">188</td>
</tr>
<tr class="odd">
<td style="text-align: left;">Number of columns</td>
<td style="text-align: left;">31</td>
</tr>
<tr class="even">
<td style="text-align: left;">_______________________</td>
<td style="text-align: left;"></td>
</tr>
<tr class="odd">
<td style="text-align: left;">Column type frequency:</td>
<td style="text-align: left;"></td>
</tr>
<tr class="even">
<td style="text-align: left;">character</td>
<td style="text-align: left;">15</td>
</tr>
<tr class="odd">
<td style="text-align: left;">list</td>
<td style="text-align: left;">1</td>
</tr>
<tr class="even">
<td style="text-align: left;">logical</td>
<td style="text-align: left;">6</td>
</tr>
<tr class="odd">
<td style="text-align: left;">numeric</td>
<td style="text-align: left;">7</td>
</tr>
<tr class="even">
<td style="text-align: left;">POSIXct</td>
<td style="text-align: left;">2</td>
</tr>
<tr class="odd">
<td style="text-align: left;">________________________</td>
<td style="text-align: left;"></td>
</tr>
<tr class="even">
<td style="text-align: left;">Group variables</td>
<td style="text-align: left;">None</td>
</tr>
</tbody>
</table>
<p><strong>Variable type: character</strong></p>
<table class="caption-top table table-sm table-striped small">
<colgroup>
<col style="width: 31%">
<col style="width: 11%">
<col style="width: 16%">
<col style="width: 4%">
<col style="width: 5%">
<col style="width: 6%">
<col style="width: 10%">
<col style="width: 12%">
</colgroup>
<thead>
<tr class="header">
<th style="text-align: left;">skim_variable</th>
<th style="text-align: right;">n_missing</th>
<th style="text-align: right;">complete_rate</th>
<th style="text-align: right;">min</th>
<th style="text-align: right;">max</th>
<th style="text-align: right;">empty</th>
<th style="text-align: right;">n_unique</th>
<th style="text-align: right;">whitespace</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">book_id</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">8</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">188</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="even">
<td style="text-align: left;">title</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">145</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">188</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="odd">
<td style="text-align: left;">author</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">9</td>
<td style="text-align: right;">22</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">134</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="even">
<td style="text-align: left;">author_l_f</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">10</td>
<td style="text-align: right;">23</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">134</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="odd">
<td style="text-align: left;">additional_authors</td>
<td style="text-align: right;">145</td>
<td style="text-align: right;">0.23</td>
<td style="text-align: right;">9</td>
<td style="text-align: right;">46</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">36</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="even">
<td style="text-align: left;">isbn</td>
<td style="text-align: right;">6</td>
<td style="text-align: right;">0.97</td>
<td style="text-align: right;">10</td>
<td style="text-align: right;">10</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">182</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="odd">
<td style="text-align: left;">isbn13</td>
<td style="text-align: right;">25</td>
<td style="text-align: right;">0.87</td>
<td style="text-align: right;">13</td>
<td style="text-align: right;">13</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">163</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="even">
<td style="text-align: left;">binding</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">5</td>
<td style="text-align: right;">21</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">9</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="odd">
<td style="text-align: left;">bookshelves</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">10</td>
<td style="text-align: right;">93</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">97</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="even">
<td style="text-align: left;">bookshelves_with_positions</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">16</td>
<td style="text-align: right;">138</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">188</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="odd">
<td style="text-align: left;">exclusive_shelf</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="even">
<td style="text-align: left;">my_review</td>
<td style="text-align: right;">183</td>
<td style="text-align: right;">0.03</td>
<td style="text-align: right;">116</td>
<td style="text-align: right;">1156</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">5</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="odd">
<td style="text-align: left;">recommended_for</td>
<td style="text-align: right;">188</td>
<td style="text-align: right;">0.00</td>
<td style="text-align: right;">NA</td>
<td style="text-align: right;">NA</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="even">
<td style="text-align: left;">recommended_by</td>
<td style="text-align: right;">188</td>
<td style="text-align: right;">0.00</td>
<td style="text-align: right;">NA</td>
<td style="text-align: right;">NA</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
</tr>
<tr class="odd">
<td style="text-align: left;">condition</td>
<td style="text-align: right;">188</td>
<td style="text-align: right;">0.00</td>
<td style="text-align: right;">NA</td>
<td style="text-align: right;">NA</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0</td>
</tr>
</tbody>
</table>
<p><strong>Variable type: list</strong></p>
<table class="caption-top table table-sm table-striped small">
<colgroup>
<col style="width: 20%">
<col style="width: 14%">
<col style="width: 20%">
<col style="width: 13%">
<col style="width: 15%">
<col style="width: 15%">
</colgroup>
<thead>
<tr class="header">
<th style="text-align: left;">skim_variable</th>
<th style="text-align: right;">n_missing</th>
<th style="text-align: right;">complete_rate</th>
<th style="text-align: right;">n_unique</th>
<th style="text-align: right;">min_length</th>
<th style="text-align: right;">max_length</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">publisher</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">108</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1</td>
</tr>
</tbody>
</table>
<p><strong>Variable type: logical</strong></p>
<table class="caption-top table table-sm table-striped small">
<thead>
<tr class="header">
<th style="text-align: left;">skim_variable</th>
<th style="text-align: right;">n_missing</th>
<th style="text-align: right;">complete_rate</th>
<th style="text-align: right;">mean</th>
<th style="text-align: left;">count</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">spoiler</td>
<td style="text-align: right;">188</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">NaN</td>
<td style="text-align: left;">:</td>
</tr>
<tr class="even">
<td style="text-align: left;">private_notes</td>
<td style="text-align: right;">188</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">NaN</td>
<td style="text-align: left;">:</td>
</tr>
<tr class="odd">
<td style="text-align: left;">original_purchase_date</td>
<td style="text-align: right;">188</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">NaN</td>
<td style="text-align: left;">:</td>
</tr>
<tr class="even">
<td style="text-align: left;">original_purchase_location</td>
<td style="text-align: right;">188</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">NaN</td>
<td style="text-align: left;">:</td>
</tr>
<tr class="odd">
<td style="text-align: left;">condition_description</td>
<td style="text-align: right;">188</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">NaN</td>
<td style="text-align: left;">:</td>
</tr>
<tr class="even">
<td style="text-align: left;">bcid</td>
<td style="text-align: right;">188</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">NaN</td>
<td style="text-align: left;">:</td>
</tr>
</tbody>
</table>
<p><strong>Variable type: numeric</strong></p>
<table class="caption-top table table-sm table-striped small">
<colgroup>
<col style="width: 24%">
<col style="width: 9%">
<col style="width: 13%">
<col style="width: 7%">
<col style="width: 6%">
<col style="width: 4%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 7%">
<col style="width: 4%">
<col style="width: 5%">
</colgroup>
<thead>
<tr class="header">
<th style="text-align: left;">skim_variable</th>
<th style="text-align: right;">n_missing</th>
<th style="text-align: right;">complete_rate</th>
<th style="text-align: right;">mean</th>
<th style="text-align: right;">sd</th>
<th style="text-align: right;">p0</th>
<th style="text-align: right;">p25</th>
<th style="text-align: right;">p50</th>
<th style="text-align: right;">p75</th>
<th style="text-align: right;">p100</th>
<th style="text-align: left;">hist</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">my_rating</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">3.22</td>
<td style="text-align: right;">0.98</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">3.00</td>
<td style="text-align: right;">3.00</td>
<td style="text-align: right;">4.00</td>
<td style="text-align: right;">5</td>
<td style="text-align: left;">▁▅▇▆▂</td>
</tr>
<tr class="even">
<td style="text-align: left;">average_rating</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">4.02</td>
<td style="text-align: right;">0.37</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;">3.81</td>
<td style="text-align: right;">4.06</td>
<td style="text-align: right;">4.25</td>
<td style="text-align: right;">5</td>
<td style="text-align: left;">▁▁▃▇▂</td>
</tr>
<tr class="odd">
<td style="text-align: left;">number_of_pages</td>
<td style="text-align: right;">7</td>
<td style="text-align: right;">0.96</td>
<td style="text-align: right;">328.12</td>
<td style="text-align: right;">124.81</td>
<td style="text-align: right;">51</td>
<td style="text-align: right;">256.00</td>
<td style="text-align: right;">320.00</td>
<td style="text-align: right;">387.00</td>
<td style="text-align: right;">1152</td>
<td style="text-align: left;">▃▇▁▁▁</td>
</tr>
<tr class="even">
<td style="text-align: left;">year_published</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">2014.94</td>
<td style="text-align: right;">7.56</td>
<td style="text-align: right;">1964</td>
<td style="text-align: right;">2011.00</td>
<td style="text-align: right;">2018.00</td>
<td style="text-align: right;">2020.00</td>
<td style="text-align: right;">2022</td>
<td style="text-align: left;">▁▁▁▂▇</td>
</tr>
<tr class="odd">
<td style="text-align: left;">original_publication_year</td>
<td style="text-align: right;">19</td>
<td style="text-align: right;">0.90</td>
<td style="text-align: right;">2008.56</td>
<td style="text-align: right;">16.15</td>
<td style="text-align: right;">1963</td>
<td style="text-align: right;">2002.00</td>
<td style="text-align: right;">2017.00</td>
<td style="text-align: right;">2020.00</td>
<td style="text-align: right;">2022</td>
<td style="text-align: left;">▁▁▁▂▇</td>
</tr>
<tr class="even">
<td style="text-align: left;">read_count</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">0.00</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">1</td>
<td style="text-align: left;">▁▁▇▁▁</td>
</tr>
<tr class="odd">
<td style="text-align: left;">owned_copies</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: right;">0.00</td>
<td style="text-align: right;">0.00</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">0.00</td>
<td style="text-align: right;">0.00</td>
<td style="text-align: right;">0.00</td>
<td style="text-align: right;">0</td>
<td style="text-align: left;">▁▁▇▁▁</td>
</tr>
</tbody>
</table>
<p><strong>Variable type: POSIXct</strong></p>
<table class="caption-top table table-sm table-striped small">
<colgroup>
<col style="width: 17%">
<col style="width: 12%">
<col style="width: 17%">
<col style="width: 13%">
<col style="width: 13%">
<col style="width: 13%">
<col style="width: 11%">
</colgroup>
<thead>
<tr class="header">
<th style="text-align: left;">skim_variable</th>
<th style="text-align: right;">n_missing</th>
<th style="text-align: right;">complete_rate</th>
<th style="text-align: left;">min</th>
<th style="text-align: left;">max</th>
<th style="text-align: left;">median</th>
<th style="text-align: right;">n_unique</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td style="text-align: left;">date_read</td>
<td style="text-align: right;">5</td>
<td style="text-align: right;">0.97</td>
<td style="text-align: left;">2021-01-03</td>
<td style="text-align: left;">2021-12-30</td>
<td style="text-align: left;">2021-08-23</td>
<td style="text-align: right;">157</td>
</tr>
<tr class="even">
<td style="text-align: left;">date_added</td>
<td style="text-align: right;">0</td>
<td style="text-align: right;">1.00</td>
<td style="text-align: left;">2012-03-21</td>
<td style="text-align: left;">2021-12-29</td>
<td style="text-align: left;">2021-07-11</td>
<td style="text-align: right;">147</td>
</tr>
</tbody>
</table>
</div>
</div>
<section id="points-of-interest" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="points-of-interest">Points of interest</h3>
<p>For one thing, I don’t make use of the bulk of the 31 variables stored in the Goodreads export data. They’re all on my <strong>read</strong> shelf (the <strong><code>exclusive_shelf</code></strong> variable can be: “currently reading”, “read”, or “want to read”—I only have one distinct value for that variable and its max and min length is four, the same number of letters in the word “read”).</p>
<p>Though I’m not <em>quite</em> there, My book ratings (<strong><code>my_rating</code></strong>) are somewhat normally distributed, given you can only give a book 1, 2, 3, 4, or 5 starts. I’m admittedly withholding with stars for this very reason—if I just start handing out five-star reviews willy-nilly, then my ratings become devoid of value.</p>
<p>The length of the books I read this year varied wildly! Though the mean <code>number_of_pages</code> (328) seems pretty typical, a standard deviation of 125 is a big swing. With a sample size of 181 (there are seven entries missing values), you wouldn’t think that a single book would make a huge difference. That said, James Clavelle’s <a href="https://www.goodreads.com/book/show/402093.Sh_gun"><em>Shōgun</em></a> clocked in at 1,152 pages, which is pretty darn hefty.</p>
<aside>
I’m not sure whether or not I’ll read the rest of Calvelle’s <a href="https://www.goodreads.com/series/121829">Asian Saga</a>, but I definitely needed to take a break after the first volume.
</aside>
<p>There are, indeed, five entries that have nothing in them for <strong><code>date_read</code></strong>. (The <strong><code>n_missing</code></strong> for <strong><code>skim_variable</code></strong> <code>date_read</code> is five). I <em>think</em> this is because I entered these a few days after reading them, and giving the dates for “Started Reading” and “Finished Reading” in the Goodreads interface, is <em>not</em> the same as clicking <em>“I’m finished”</em> in the “Update Progress” interface in terms of giving you a <code>date_read</code>.</p>
<aside>
The start and finish dates <em>do</em>, however, determine whether or not a book is counted as having been read in a given year—hence the disparity.
</aside>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://dataand.me/blog/2021-12_what-i-read-in-2021/started_reading_ended_reading_example-min.png" class="img-fluid figure-img" alt="Example of &quot;My Activity&quot; for a book without a date_read entry. The start and finish dates are given (2021-02-22, and 2021-02-23, respectively), but the exported data does not include a date_read."></p>
<figcaption>Example of “My Activity” for a book without a <code>date_read</code> entry. The start and finish dates are given (2021-02-22, and 2021-02-23, respectively), but the exported data does not include a <code>date_read</code>.</figcaption>
</figure>
</div>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://dataand.me/blog/2021-12_what-i-read-in-2021/goodreads_im_finished_update-min.png" class="img-fluid figure-img" alt="Example of Goodreads interface for updating your progress on reading a book. The “I'm finished” button seems to beget the date_read in the exported data."></p>
<figcaption>Example of Goodreads interface for updating your progress on reading a book. The “I’m finished” button seems to beget the <code>date_read</code> in the exported data.</figcaption>
</figure>
</div>
<p>If I decide to do any sort of temporal chart of my reading over the year, I’ll have to go in and manually fix the missing <code>date_read</code> entries, since the “started reading” and “finished reading” dates are not part of the data export.</p>
</section>
</section>
<section id="books-over-time" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="books-over-time">Books over time</h2>
<p>So, having fixed those entries with missing <code>date_read</code> manually, let’s take a peek at what my reading looked like over the course of the year.</p>
<div class="cell preview-image page-columns page-full" data-layout-align="center">
<details open="" class="code-fold">
<summary>View code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb5-1">read_2021_rev <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb5-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ggplot</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> date_read, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cumsum</span>(read_count))) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb5-3">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_line</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb5-4">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scale_x_date</span>(<span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NULL</span>,</span>
<span id="cb5-5">               <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> scales<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">date_breaks</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">width =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1 month"</span>),</span>
<span id="cb5-6">               <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> scales<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">label_date_short</span>()) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb5-7">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">labs</span>(</span>
<span id="cb5-8">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">title =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Sum of books Mara read over the course of 2021"</span>,</span>
<span id="cb5-9">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">alt =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"With x-axis range from January 2021 to January 2022, shows relatively steady increase in cumulative sum of books read over time (from zero to ~200, where y-max = 188)."</span>,</span>
<span id="cb5-10">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Time"</span>,</span>
<span id="cb5-11">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Total books read"</span></span>
<span id="cb5-12">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb5-13">  hrbrthemes<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">theme_ipsum_rc</span>()</span></code></pre></div></div>
</details>
<div class="cell-output-display page-columns page-full">
<div id="fig-books-read-plot" class="quarto-float quarto-figure quarto-figure-center anchored page-columns page-full" data-fig-align="center" alt="With x-axis range from January 2021 to January 2022, shows relatively steady increase in cumulative sum of books read over time (from zero to ~200, where y-max = 188).">
<figure class="quarto-float quarto-float-fig figure page-columns page-full">
<div aria-describedby="fig-books-read-plot-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca" class="page-columns page-full">
<img src="https://dataand.me/blog/2021-12_what-i-read-in-2021/index_files/figure-html/fig-books-read-plot-1.png" class="img-fluid quarto-figure quarto-figure-center figure-img column-body-outset" style="width:100.0%" alt="With x-axis range from January 2021 to January 2022, shows relatively steady increase in cumulative sum of books read over time (from zero to ~200, where y-max = 188).">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-books-read-plot-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: Sum of books read over the course of 2021.
</figcaption>
</figure>
</div>
</div>
</div>
<p>Not particularly riveting. It’s a pretty steady climb, and I think the slope increases mainly where I went on series benders (e.g.&nbsp;the Parker books at the end of the summer), and also after the Batpig died in November (I read when I’m sad).</p>
<p>What about for pages?</p>
<div class="cell page-columns page-full" data-layout-align="center">
<details open="" class="code-fold">
<summary>View code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb6-1">read_2021_rev <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb6-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">number_of_pages =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">replace_na</span>(number_of_pages, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>)) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb6-3">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">total_pages =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cumsum</span>(number_of_pages)) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb6-4">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">ggplot</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">aes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> date_read, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> total_pages)) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb6-5">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">geom_line</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb6-6">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scale_x_date</span>(<span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NULL</span>,</span>
<span id="cb6-7">               <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">breaks =</span> scales<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">date_breaks</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">width =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1 month"</span>),</span>
<span id="cb6-8">               <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> scales<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">label_date_short</span>()) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb6-9">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scale_y_continuous</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> scales<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">label_comma</span>()) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb6-10">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">labs</span>(</span>
<span id="cb6-11">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">title =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Sum of pages Mara read over the course of 2021"</span>,</span>
<span id="cb6-12">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">alt =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"With x-axis range from January 2021 to January 2022, shows relatively steady increase in cumulative sum of pages read over time (from zero to ~60000, where y-max = 59390)."</span>,</span>
<span id="cb6-13">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Time"</span>,</span>
<span id="cb6-14">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Total pages read"</span></span>
<span id="cb6-15">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span></span>
<span id="cb6-16">  hrbrthemes<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">theme_ipsum_rc</span>()</span></code></pre></div></div>
</details>
<div class="cell-output-display page-columns page-full">
<div id="fig-pages-read-plot" class="quarto-float quarto-figure quarto-figure-center anchored page-columns page-full" data-fig-align="center" alt="With x-axis range from January 2021 to January 2022, shows relatively steady increase in cumulative sum of pages read over time (from zero to ~60000, where y-max = 59390).">
<figure class="quarto-float quarto-float-fig figure page-columns page-full">
<div aria-describedby="fig-pages-read-plot-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca" class="page-columns page-full">
<img src="https://dataand.me/blog/2021-12_what-i-read-in-2021/index_files/figure-html/fig-pages-read-plot-1.png" class="img-fluid quarto-figure quarto-figure-center figure-img column-body-outset" style="width:100.0%" alt="With x-axis range from January 2021 to January 2022, shows relatively steady increase in cumulative sum of pages read over time (from zero to ~60000, where y-max = 59390).">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-pages-read-plot-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;2: Sum of pages read over the course of 2021.
</figcaption>
</figure>
</div>
</div>
</div>
<p>Still looks like a steady climb. Translation: Nothing much to see here.</p>
</section>
<section id="the-books" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="the-books">The books</h2>
<p>Keeping in mind that just because I read a book doesn’t mean I recommend it (I have a thing about finishing books—that “thing” being that I have to do it), here’s a little widget of what I read in the year 2021 <em>Anno Domini</em>.</p>
<aside>
If you don’t see anything, it’s because you have JavaScript disabled. Sorry!
</aside>
<div class="cell">
<style type="text/css">
        .gr_grid_container {
          /* customize grid container div here. eg: width: 500px; */
        }

        .gr_grid_book_container {
            /* customize book cover container div here */
            float: left;
            width: 98px;
            height: 160px;
            padding: 0px 0px;
            overflow: hidden;
        }
</style>
</div>
<script src="https://www.goodreads.com/review/grid_widget/1923002.Mara's%202021%20reads?cover_size=medium&amp;hide_link=true&amp;hide_title=true&amp;num_books=188&amp;order=a&amp;shelf=2021-reads&amp;sort=date_read&amp;widget_id=1640952431" type="text/javascript" charset="utf-8"></script>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en_us">CC BY-SA 4.0</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2021,
  author = {Averick, Mara},
  title = {What {I} Read in 2021},
  date = {2021-12-31},
  url = {https://dataand.me/blog/2021-12_what-i-read-in-2021/},
  doi = {10.59350/dzdwa-es082},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2021" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2021. <span>“What I Read in 2021.”</span> December 31,
2021. <a href="https://doi.org/10.59350/dzdwa-es082">https://doi.org/10.59350/dzdwa-es082</a>.
</div></div></section></div> ]]></description>
  <category>R</category>
  <category>data visualization</category>
  <guid>https://dataand.me/blog/2021-12_what-i-read-in-2021/</guid>
  <pubDate>Fri, 31 Dec 2021 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Madam, I’m yadm</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/blog/2021-12_madam-im-yadm/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<p>I recently got a new laptop (see <a href="https://dataand.me/notes/2021-12-06-making-the-m1-leap/">Making the M1 leap</a> if you’re curious how that journey went), and in so doing, got lots of great advice about how other developers set up their machines. The award for biggest game-changer, though, has to go to <a href="https://twitter.com/pjs_228">Patrick Schratz</a> who introduced me to <a href="https://yadm.io/"><strong>yadm</strong></a> (Yet Another Dotfiles Manager). Here, I’ll give you a quick rundown of what yadm is, how to get started with it, and why I think it’s so darn cool.</p>
<aside>
For more Pat Schratz wisdom, see <a href="https://pat-s.me/transitioning-from-x86-to-arm64-on-macos-experiences-of-an-r-user/">Transitioning from x86 to arm64 on macOS - experiences of an R user</a>.
</aside>
<section id="dotfiles-101" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="dotfiles-101">.dotfiles 101</h2>
<p>Dotfiles (so named because they usually start with a <code>.</code>) are plain-text configuration files that store your settings for various programs on your computer. For example, your Git settings/credentials are probably stored in a <code>.gitconfig</code> file. If you’ve never seen such a thing, that’s probably because they’re hidden by default on Unix-based systems. If that’s you (which is totally fine), you might want to check out a quick primer on viewing/creating dotfiles, <em>e.g.</em> <a href="https://www.freecodecamp.org/news/dotfiles-what-is-a-dot-file-and-how-to-create-it-in-mac-and-linux/">What is a Dotfile and How to Create it in Mac and Linux</a> <span class="citation" data-cites="lemonaki2021">(Lemonaki 2021)</span>, before continuing here.</p>
<aside>
Want to learn a <em>lot</em> more about dotfiles? See the <a href="https://missing.csail.mit.edu/2019/dotfiles/">Dotfiles</a> post/lecture from MIT’s <code>./missing-semester</code> series.
</aside>
<p>It’s pretty safe to say that the general consensus is that it’s worth managing your dotfiles with version control <em>somehow</em>, there are a range of opinions when it comes to the mechanics of dotfile management (see the <a href="https://github.com/webpro/awesome-dotfiles#tools">Tools section</a> of <a href="https://github.com/webpro/awesome-dotfiles">Awesome dotfiles</a>). I tried all the tools out there, so I can’t really pass judgement. Prior to yadm, I was using <a href="https://www.gnu.org/software/stow/">GNU Stow</a>, which takes a <em>“symlinking”</em> approach to dotfile management—essentially, you hoodwink your computer into thinking all your dotfiles are stored in a single directory. If Stow or symlinks were inherently bad, no one would use them (which isn’t the case). That said, I happen to like yadm’s approach a bit better.</p>
</section>
<section id="yadm" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="yadm">yadm</h2>
<p>There’s no way I’m going to outdo yadm’s own <a href="https://yadm.io/docs/overview">overview</a>, so I’m not even going to try:</p>
<blockquote class="blockquote">
<p>If you know how to use Git, you already know how to use yadm. yadm helps you maintain a single repository of dotfiles, while keeping them where they belong—in <code>$HOME</code>.</p>
</blockquote>
<p>That’s right, with yadm, your dotfiles can stay where they are! You’ll point them out to yadm (once you’ve installed it), and <em>BOOM</em> you’re keeping track of them (OK, there are a couple of other set-up steps, but it’s still pretty amazing).</p>
<p>How you <a href="https://yadm.io/docs/install">install yadm</a> depends on your operating system. I’m on a Mac (and a die-hard <a href="https://brew.sh/">Homebrew</a> fan), so I installed it with:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>Terminal</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" data-filename="Terminal" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb1-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">brew</span> install yadm</span></code></pre></div></div>
</div>
<p>If you’re embarking on this journey, you should probably just follow <a href="https://yadm.io/docs/getting_started#">yadm’s Getting Started</a> (much of which I’ll regurgitate here, but I can’t promise it’ll be the latest and greatest). The gist of it is as follows: you’ll start out by initializing yadm in an empty local repo<sup>1</sup> with <code>yadm init</code>.</p>
<aside>
Get used to the format of <code>yadm &lt;git command&gt;</code>, it’s how yadm rolls.
</aside>
<p>To add a file, you’re going to use <code>yadm add &lt;file&gt;</code> with the <strong><em>full path</em></strong> to the file (you’re not moving your dotfiles anywhere—yadm doesn’t need a directory, just a repository). For example, here is how I added <code>.zshrc</code>:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>Terminal</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" data-filename="Terminal" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb2-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">yadm</span> add ~/.zshrc</span></code></pre></div></div>
</div>
<p>The file doesn’t have to be right in your home directory (though that’s where most dotfiles reside). If I wanted to add my RStudio-preferences JSON file, for example, I’d write:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>Terminal</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb3" data-filename="Terminal" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb3-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">yadm</span> add ~/.config/rstudio/rstudio-prefs.json</span></code></pre></div></div>
</div>
<p>Since yadm wraps Git, the subsequent steps won’t be surprising. You’ll want to: commit your changes, add a remote, and push your local repo to said remote:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>Terminal</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb4" data-filename="Terminal" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb4-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># commit changes</span></span>
<span id="cb4-2"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">yadm</span> commit <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-m</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Message if I want to write one."</span></span>
<span id="cb4-3"></span>
<span id="cb4-4"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># add remote named origin</span></span>
<span id="cb4-5"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">yadm</span> remote add origin <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span>url<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb4-6"></span>
<span id="cb4-7"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># push your changes to main branch of remote</span></span>
<span id="cb4-8"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">yadm</span> push <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-u</span> origin main</span></code></pre></div></div>
</div>
<p>If you peek at <a href="https://yadm.io/docs/common_commands#">yadm’s Common Commands</a>, you’ll see lots of familiar Git commands. The one with the most surprising output coming from Git is probably <code>yadm status</code>, since yadm kind of flips Git’s default ignoring behaviour on its head by ignoring untracked files (i.e.&nbsp;any file that hasn’t explicitly been added won’t show up). Like Git, though, <code>yadm status</code> <em>will</em> let you know if you’ve got any changes to the files you <em>are</em> tracking.</p>
<p>You can print a list of all the files managed by yadm from anywhere with <code>yadm list -a</code>. My results look something like the following (I’ve commented the output out):</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>Terminal</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb5" data-filename="Terminal" style="background: #f1f3f5;"><pre class="sourceCode zsh code-with-copy"><code class="sourceCode zsh"><span id="cb5-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">yadm</span> list <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-a</span></span>
<span id="cb5-2"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># .Renviron</span></span>
<span id="cb5-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># .Rprofile</span></span>
<span id="cb5-4"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># .gitconfig</span></span>
<span id="cb5-5"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># .gitignore</span></span>
<span id="cb5-6"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># .you-get-the-idea</span></span></code></pre></div></div>
</div>
<section id="yadm-bonus-features" class="level3">
<h3 class="anchored" data-anchor-id="yadm-bonus-features">yadm bonus features</h3>
<p>Got confidential files you want to manage, but don’t want to put them in a public repo? (<em>Good!</em> You shouldn’t put them there.) Enter <a href="https://yadm.io/docs/encryption">yadm’s encryption features</a>. Want to use <a href="https://yadm.io/docs/alternates">alternate files</a> on different systems? <a href="https://yadm.io/docs/templates">Templates</a>? <a href="https://yadm.io/docs/hooks">Hooks</a>? yadm’s got you covered for those things, too.</p>
<p><em>But how does yadm differ from</em> <code>&lt;insert tool here&gt;</code>?</p>
<p>Answer: Unless it’s Stow, I’m probably not the best person to ask. There is a lovely <a href="https://yadm.io/docs/faq#comparisons">Comparisons</a> section in the <a href="https://yadm.io/docs/faq">yadm FAQs</a>, though.</p>
<p>All in all, I’m well pleased with yadm. So, major thanks to its author, <a href="https://github.com/TheLocehiliosan">Tim Byrne</a>, and to Pat Schratz for introducing me to it.</p>



</section>
</section>


<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-lemonaki2021" class="csl-entry">
Lemonaki, Dionysia. 2021. <span>“Dotfiles – What Is a Dotfile and How to Create It in Mac and Linux.”</span> freeCodeCamp.org. <a href="https://www.freecodecamp.org/news/dotfiles-what-is-a-dot-file-and-how-to-create-it-in-mac-and-linux/">https://www.freecodecamp.org/news/dotfiles-what-is-a-dot-file-and-how-to-create-it-in-mac-and-linux/</a>.
</div>
</div></section><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Footnotes</h2>

<ol>
<li id="fn1"><p>Unless you have an existing remote you want to clone, in which case you clone it.↩︎</p></li>
</ol>
</section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en_us">CC BY-SA 4.0</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2021,
  author = {Averick, Mara},
  title = {Madam, {I’m} Yadm},
  date = {2021-12-30},
  url = {https://dataand.me/blog/2021-12_madam-im-yadm/},
  doi = {10.59350/mdrk1-kg921},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2021" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2021. <span>“Madam, I’m Yadm.”</span> December 30, 2021.
<a href="https://doi.org/10.59350/mdrk1-kg921">https://doi.org/10.59350/mdrk1-kg921</a>.
</div></div></section></div> ]]></description>
  <category>yadm</category>
  <category>dotfiles</category>
  <guid>https://dataand.me/blog/2021-12_madam-im-yadm/</guid>
  <pubDate>Thu, 30 Dec 2021 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/blog/2021-12_madam-im-yadm/yadm_card-min.png" medium="image" type="image/png" height="89" width="144"/>
</item>
<item>
  <title>{highcharter} and the accessibility module: Part 5</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/blog/2021-11_highcharter-and-the-accessibility-module-part-5/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<p>This final installment in <a href="../../blog.html#category=highcharter">our series</a> on using the <a href="https://www.highcharts.com/docs/accessibility/accessibility-module">Highcharts accessibility module</a> with <a href="https://jkunst.com/highcharter/">{highcharter}</a> is basically “extra credit.” (Read: I took the time to figure this out, so I’m sharing it. But, it’s probably not the most helpful post if you’re just trying to get the accessibility module working with {highcharter}.)</p>
<p>We covered enabling the accessibility module, and getting basic keyboard navigation in <a href="../../blog/2021-11_adventures-with-the-highcharts-accessibility-module-part-1/index.html" aria-label="Adventures with the Highcarts accessibility module part 1" title="Adventures with the Highcarts accessibility module part 1">part one</a>. In parts <a href="../../blog/2021-11_higcharter-and-the-highcharts-accessibility-module-part-2/index.html" aria-label="highcharter and the Highcharts accessibility module part 2" title="highcharter and the Highcharts accessibility module part 2">two</a> and <a href="../../blog/2021-11_highcharts-accessibility-module-with-highcharter-part-3/index.html" aria-label="Highcharts accessibility module with highcharter part 3" title="Highcharts accessibility module with highcharter part 3">three</a> we re-created two of the charts from Highcharts’ <a href="https://www.highcharts.com/demo#accessible-charts">accessible demos</a>. Lastly, in <a href="../../blog/2021-11_accessible-highcharter-part-4/index.html" aria-label="Accessible highcharter part 4" title="Accessible highcharter part 4">part four</a>, we made a scatter plot inspired by Silvia Canelón’s <a href="https://silvia.rbind.io/blog/2021-curated-compilations/01-data-viz-a11y/">compilation of accessible data visualization resources for R</a>, and went into greater <a href="../../blog/2021-11_accessible-highcharter-part-4/index.html#the-hidden-screen-reader-div">detail about the hidden screen-reader <code>&lt;div&gt;</code></a> that gets generated when you use the accessibility module.</p>
<section id="all-the-annotations" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="all-the-annotations">All the annotations</h2>
<p>Our <a href="../../blog/2021-11_accessible-highcharter-part-4/index.html#an-accessible-penguin-plot">{palmerpenguins} plot</a> had a single annotation, which was recorded in the “Chart annotations summary” of the screen-reader section as an item in an unordered list.<sup>1</sup></p>
<p>The <a href="https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/demo/annotations/">chart we’re re-creating here</a> (which plots elevation and distance of the 2017 Tour de France) has lots of annotations. We want these annotations to show up in the screen-reader section with the text itself <em>and</em> information about where it is on the chart (in terms and distance and elevation).</p>
<p>Up until now, we’ve been using elements of <a href="https://api.highcharts.com/highcharts/">the Highcharts JavaScript API</a> that are configured inside of <code>Highcharts.chart({...});</code>. For example, when we specify the <a href="https://api.highcharts.com/highcharts/tooltip.valueSuffix"><code>valueSuffix</code></a> for a tooltip using <a href="https://jkunst.com/highcharter/reference/hc_tooltip.html"><code>hc_tooltip()</code></a>, we are referencing <code>tooltip.valueSuffix</code>, which is defined inside of <code>Highcharts.chart({});</code>.</p>
<p>However, there are some options that are defined outside of the chart object. These are set with <code>Highcharts.setOptions({...});</code>, and are divided up into <a href="https://api.highcharts.com/highcharts/global"><code>global</code></a> and <a href="https://api.highcharts.com/highcharts/lang"><code>lang</code></a>. As it turns out, configuring accessibility strings takes place in <a href="https://api.highcharts.com/highcharts/lang.accessibility"><code>lang.accessibility</code></a>.</p>
<section id="lang-options" class="level3">
<h3 class="anchored" data-anchor-id="lang-options"><code>lang</code> options</h3>
<p><code>lang</code> (AKA “the language object”) isn’t defined on a per-chart basis. As the Highcharts documentation describes:</p>
<blockquote class="blockquote">
<p>The language object is global and it can’t be set on each chart initialization.</p>
</blockquote>
<p>Taking a peek at the <a href="https://github.com/jbkunst/highcharter/blob/a9182b634cfcc12447431531e89a58abc1ea402f/R/zzz.R#L35">{highcharter} source code</a>, it looks like <code>lang</code> options are set when the package is loaded. So, if I want to create a template for the description of the annotations (<a href="https://api.highcharts.com/highcharts/lang.accessibility.screenReaderSection.annotations"><code>lang.accessibility.screenReaderSection.annotations</code></a>), I’m going to have to do so <em>before</em> making my chart.</p>
</section>
<section id="tour-de-france-2017-chart" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="tour-de-france-2017-chart">Tour de France 2017 chart</h3>
<p>Once again, I made use of the <a href="https://www.highcharts.com/docs/export-module/export-module-overview">Highcharts export module</a> to get data out of the original chart in CSV format in order to read it back into R.</p>
<div class="cell">
<details class="code-fold">
<summary>View code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(tidyverse)</span>
<span id="cb1-2">url <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"https://gist.githubusercontent.com/batpigandme/1916d95323ddb29274bddf3316041fd3/raw/a8f394cb85b4ae995798c2596ffe912491d2fb7c/2017-tour-de-france-stage-8.csv"</span></span>
<span id="cb1-3">tdf_data <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">read_csv</span>(url) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-4">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">drop_na</span>() <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># have some from data export</span></span></code></pre></div></div>
</details>
</div>
<p>In <a href="https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/demo/annotations/">the original</a> the screen-reader text for annotations is set using the following code:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>JavaScript</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" data-filename="JavaScript" style="background: #f1f3f5;"><pre class="sourceCode javascript code-with-copy"><code class="sourceCode javascript"><span id="cb2-1">    lang<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> {</span>
<span id="cb2-2">        <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">accessibility</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> {</span>
<span id="cb2-3">            <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">screenReaderSection</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> {</span>
<span id="cb2-4">                <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">annotations</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> {</span>
<span id="cb2-5">                    <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">descriptionNoPoints</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'{annotationText}, at distance {annotation.options.point.x}km, elevation {annotation.options.point.y} meters.'</span></span>
<span id="cb2-6">                }</span>
<span id="cb2-7">            }</span>
<span id="cb2-8">        }</span>
<span id="cb2-9">    }</span></code></pre></div></div>
</div>
<p>The “rules” (gleaned largely from the <a href="https://jkunst.com/highcharter/articles/modules.html#pattern-fills-1">pattern-fills examples</a> in the Modules &amp; plugins vignette) are basically the same for the language object as they were for chart objects: each level of the JavaScript API becomes a nested list in your R code. The difference here is that we’re going to define them using <code>options()</code>.</p>
<div class="cell">
<details open="" class="code-fold">
<summary>View code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(highcharter)</span>
<span id="cb3-2"></span>
<span id="cb3-3"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">options</span>(</span>
<span id="cb3-4">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">highcharter.lang =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb3-5">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb3-6">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">screenReaderSection =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb3-7">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">annotations =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb3-8">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">descriptionNoPoints =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'{annotationText}, at distance {annotation.options.point.x}km, elevation {annotation.options.point.y} meters.'</span></span>
<span id="cb3-9">        )</span>
<span id="cb3-10">      )</span>
<span id="cb3-11">    )</span>
<span id="cb3-12">  )</span>
<span id="cb3-13">)</span></code></pre></div></div>
</details>
</div>
<p>And now for the chart itself!</p>
<div class="cell page-columns page-full">
<details open="" class="code-fold">
<summary>View code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb4-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">highchart</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/accessibility.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-3">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/annotations.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-4">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/exporting.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-5">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/export-data.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-6">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_series</span>(tdf_data, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"area"</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hcaes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> Distance, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> Elevation),</span>
<span id="cb4-7">                <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">lineColor =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#434348"</span>,</span>
<span id="cb4-8">                <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#90ed7d"</span>,</span>
<span id="cb4-9">                <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fillOpacity =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.5</span>,</span>
<span id="cb4-10">                <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">marker =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>)) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-11">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_xAxis</span>(</span>
<span id="cb4-12">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">title =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Distance"</span>),</span>
<span id="cb4-13">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">format =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"{value} km"</span>),</span>
<span id="cb4-14">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">minRange =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,</span>
<span id="cb4-15">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-16">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">rangeDescription =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Range: 0 to 187.8 km."</span></span>
<span id="cb4-17">    )</span>
<span id="cb4-18">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-19">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_yAxis</span>(</span>
<span id="cb4-20">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">title =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>),</span>
<span id="cb4-21">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">format =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"{value} m"</span>),</span>
<span id="cb4-22">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">startOnTick =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb4-23">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">endOnTick =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>,</span>
<span id="cb4-24">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">maxPadding =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.35</span>,</span>
<span id="cb4-25">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-26">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">description =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Elevation"</span>,</span>
<span id="cb4-27">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">rangeDescription =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Range: 0 to 1,553 meters"</span></span>
<span id="cb4-28">    )</span>
<span id="cb4-29">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-30">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_title</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"2017 Tour de France Stage 8: Dole - Station des Rousses"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-31">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_caption</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"An annotated line chart illustrates the 8th stage of the 2017 Tour de France cycling race from the start point in Dole to the finish line at Station des Rousses. Altitude is plotted on the Y-axis, and distance is plotted on the X-axis. The line graph is interactive, and the user can trace the altitude level along the stage. The graph is shaded below the data line to visualize the mountainous altitudes encountered on the 187.5-kilometre stage. The three largest climbs are highlighted at Col de la Joux, Côte de Viry and the final 11.7-kilometer, 6.4% gradient climb to Montée de la Combe de Laisia Les Molunes which peaks at 1200 meters above sea level. The stage passes through the villages of Arbois, Montrond, Bonlieu, Chassal and Saint-Claude along the route."</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-32">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># begin annotations</span></span>
<span id="cb4-33">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># note that the points are grouped into separate lists</span></span>
<span id="cb4-34">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># so that they can be styled in those groups</span></span>
<span id="cb4-35">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_annotations</span>(</span>
<span id="cb4-36">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-37">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labelOptions =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-38">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">backgroundColor =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'rgba(255,255,255,0.6)'</span>,</span>
<span id="cb4-39">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">verticalAlign =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'top'</span>,</span>
<span id="cb4-40">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">15</span></span>
<span id="cb4-41">      ),</span>
<span id="cb4-42">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-43">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-44">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">point =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">27.98</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">255</span>),</span>
<span id="cb4-45">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Arbois"</span></span>
<span id="cb4-46">        ),</span>
<span id="cb4-47">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-48">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">point =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">45.5</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">611</span>),</span>
<span id="cb4-49">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Montrond"</span></span>
<span id="cb4-50">        ),</span>
<span id="cb4-51">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-52">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">point =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">63</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">651</span>),</span>
<span id="cb4-53">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Mont-sur-Monnet"</span></span>
<span id="cb4-54">        ),</span>
<span id="cb4-55">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-56">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">point =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">84</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">789</span>),</span>
<span id="cb4-57">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">10</span>,</span>
<span id="cb4-58">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Bonlieu"</span></span>
<span id="cb4-59">        ),</span>
<span id="cb4-60">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-61">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">point =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">129.5</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">382</span>),</span>
<span id="cb4-62">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Chassal"</span></span>
<span id="cb4-63">        ),</span>
<span id="cb4-64">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-65">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">point =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">159</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">443</span>),</span>
<span id="cb4-66">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Saint-Claude"</span></span>
<span id="cb4-67">        )</span>
<span id="cb4-68">      )</span>
<span id="cb4-69">    ),</span>
<span id="cb4-70">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-71">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-72">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-73">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">point =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">101.44</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1026</span>),</span>
<span id="cb4-74">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span>,</span>
<span id="cb4-75">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Col de la Joux"</span></span>
<span id="cb4-76">        ),</span>
<span id="cb4-77">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-78">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">point =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">138.5</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">748</span>),</span>
<span id="cb4-79">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Côte de Viry"</span></span>
<span id="cb4-80">        ),</span>
<span id="cb4-81">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-82">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">point =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">176.4</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1202</span>),</span>
<span id="cb4-83">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Montée de la Combe &lt;br&gt;de Laisia Les Molunes"</span></span>
<span id="cb4-84">        )</span>
<span id="cb4-85">      )</span>
<span id="cb4-86">    ),</span>
<span id="cb4-87">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-88">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labelOptions =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-89">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">shape =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"connector"</span>,</span>
<span id="cb4-90">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">align =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"right"</span>,</span>
<span id="cb4-91">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">justify =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>,</span>
<span id="cb4-92">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">crop =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb4-93">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">style =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-94">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fontSize =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"0.8em"</span>,</span>
<span id="cb4-95">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">textOutline =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"1px white"</span></span>
<span id="cb4-96">        )</span>
<span id="cb4-97">      ),</span>
<span id="cb4-98">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-99">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-100">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">point =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">96.2</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">783</span>),</span>
<span id="cb4-101">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"6.1 km climb &lt;br&gt;4.6% on avg."</span></span>
<span id="cb4-102">        ),</span>
<span id="cb4-103">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-104">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">point =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">134.5</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">540</span>),</span>
<span id="cb4-105">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"7.6 km climb &lt;br&gt;5.2% on avg."</span></span>
<span id="cb4-106">        ),</span>
<span id="cb4-107">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-108">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">point =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">172.2</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">925</span>),</span>
<span id="cb4-109">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"11.7 km climb &lt;br&gt;6.4% on avg."</span></span>
<span id="cb4-110">        )</span>
<span id="cb4-111">      )</span>
<span id="cb4-112">    )</span>
<span id="cb4-113">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-114">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_tooltip</span>(</span>
<span id="cb4-115">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">headerFormat =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Distance: {point.x:.1f} km&lt;br&gt;"</span>,</span>
<span id="cb4-116">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">pointFormat =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"{point.y} m a. s. l."</span>,</span>
<span id="cb4-117">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">shared =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span></span>
<span id="cb4-118">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-119">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_legend</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-120">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_exporting</span>(</span>
<span id="cb4-121">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb4-122">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-123">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span></span>
<span id="cb4-124">    )</span>
<span id="cb4-125">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-126">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_plotOptions</span>(</span>
<span id="cb4-127">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-128">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb4-129">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">keyboardNavigation =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>),</span>
<span id="cb4-130">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">linkedDescription =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'This line chart uses the Highcharts Annotations feature to place labels at various points of interest. </span></span>
<span id="cb4-131"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">The labels are responsive and will be hidden to avoid overlap on small screens. </span></span>
<span id="cb4-132"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Image description: An annotated line chart illustrates the 8th stage of the 2017 Tour de France cycling race from the start point in Dole to the finish line at Station des Rousses. </span></span>
<span id="cb4-133"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">Altitude is plotted on the Y-axis, and distance is plotted on the X-axis. </span></span>
<span id="cb4-134"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">The line graph is interactive, and the user can trace the altitude level along the stage. </span></span>
<span id="cb4-135"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">The graph is shaded below the data line to visualize the mountainous altitudes encountered on the 187.5-kilometre stage. The three largest climbs are highlighted at Col de la Joux, Côte de Viry and the final 11.7-kilometer, 6.4% gradient climb to Montée de la Combe de Laisia Les Molunes which peaks at 1200 meters above sea level. </span></span>
<span id="cb4-136"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">The stage passes through the villages of Arbois, Montrond, Bonlieu, Chassal and Saint-Claude along the route.'</span>,</span>
<span id="cb4-137">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">landmarkVerbosity =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"one"</span></span>
<span id="cb4-138">    ),</span>
<span id="cb4-139">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">area =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-140">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-141">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">description =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"This line chart uses the Highcharts Annotations feature to place labels at various points of interest. The labels are responsive and will be hidden to avoid overlap on small screens. Image description: An annotated line chart illustrates the 8th stage of the 2017 Tour de France cycling race from the start point in Dole to the finish line at Station des Rousses. Altitude is plotted on the Y-axis, and distance is plotted on the X-axis. The line graph is interactive, and the user can trace the altitude level along the stage. The graph is shaded below the data line to visualize the mountainous altitudes encountered on the 187.5-kilometre stage. The three largest climbs are highlighted at Col de la Joux, Côte de Viry and the final 11.7-kilometer, 6.4% gradient climb to Montée de la Combe de Laisia Les Molunes which peaks at 1200 meters above sea level. The stage passes through the villages of Arbois, Montrond, Bonlieu, Chassal and Saint-Claude along the route."</span></span>
<span id="cb4-142">      )</span>
<span id="cb4-143">    )</span>
<span id="cb4-144">  )</span></code></pre></div></div>
</details>
<div class="cell-output-display column-body-outset">
<div class="highchart html-widget html-fill-item" id="htmlwidget-f7f8325a7313e8e36cb0" style="width:100%;height:464px;"></div>
<script type="application/json" data-for="htmlwidget-f7f8325a7313e8e36cb0">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"2017 Tour de France Stage 8: Dole - Station des Rousses"},"yAxis":{"title":{"text":""},"labels":{"format":"{value} m"},"startOnTick":true,"endOnTick":false,"maxPadding":0.35,"accessibility":{"description":"Elevation","rangeDescription":"Range: 0 to 1,553 meters"}},"credits":{"enabled":false},"exporting":{"enabled":true,"accessibility":{"enabled":true}},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0},"treemap":{"layoutAlgorithm":"squarified"},"accessibility":{"enabled":true,"keyboardNavigation":{"enabled":true},"linkedDescription":"This line chart uses the Highcharts Annotations feature to place labels at various points of interest. \nThe labels are responsive and will be hidden to avoid overlap on small screens. \nImage description: An annotated line chart illustrates the 8th stage of the 2017 Tour de France cycling race from the start point in Dole to the finish line at Station des Rousses. \nAltitude is plotted on the Y-axis, and distance is plotted on the X-axis. \nThe line graph is interactive, and the user can trace the altitude level along the stage. \nThe graph is shaded below the data line to visualize the mountainous altitudes encountered on the 187.5-kilometre stage. The three largest climbs are highlighted at Col de la Joux, Côte de Viry and the final 11.7-kilometer, 6.4% gradient climb to Montée de la Combe de Laisia Les Molunes which peaks at 1200 meters above sea level. \nThe stage passes through the villages of Arbois, Montrond, Bonlieu, Chassal and Saint-Claude along the route.","landmarkVerbosity":"one"},"area":{"accessibility":{"description":"This line chart uses the Highcharts Annotations feature to place labels at various points of interest. The labels are responsive and will be hidden to avoid overlap on small screens. Image description: An annotated line chart illustrates the 8th stage of the 2017 Tour de France cycling race from the start point in Dole to the finish line at Station des Rousses. Altitude is plotted on the Y-axis, and distance is plotted on the X-axis. The line graph is interactive, and the user can trace the altitude level along the stage. The graph is shaded below the data line to visualize the mountainous altitudes encountered on the 187.5-kilometre stage. The three largest climbs are highlighted at Col de la Joux, Côte de Viry and the final 11.7-kilometer, 6.4% gradient climb to Montée de la Combe de Laisia Les Molunes which peaks at 1200 meters above sea level. The stage passes through the villages of Arbois, Montrond, Bonlieu, Chassal and Saint-Claude along the route."}}},"series":[{"group":"group","data":[{"Distance":0,"Elevation":225,"x":0,"y":225},{"Distance":0.1,"Elevation":226,"x":0.1,"y":226},{"Distance":0.2,"Elevation":228,"x":0.2,"y":228},{"Distance":0.3,"Elevation":228,"x":0.3,"y":228},{"Distance":0.4,"Elevation":229,"x":0.4,"y":229},{"Distance":0.5,"Elevation":229,"x":0.5,"y":229},{"Distance":0.6,"Elevation":230,"x":0.6,"y":230},{"Distance":0.7,"Elevation":234,"x":0.7,"y":234},{"Distance":0.8,"Elevation":235,"x":0.8,"y":235},{"Distance":0.9,"Elevation":236,"x":0.9,"y":236},{"Distance":1,"Elevation":235,"x":1,"y":235},{"Distance":1.1,"Elevation":232,"x":1.1,"y":232},{"Distance":1.2,"Elevation":228,"x":1.2,"y":228},{"Distance":1.3,"Elevation":223,"x":1.3,"y":223},{"Distance":1.4,"Elevation":218,"x":1.4,"y":218},{"Distance":1.5,"Elevation":214,"x":1.5,"y":214},{"Distance":1.6,"Elevation":207,"x":1.6,"y":207},{"Distance":1.7,"Elevation":202,"x":1.7,"y":202},{"Distance":1.8,"Elevation":198,"x":1.8,"y":198},{"Distance":1.9,"Elevation":196,"x":1.9,"y":196},{"Distance":2,"Elevation":197,"x":2,"y":197},{"Distance":2.1,"Elevation":200,"x":2.1,"y":200},{"Distance":2.2,"Elevation":205,"x":2.2,"y":205},{"Distance":2.3,"Elevation":206,"x":2.3,"y":206},{"Distance":2.4,"Elevation":210,"x":2.4,"y":210},{"Distance":2.5,"Elevation":210,"x":2.5,"y":210},{"Distance":2.6,"Elevation":210,"x":2.6,"y":210},{"Distance":2.7,"Elevation":209,"x":2.7,"y":209},{"Distance":2.8,"Elevation":208,"x":2.8,"y":208},{"Distance":2.9,"Elevation":207,"x":2.9,"y":207},{"Distance":3,"Elevation":209,"x":3,"y":209},{"Distance":3.1,"Elevation":208,"x":3.1,"y":208},{"Distance":3.2,"Elevation":207,"x":3.2,"y":207},{"Distance":3.3,"Elevation":207,"x":3.3,"y":207},{"Distance":3.4,"Elevation":206,"x":3.4,"y":206},{"Distance":3.5,"Elevation":206,"x":3.5,"y":206},{"Distance":3.6,"Elevation":205,"x":3.6,"y":205},{"Distance":3.7,"Elevation":201,"x":3.7,"y":201},{"Distance":3.8,"Elevation":195,"x":3.8,"y":195},{"Distance":3.9,"Elevation":191,"x":3.9,"y":191},{"Distance":4,"Elevation":191,"x":4,"y":191},{"Distance":4.1,"Elevation":195,"x":4.1,"y":195},{"Distance":4.2,"Elevation":199,"x":4.2,"y":199},{"Distance":4.3,"Elevation":203,"x":4.3,"y":203},{"Distance":4.4,"Elevation":208,"x":4.4,"y":208},{"Distance":4.5,"Elevation":208,"x":4.5,"y":208},{"Distance":4.6,"Elevation":208,"x":4.6,"y":208},{"Distance":4.7,"Elevation":208,"x":4.7,"y":208},{"Distance":4.8,"Elevation":209,"x":4.8,"y":209},{"Distance":4.9,"Elevation":207,"x":4.9,"y":207},{"Distance":5,"Elevation":207,"x":5,"y":207},{"Distance":5.1,"Elevation":208,"x":5.1,"y":208},{"Distance":5.2,"Elevation":209,"x":5.2,"y":209},{"Distance":5.3,"Elevation":208,"x":5.3,"y":208},{"Distance":5.4,"Elevation":210,"x":5.4,"y":210},{"Distance":5.5,"Elevation":209,"x":5.5,"y":209},{"Distance":5.6,"Elevation":209,"x":5.6,"y":209},{"Distance":5.7,"Elevation":206,"x":5.7,"y":206},{"Distance":5.8,"Elevation":207,"x":5.8,"y":207},{"Distance":5.9,"Elevation":209,"x":5.9,"y":209},{"Distance":6,"Elevation":211,"x":6,"y":211},{"Distance":6.1,"Elevation":206,"x":6.1,"y":206},{"Distance":6.2,"Elevation":201,"x":6.2,"y":201},{"Distance":6.3,"Elevation":199,"x":6.3,"y":199},{"Distance":6.4,"Elevation":200,"x":6.4,"y":200},{"Distance":6.5,"Elevation":202,"x":6.5,"y":202},{"Distance":6.6,"Elevation":203,"x":6.6,"y":203},{"Distance":6.7,"Elevation":202,"x":6.7,"y":202},{"Distance":6.8,"Elevation":204,"x":6.8,"y":204},{"Distance":6.9,"Elevation":206,"x":6.9,"y":206},{"Distance":7,"Elevation":208,"x":7,"y":208},{"Distance":7.1,"Elevation":205,"x":7.1,"y":205},{"Distance":7.2,"Elevation":202,"x":7.2,"y":202},{"Distance":7.3,"Elevation":198,"x":7.3,"y":198},{"Distance":7.4,"Elevation":198,"x":7.4,"y":198},{"Distance":7.5,"Elevation":198,"x":7.5,"y":198},{"Distance":7.6,"Elevation":198,"x":7.6,"y":198},{"Distance":7.7,"Elevation":198,"x":7.7,"y":198},{"Distance":7.8,"Elevation":199,"x":7.8,"y":199},{"Distance":7.9,"Elevation":197,"x":7.9,"y":197},{"Distance":8,"Elevation":194,"x":8,"y":194},{"Distance":8.1,"Elevation":194,"x":8.1,"y":194},{"Distance":8.199999999999999,"Elevation":195,"x":8.199999999999999,"y":195},{"Distance":8.300000000000001,"Elevation":195,"x":8.300000000000001,"y":195},{"Distance":8.4,"Elevation":196,"x":8.4,"y":196},{"Distance":8.5,"Elevation":192,"x":8.5,"y":192},{"Distance":8.6,"Elevation":200,"x":8.6,"y":200},{"Distance":8.699999999999999,"Elevation":197,"x":8.699999999999999,"y":197},{"Distance":8.800000000000001,"Elevation":194,"x":8.800000000000001,"y":194},{"Distance":8.9,"Elevation":194,"x":8.9,"y":194},{"Distance":9,"Elevation":193,"x":9,"y":193},{"Distance":9.1,"Elevation":192,"x":9.1,"y":192},{"Distance":9.199999999999999,"Elevation":192,"x":9.199999999999999,"y":192},{"Distance":9.300000000000001,"Elevation":193,"x":9.300000000000001,"y":193},{"Distance":9.4,"Elevation":191,"x":9.4,"y":191},{"Distance":9.5,"Elevation":191,"x":9.5,"y":191},{"Distance":9.6,"Elevation":193,"x":9.6,"y":193},{"Distance":9.699999999999999,"Elevation":193,"x":9.699999999999999,"y":193},{"Distance":9.800000000000001,"Elevation":194,"x":9.800000000000001,"y":194},{"Distance":9.9,"Elevation":192,"x":9.9,"y":192},{"Distance":10,"Elevation":192,"x":10,"y":192},{"Distance":10.1,"Elevation":192,"x":10.1,"y":192},{"Distance":10.2,"Elevation":192,"x":10.2,"y":192},{"Distance":10.3,"Elevation":192,"x":10.3,"y":192},{"Distance":10.4,"Elevation":193,"x":10.4,"y":193},{"Distance":10.5,"Elevation":193,"x":10.5,"y":193},{"Distance":10.6,"Elevation":193,"x":10.6,"y":193},{"Distance":10.7,"Elevation":193,"x":10.7,"y":193},{"Distance":10.8,"Elevation":194,"x":10.8,"y":194},{"Distance":10.9,"Elevation":194,"x":10.9,"y":194},{"Distance":11,"Elevation":194,"x":11,"y":194},{"Distance":11.1,"Elevation":195,"x":11.1,"y":195},{"Distance":11.2,"Elevation":194,"x":11.2,"y":194},{"Distance":11.3,"Elevation":194,"x":11.3,"y":194},{"Distance":11.4,"Elevation":194,"x":11.4,"y":194},{"Distance":11.5,"Elevation":194,"x":11.5,"y":194},{"Distance":11.6,"Elevation":193,"x":11.6,"y":193},{"Distance":11.7,"Elevation":194,"x":11.7,"y":194},{"Distance":11.8,"Elevation":194,"x":11.8,"y":194},{"Distance":11.9,"Elevation":194,"x":11.9,"y":194},{"Distance":12,"Elevation":195,"x":12,"y":195},{"Distance":12.1,"Elevation":195,"x":12.1,"y":195},{"Distance":12.2,"Elevation":195,"x":12.2,"y":195},{"Distance":12.3,"Elevation":197,"x":12.3,"y":197},{"Distance":12.4,"Elevation":197,"x":12.4,"y":197},{"Distance":12.5,"Elevation":197,"x":12.5,"y":197},{"Distance":12.6,"Elevation":198,"x":12.6,"y":198},{"Distance":12.7,"Elevation":201,"x":12.7,"y":201},{"Distance":12.8,"Elevation":202,"x":12.8,"y":202},{"Distance":12.9,"Elevation":203,"x":12.9,"y":203},{"Distance":13,"Elevation":205,"x":13,"y":205},{"Distance":13.1,"Elevation":205,"x":13.1,"y":205},{"Distance":13.2,"Elevation":204,"x":13.2,"y":204},{"Distance":13.3,"Elevation":210,"x":13.3,"y":210},{"Distance":13.4,"Elevation":213,"x":13.4,"y":213},{"Distance":13.5,"Elevation":212,"x":13.5,"y":212},{"Distance":13.6,"Elevation":213,"x":13.6,"y":213},{"Distance":13.7,"Elevation":213,"x":13.7,"y":213},{"Distance":13.8,"Elevation":213,"x":13.8,"y":213},{"Distance":13.9,"Elevation":214,"x":13.9,"y":214},{"Distance":14,"Elevation":214,"x":14,"y":214},{"Distance":14.1,"Elevation":212,"x":14.1,"y":212},{"Distance":14.2,"Elevation":209,"x":14.2,"y":209},{"Distance":14.3,"Elevation":207,"x":14.3,"y":207},{"Distance":14.4,"Elevation":207,"x":14.4,"y":207},{"Distance":14.5,"Elevation":208,"x":14.5,"y":208},{"Distance":14.6,"Elevation":211,"x":14.6,"y":211},{"Distance":14.7,"Elevation":215,"x":14.7,"y":215},{"Distance":14.8,"Elevation":219,"x":14.8,"y":219},{"Distance":14.9,"Elevation":219,"x":14.9,"y":219},{"Distance":15,"Elevation":221,"x":15,"y":221},{"Distance":15.1,"Elevation":224,"x":15.1,"y":224},{"Distance":15.2,"Elevation":224,"x":15.2,"y":224},{"Distance":15.3,"Elevation":225,"x":15.3,"y":225},{"Distance":15.4,"Elevation":225,"x":15.4,"y":225},{"Distance":15.5,"Elevation":225,"x":15.5,"y":225},{"Distance":15.6,"Elevation":225,"x":15.6,"y":225},{"Distance":15.7,"Elevation":225,"x":15.7,"y":225},{"Distance":15.8,"Elevation":225,"x":15.8,"y":225},{"Distance":15.9,"Elevation":226,"x":15.9,"y":226},{"Distance":16,"Elevation":226,"x":16,"y":226},{"Distance":16.1,"Elevation":227,"x":16.1,"y":227},{"Distance":16.2,"Elevation":227,"x":16.2,"y":227},{"Distance":16.3,"Elevation":230,"x":16.3,"y":230},{"Distance":16.4,"Elevation":231,"x":16.4,"y":231},{"Distance":16.5,"Elevation":231,"x":16.5,"y":231},{"Distance":16.6,"Elevation":232,"x":16.6,"y":232},{"Distance":16.7,"Elevation":230,"x":16.7,"y":230},{"Distance":16.8,"Elevation":229,"x":16.8,"y":229},{"Distance":16.9,"Elevation":228,"x":16.9,"y":228},{"Distance":17,"Elevation":226,"x":17,"y":226},{"Distance":17.1,"Elevation":226,"x":17.1,"y":226},{"Distance":17.2,"Elevation":224,"x":17.2,"y":224},{"Distance":17.3,"Elevation":223,"x":17.3,"y":223},{"Distance":17.4,"Elevation":224,"x":17.4,"y":224},{"Distance":17.5,"Elevation":223,"x":17.5,"y":223},{"Distance":17.6,"Elevation":221,"x":17.6,"y":221},{"Distance":17.7,"Elevation":220,"x":17.7,"y":220},{"Distance":17.8,"Elevation":218,"x":17.8,"y":218},{"Distance":17.9,"Elevation":217,"x":17.9,"y":217},{"Distance":18,"Elevation":216,"x":18,"y":216},{"Distance":18.1,"Elevation":216,"x":18.1,"y":216},{"Distance":18.2,"Elevation":215,"x":18.2,"y":215},{"Distance":18.3,"Elevation":214,"x":18.3,"y":214},{"Distance":18.4,"Elevation":213,"x":18.4,"y":213},{"Distance":18.5,"Elevation":212,"x":18.5,"y":212},{"Distance":18.6,"Elevation":212,"x":18.6,"y":212},{"Distance":18.7,"Elevation":213,"x":18.7,"y":213},{"Distance":18.8,"Elevation":214,"x":18.8,"y":214},{"Distance":18.9,"Elevation":215,"x":18.9,"y":215},{"Distance":19,"Elevation":215,"x":19,"y":215},{"Distance":19.1,"Elevation":216,"x":19.1,"y":216},{"Distance":19.2,"Elevation":217,"x":19.2,"y":217},{"Distance":19.3,"Elevation":216,"x":19.3,"y":216},{"Distance":19.4,"Elevation":216,"x":19.4,"y":216},{"Distance":19.5,"Elevation":217,"x":19.5,"y":217},{"Distance":19.6,"Elevation":219,"x":19.6,"y":219},{"Distance":19.7,"Elevation":218,"x":19.7,"y":218},{"Distance":19.8,"Elevation":218,"x":19.8,"y":218},{"Distance":19.9,"Elevation":220,"x":19.9,"y":220},{"Distance":20,"Elevation":224,"x":20,"y":224},{"Distance":20.1,"Elevation":224,"x":20.1,"y":224},{"Distance":20.2,"Elevation":225,"x":20.2,"y":225},{"Distance":20.3,"Elevation":224,"x":20.3,"y":224},{"Distance":20.4,"Elevation":225,"x":20.4,"y":225},{"Distance":20.5,"Elevation":228,"x":20.5,"y":228},{"Distance":20.6,"Elevation":228,"x":20.6,"y":228},{"Distance":20.7,"Elevation":227,"x":20.7,"y":227},{"Distance":20.8,"Elevation":228,"x":20.8,"y":228},{"Distance":20.9,"Elevation":228,"x":20.9,"y":228},{"Distance":21,"Elevation":228,"x":21,"y":228},{"Distance":21.1,"Elevation":229,"x":21.1,"y":229},{"Distance":21.2,"Elevation":225,"x":21.2,"y":225},{"Distance":21.3,"Elevation":223,"x":21.3,"y":223},{"Distance":21.4,"Elevation":222,"x":21.4,"y":222},{"Distance":21.5,"Elevation":222,"x":21.5,"y":222},{"Distance":21.6,"Elevation":223,"x":21.6,"y":223},{"Distance":21.7,"Elevation":224,"x":21.7,"y":224},{"Distance":21.8,"Elevation":224,"x":21.8,"y":224},{"Distance":21.9,"Elevation":226,"x":21.9,"y":226},{"Distance":22,"Elevation":228,"x":22,"y":228},{"Distance":22.1,"Elevation":233,"x":22.1,"y":233},{"Distance":22.2,"Elevation":237,"x":22.2,"y":237},{"Distance":22.3,"Elevation":237,"x":22.3,"y":237},{"Distance":22.4,"Elevation":238,"x":22.4,"y":238},{"Distance":22.5,"Elevation":236,"x":22.5,"y":236},{"Distance":22.6,"Elevation":232,"x":22.6,"y":232},{"Distance":22.7,"Elevation":232,"x":22.7,"y":232},{"Distance":22.8,"Elevation":228,"x":22.8,"y":228},{"Distance":22.9,"Elevation":227,"x":22.9,"y":227},{"Distance":23,"Elevation":227,"x":23,"y":227},{"Distance":23.1,"Elevation":227,"x":23.1,"y":227},{"Distance":23.2,"Elevation":227,"x":23.2,"y":227},{"Distance":23.3,"Elevation":226,"x":23.3,"y":226},{"Distance":23.4,"Elevation":226,"x":23.4,"y":226},{"Distance":23.5,"Elevation":226,"x":23.5,"y":226},{"Distance":23.6,"Elevation":226,"x":23.6,"y":226},{"Distance":23.7,"Elevation":226,"x":23.7,"y":226},{"Distance":23.8,"Elevation":226,"x":23.8,"y":226},{"Distance":23.9,"Elevation":226,"x":23.9,"y":226},{"Distance":24,"Elevation":228,"x":24,"y":228},{"Distance":24.1,"Elevation":228,"x":24.1,"y":228},{"Distance":24.2,"Elevation":229,"x":24.2,"y":229},{"Distance":24.3,"Elevation":230,"x":24.3,"y":230},{"Distance":24.4,"Elevation":230,"x":24.4,"y":230},{"Distance":24.5,"Elevation":233,"x":24.5,"y":233},{"Distance":24.6,"Elevation":235,"x":24.6,"y":235},{"Distance":24.7,"Elevation":234,"x":24.7,"y":234},{"Distance":24.8,"Elevation":234,"x":24.8,"y":234},{"Distance":24.9,"Elevation":233,"x":24.9,"y":233},{"Distance":25,"Elevation":233,"x":25,"y":233},{"Distance":25.1,"Elevation":232,"x":25.1,"y":232},{"Distance":25.2,"Elevation":232,"x":25.2,"y":232},{"Distance":25.3,"Elevation":232,"x":25.3,"y":232},{"Distance":25.4,"Elevation":232,"x":25.4,"y":232},{"Distance":25.5,"Elevation":234,"x":25.5,"y":234},{"Distance":25.6,"Elevation":234,"x":25.6,"y":234},{"Distance":25.7,"Elevation":234,"x":25.7,"y":234},{"Distance":25.8,"Elevation":234,"x":25.8,"y":234},{"Distance":25.9,"Elevation":237,"x":25.9,"y":237},{"Distance":26,"Elevation":238,"x":26,"y":238},{"Distance":26.1,"Elevation":238,"x":26.1,"y":238},{"Distance":26.2,"Elevation":238,"x":26.2,"y":238},{"Distance":26.3,"Elevation":240,"x":26.3,"y":240},{"Distance":26.4,"Elevation":240,"x":26.4,"y":240},{"Distance":26.5,"Elevation":244,"x":26.5,"y":244},{"Distance":26.6,"Elevation":241,"x":26.6,"y":241},{"Distance":26.7,"Elevation":241,"x":26.7,"y":241},{"Distance":26.8,"Elevation":245,"x":26.8,"y":245},{"Distance":26.9,"Elevation":254,"x":26.9,"y":254},{"Distance":27,"Elevation":262,"x":27,"y":262},{"Distance":27.1,"Elevation":255,"x":27.1,"y":255},{"Distance":27.2,"Elevation":255,"x":27.2,"y":255},{"Distance":27.3,"Elevation":251,"x":27.3,"y":251},{"Distance":27.4,"Elevation":252,"x":27.4,"y":252},{"Distance":27.5,"Elevation":253,"x":27.5,"y":253},{"Distance":27.6,"Elevation":253,"x":27.6,"y":253},{"Distance":27.7,"Elevation":251,"x":27.7,"y":251},{"Distance":27.8,"Elevation":251,"x":27.8,"y":251},{"Distance":27.9,"Elevation":254,"x":27.9,"y":254},{"Distance":28,"Elevation":255,"x":28,"y":255},{"Distance":28.1,"Elevation":257,"x":28.1,"y":257},{"Distance":28.2,"Elevation":259,"x":28.2,"y":259},{"Distance":28.3,"Elevation":259,"x":28.3,"y":259},{"Distance":28.4,"Elevation":259,"x":28.4,"y":259},{"Distance":28.5,"Elevation":260,"x":28.5,"y":260},{"Distance":28.6,"Elevation":258,"x":28.6,"y":258},{"Distance":28.7,"Elevation":258,"x":28.7,"y":258},{"Distance":28.8,"Elevation":262,"x":28.8,"y":262},{"Distance":28.9,"Elevation":260,"x":28.9,"y":260},{"Distance":29,"Elevation":262,"x":29,"y":262},{"Distance":29.1,"Elevation":266,"x":29.1,"y":266},{"Distance":29.2,"Elevation":268,"x":29.2,"y":268},{"Distance":29.3,"Elevation":270,"x":29.3,"y":270},{"Distance":29.4,"Elevation":278,"x":29.4,"y":278},{"Distance":29.5,"Elevation":276,"x":29.5,"y":276},{"Distance":29.6,"Elevation":278,"x":29.6,"y":278},{"Distance":29.7,"Elevation":282,"x":29.7,"y":282},{"Distance":29.8,"Elevation":281,"x":29.8,"y":281},{"Distance":29.9,"Elevation":284,"x":29.9,"y":284},{"Distance":30,"Elevation":287,"x":30,"y":287},{"Distance":30.1,"Elevation":292,"x":30.1,"y":292},{"Distance":30.2,"Elevation":303,"x":30.2,"y":303},{"Distance":30.3,"Elevation":309,"x":30.3,"y":309},{"Distance":30.4,"Elevation":317,"x":30.4,"y":317},{"Distance":30.5,"Elevation":324,"x":30.5,"y":324},{"Distance":30.6,"Elevation":334,"x":30.6,"y":334},{"Distance":30.7,"Elevation":334,"x":30.7,"y":334},{"Distance":30.8,"Elevation":319,"x":30.8,"y":319},{"Distance":30.9,"Elevation":321,"x":30.9,"y":321},{"Distance":31,"Elevation":333,"x":31,"y":333},{"Distance":31.1,"Elevation":337,"x":31.1,"y":337},{"Distance":31.2,"Elevation":345,"x":31.2,"y":345},{"Distance":31.3,"Elevation":352,"x":31.3,"y":352},{"Distance":31.4,"Elevation":386,"x":31.4,"y":386},{"Distance":31.5,"Elevation":398,"x":31.5,"y":398},{"Distance":31.6,"Elevation":406,"x":31.6,"y":406},{"Distance":31.7,"Elevation":416,"x":31.7,"y":416},{"Distance":31.8,"Elevation":423,"x":31.8,"y":423},{"Distance":31.9,"Elevation":425,"x":31.9,"y":425},{"Distance":32,"Elevation":425,"x":32,"y":425},{"Distance":32.1,"Elevation":424,"x":32.1,"y":424},{"Distance":32.2,"Elevation":423,"x":32.2,"y":423},{"Distance":32.3,"Elevation":421,"x":32.3,"y":421},{"Distance":32.4,"Elevation":421,"x":32.4,"y":421},{"Distance":32.5,"Elevation":422,"x":32.5,"y":422},{"Distance":32.6,"Elevation":421,"x":32.6,"y":421},{"Distance":32.7,"Elevation":421,"x":32.7,"y":421},{"Distance":32.8,"Elevation":421,"x":32.8,"y":421},{"Distance":32.9,"Elevation":421,"x":32.9,"y":421},{"Distance":33,"Elevation":421,"x":33,"y":421},{"Distance":33.1,"Elevation":423,"x":33.1,"y":423},{"Distance":33.2,"Elevation":435,"x":33.2,"y":435},{"Distance":33.3,"Elevation":450,"x":33.3,"y":450},{"Distance":33.4,"Elevation":451,"x":33.4,"y":451},{"Distance":33.5,"Elevation":452,"x":33.5,"y":452},{"Distance":33.6,"Elevation":452,"x":33.6,"y":452},{"Distance":33.7,"Elevation":452,"x":33.7,"y":452},{"Distance":33.8,"Elevation":452,"x":33.8,"y":452},{"Distance":33.9,"Elevation":455,"x":33.9,"y":455},{"Distance":34,"Elevation":459,"x":34,"y":459},{"Distance":34.1,"Elevation":465,"x":34.1,"y":465},{"Distance":34.2,"Elevation":469,"x":34.2,"y":469},{"Distance":34.3,"Elevation":473,"x":34.3,"y":473},{"Distance":34.4,"Elevation":476,"x":34.4,"y":476},{"Distance":34.5,"Elevation":480,"x":34.5,"y":480},{"Distance":34.6,"Elevation":483,"x":34.6,"y":483},{"Distance":34.7,"Elevation":487,"x":34.7,"y":487},{"Distance":34.8,"Elevation":490,"x":34.8,"y":490},{"Distance":34.9,"Elevation":494,"x":34.9,"y":494},{"Distance":35,"Elevation":497,"x":35,"y":497},{"Distance":35.1,"Elevation":502,"x":35.1,"y":502},{"Distance":35.2,"Elevation":504,"x":35.2,"y":504},{"Distance":35.3,"Elevation":507,"x":35.3,"y":507},{"Distance":35.4,"Elevation":511,"x":35.4,"y":511},{"Distance":35.5,"Elevation":514,"x":35.5,"y":514},{"Distance":35.6,"Elevation":518,"x":35.6,"y":518},{"Distance":35.7,"Elevation":521,"x":35.7,"y":521},{"Distance":35.8,"Elevation":524,"x":35.8,"y":524},{"Distance":35.9,"Elevation":527,"x":35.9,"y":527},{"Distance":36,"Elevation":528,"x":36,"y":528},{"Distance":36.1,"Elevation":525,"x":36.1,"y":525},{"Distance":36.2,"Elevation":526,"x":36.2,"y":526},{"Distance":36.3,"Elevation":528,"x":36.3,"y":528},{"Distance":36.4,"Elevation":528,"x":36.4,"y":528},{"Distance":36.5,"Elevation":528,"x":36.5,"y":528},{"Distance":36.6,"Elevation":529,"x":36.6,"y":529},{"Distance":36.7,"Elevation":528,"x":36.7,"y":528},{"Distance":36.8,"Elevation":526,"x":36.8,"y":526},{"Distance":36.9,"Elevation":525,"x":36.9,"y":525},{"Distance":37,"Elevation":524,"x":37,"y":524},{"Distance":37.1,"Elevation":524,"x":37.1,"y":524},{"Distance":37.2,"Elevation":524,"x":37.2,"y":524},{"Distance":37.3,"Elevation":525,"x":37.3,"y":525},{"Distance":37.4,"Elevation":528,"x":37.4,"y":528},{"Distance":37.5,"Elevation":528,"x":37.5,"y":528},{"Distance":37.6,"Elevation":532,"x":37.6,"y":532},{"Distance":37.7,"Elevation":534,"x":37.7,"y":534},{"Distance":37.8,"Elevation":538,"x":37.8,"y":538},{"Distance":37.9,"Elevation":540,"x":37.9,"y":540},{"Distance":38,"Elevation":544,"x":38,"y":544},{"Distance":38.1,"Elevation":546,"x":38.1,"y":546},{"Distance":38.2,"Elevation":554,"x":38.2,"y":554},{"Distance":38.3,"Elevation":555,"x":38.3,"y":555},{"Distance":38.4,"Elevation":559,"x":38.4,"y":559},{"Distance":38.5,"Elevation":566,"x":38.5,"y":566},{"Distance":38.6,"Elevation":568,"x":38.6,"y":568},{"Distance":38.7,"Elevation":571,"x":38.7,"y":571},{"Distance":38.8,"Elevation":571,"x":38.8,"y":571},{"Distance":38.9,"Elevation":570,"x":38.9,"y":570},{"Distance":39,"Elevation":569,"x":39,"y":569},{"Distance":39.1,"Elevation":567,"x":39.1,"y":567},{"Distance":39.2,"Elevation":567,"x":39.2,"y":567},{"Distance":39.3,"Elevation":566,"x":39.3,"y":566},{"Distance":39.4,"Elevation":566,"x":39.4,"y":566},{"Distance":39.5,"Elevation":566,"x":39.5,"y":566},{"Distance":39.6,"Elevation":566,"x":39.6,"y":566},{"Distance":39.7,"Elevation":566,"x":39.7,"y":566},{"Distance":39.8,"Elevation":566,"x":39.8,"y":566},{"Distance":39.9,"Elevation":565,"x":39.9,"y":565},{"Distance":40,"Elevation":563,"x":40,"y":563},{"Distance":40.1,"Elevation":562,"x":40.1,"y":562},{"Distance":40.2,"Elevation":563,"x":40.2,"y":563},{"Distance":40.3,"Elevation":563,"x":40.3,"y":563},{"Distance":40.4,"Elevation":562,"x":40.4,"y":562},{"Distance":40.5,"Elevation":562,"x":40.5,"y":562},{"Distance":40.6,"Elevation":562,"x":40.6,"y":562},{"Distance":40.7,"Elevation":561,"x":40.7,"y":561},{"Distance":40.8,"Elevation":563,"x":40.8,"y":563},{"Distance":40.9,"Elevation":561,"x":40.9,"y":561},{"Distance":41,"Elevation":559,"x":41,"y":559},{"Distance":41.1,"Elevation":559,"x":41.1,"y":559},{"Distance":41.2,"Elevation":559,"x":41.2,"y":559},{"Distance":41.3,"Elevation":558,"x":41.3,"y":558},{"Distance":41.4,"Elevation":559,"x":41.4,"y":559},{"Distance":41.5,"Elevation":560,"x":41.5,"y":560},{"Distance":41.6,"Elevation":560,"x":41.6,"y":560},{"Distance":41.7,"Elevation":560,"x":41.7,"y":560},{"Distance":41.8,"Elevation":559,"x":41.8,"y":559},{"Distance":41.9,"Elevation":557,"x":41.9,"y":557},{"Distance":42,"Elevation":556,"x":42,"y":556},{"Distance":42.1,"Elevation":555,"x":42.1,"y":555},{"Distance":42.2,"Elevation":555,"x":42.2,"y":555},{"Distance":42.3,"Elevation":556,"x":42.3,"y":556},{"Distance":42.4,"Elevation":557,"x":42.4,"y":557},{"Distance":42.5,"Elevation":557,"x":42.5,"y":557},{"Distance":42.6,"Elevation":557,"x":42.6,"y":557},{"Distance":42.7,"Elevation":557,"x":42.7,"y":557},{"Distance":42.8,"Elevation":557,"x":42.8,"y":557},{"Distance":42.9,"Elevation":557,"x":42.9,"y":557},{"Distance":43,"Elevation":557,"x":43,"y":557},{"Distance":43.1,"Elevation":557,"x":43.1,"y":557},{"Distance":43.2,"Elevation":558,"x":43.2,"y":558},{"Distance":43.3,"Elevation":559,"x":43.3,"y":559},{"Distance":43.4,"Elevation":560,"x":43.4,"y":560},{"Distance":43.5,"Elevation":563,"x":43.5,"y":563},{"Distance":43.6,"Elevation":566,"x":43.6,"y":566},{"Distance":43.7,"Elevation":570,"x":43.7,"y":570},{"Distance":43.8,"Elevation":572,"x":43.8,"y":572},{"Distance":43.9,"Elevation":575,"x":43.9,"y":575},{"Distance":44,"Elevation":573,"x":44,"y":573},{"Distance":44.1,"Elevation":576,"x":44.1,"y":576},{"Distance":44.2,"Elevation":577,"x":44.2,"y":577},{"Distance":44.3,"Elevation":579,"x":44.3,"y":579},{"Distance":44.4,"Elevation":581,"x":44.4,"y":581},{"Distance":44.5,"Elevation":584,"x":44.5,"y":584},{"Distance":44.6,"Elevation":591,"x":44.6,"y":591},{"Distance":44.7,"Elevation":593,"x":44.7,"y":593},{"Distance":44.8,"Elevation":594,"x":44.8,"y":594},{"Distance":44.9,"Elevation":596,"x":44.9,"y":596},{"Distance":45,"Elevation":599,"x":45,"y":599},{"Distance":45.1,"Elevation":601,"x":45.1,"y":601},{"Distance":45.2,"Elevation":601,"x":45.2,"y":601},{"Distance":45.3,"Elevation":604,"x":45.3,"y":604},{"Distance":45.4,"Elevation":607,"x":45.4,"y":607},{"Distance":45.5,"Elevation":607,"x":45.5,"y":607},{"Distance":45.6,"Elevation":607,"x":45.6,"y":607},{"Distance":45.7,"Elevation":607,"x":45.7,"y":607},{"Distance":45.8,"Elevation":605,"x":45.8,"y":605},{"Distance":45.9,"Elevation":607,"x":45.9,"y":607},{"Distance":46,"Elevation":609,"x":46,"y":609},{"Distance":46.1,"Elevation":612,"x":46.1,"y":612},{"Distance":46.2,"Elevation":613,"x":46.2,"y":613},{"Distance":46.3,"Elevation":614,"x":46.3,"y":614},{"Distance":46.4,"Elevation":614,"x":46.4,"y":614},{"Distance":46.5,"Elevation":614,"x":46.5,"y":614},{"Distance":46.6,"Elevation":616,"x":46.6,"y":616},{"Distance":46.7,"Elevation":616,"x":46.7,"y":616},{"Distance":46.8,"Elevation":615,"x":46.8,"y":615},{"Distance":46.9,"Elevation":615,"x":46.9,"y":615},{"Distance":47,"Elevation":618,"x":47,"y":618},{"Distance":47.1,"Elevation":617,"x":47.1,"y":617},{"Distance":47.2,"Elevation":615,"x":47.2,"y":615},{"Distance":47.3,"Elevation":614,"x":47.3,"y":614},{"Distance":47.4,"Elevation":613,"x":47.4,"y":613},{"Distance":47.5,"Elevation":613,"x":47.5,"y":613},{"Distance":47.6,"Elevation":613,"x":47.6,"y":613},{"Distance":47.7,"Elevation":613,"x":47.7,"y":613},{"Distance":47.8,"Elevation":612,"x":47.8,"y":612},{"Distance":47.9,"Elevation":612,"x":47.9,"y":612},{"Distance":48,"Elevation":609,"x":48,"y":609},{"Distance":48.1,"Elevation":610,"x":48.1,"y":610},{"Distance":48.2,"Elevation":603,"x":48.2,"y":603},{"Distance":48.3,"Elevation":598,"x":48.3,"y":598},{"Distance":48.4,"Elevation":598,"x":48.4,"y":598},{"Distance":48.5,"Elevation":596,"x":48.5,"y":596},{"Distance":48.6,"Elevation":595,"x":48.6,"y":595},{"Distance":48.7,"Elevation":593,"x":48.7,"y":593},{"Distance":48.8,"Elevation":590,"x":48.8,"y":590},{"Distance":48.9,"Elevation":587,"x":48.9,"y":587},{"Distance":49,"Elevation":583,"x":49,"y":583},{"Distance":49.1,"Elevation":580,"x":49.1,"y":580},{"Distance":49.2,"Elevation":576,"x":49.2,"y":576},{"Distance":49.3,"Elevation":569,"x":49.3,"y":569},{"Distance":49.4,"Elevation":568,"x":49.4,"y":568},{"Distance":49.5,"Elevation":566,"x":49.5,"y":566},{"Distance":49.6,"Elevation":560,"x":49.6,"y":560},{"Distance":49.7,"Elevation":559,"x":49.7,"y":559},{"Distance":49.8,"Elevation":558,"x":49.8,"y":558},{"Distance":49.9,"Elevation":562,"x":49.9,"y":562},{"Distance":50,"Elevation":564,"x":50,"y":564},{"Distance":50.1,"Elevation":563,"x":50.1,"y":563},{"Distance":50.2,"Elevation":563,"x":50.2,"y":563},{"Distance":50.3,"Elevation":567,"x":50.3,"y":567},{"Distance":50.4,"Elevation":574,"x":50.4,"y":574},{"Distance":50.5,"Elevation":577,"x":50.5,"y":577},{"Distance":50.6,"Elevation":580,"x":50.6,"y":580},{"Distance":50.7,"Elevation":581,"x":50.7,"y":581},{"Distance":50.8,"Elevation":579,"x":50.8,"y":579},{"Distance":50.9,"Elevation":579,"x":50.9,"y":579},{"Distance":51,"Elevation":578,"x":51,"y":578},{"Distance":51.1,"Elevation":574,"x":51.1,"y":574},{"Distance":51.2,"Elevation":569,"x":51.2,"y":569},{"Distance":51.3,"Elevation":564,"x":51.3,"y":564},{"Distance":51.4,"Elevation":558,"x":51.4,"y":558},{"Distance":51.5,"Elevation":554,"x":51.5,"y":554},{"Distance":51.6,"Elevation":550,"x":51.6,"y":550},{"Distance":51.7,"Elevation":543,"x":51.7,"y":543},{"Distance":51.8,"Elevation":539,"x":51.8,"y":539},{"Distance":51.9,"Elevation":536,"x":51.9,"y":536},{"Distance":52,"Elevation":532,"x":52,"y":532},{"Distance":52.1,"Elevation":530,"x":52.1,"y":530},{"Distance":52.2,"Elevation":529,"x":52.2,"y":529},{"Distance":52.3,"Elevation":528,"x":52.3,"y":528},{"Distance":52.4,"Elevation":528,"x":52.4,"y":528},{"Distance":52.5,"Elevation":528,"x":52.5,"y":528},{"Distance":52.6,"Elevation":528,"x":52.6,"y":528},{"Distance":52.7,"Elevation":527,"x":52.7,"y":527},{"Distance":52.8,"Elevation":527,"x":52.8,"y":527},{"Distance":52.9,"Elevation":528,"x":52.9,"y":528},{"Distance":53,"Elevation":529,"x":53,"y":529},{"Distance":53.1,"Elevation":528,"x":53.1,"y":528},{"Distance":53.2,"Elevation":526,"x":53.2,"y":526},{"Distance":53.3,"Elevation":526,"x":53.3,"y":526},{"Distance":53.4,"Elevation":524,"x":53.4,"y":524},{"Distance":53.5,"Elevation":519,"x":53.5,"y":519},{"Distance":53.6,"Elevation":517,"x":53.6,"y":517},{"Distance":53.7,"Elevation":517,"x":53.7,"y":517},{"Distance":53.8,"Elevation":522,"x":53.8,"y":522},{"Distance":53.9,"Elevation":521,"x":53.9,"y":521},{"Distance":54,"Elevation":520,"x":54,"y":520},{"Distance":54.1,"Elevation":518,"x":54.1,"y":518},{"Distance":54.2,"Elevation":513,"x":54.2,"y":513},{"Distance":54.3,"Elevation":518,"x":54.3,"y":518},{"Distance":54.4,"Elevation":520,"x":54.4,"y":520},{"Distance":54.5,"Elevation":523,"x":54.5,"y":523},{"Distance":54.6,"Elevation":526,"x":54.6,"y":526},{"Distance":54.7,"Elevation":522,"x":54.7,"y":522},{"Distance":54.8,"Elevation":513,"x":54.8,"y":513},{"Distance":54.9,"Elevation":512,"x":54.9,"y":512},{"Distance":55,"Elevation":513,"x":55,"y":513},{"Distance":55.1,"Elevation":513,"x":55.1,"y":513},{"Distance":55.2,"Elevation":518,"x":55.2,"y":518},{"Distance":55.3,"Elevation":522,"x":55.3,"y":522},{"Distance":55.4,"Elevation":526,"x":55.4,"y":526},{"Distance":55.5,"Elevation":526,"x":55.5,"y":526},{"Distance":55.6,"Elevation":525,"x":55.6,"y":525},{"Distance":55.7,"Elevation":522,"x":55.7,"y":522},{"Distance":55.8,"Elevation":520,"x":55.8,"y":520},{"Distance":55.9,"Elevation":519,"x":55.9,"y":519},{"Distance":56,"Elevation":518,"x":56,"y":518},{"Distance":56.1,"Elevation":518,"x":56.1,"y":518},{"Distance":56.2,"Elevation":518,"x":56.2,"y":518},{"Distance":56.3,"Elevation":517,"x":56.3,"y":517},{"Distance":56.4,"Elevation":516,"x":56.4,"y":516},{"Distance":56.5,"Elevation":517,"x":56.5,"y":517},{"Distance":56.6,"Elevation":517,"x":56.6,"y":517},{"Distance":56.7,"Elevation":517,"x":56.7,"y":517},{"Distance":56.8,"Elevation":521,"x":56.8,"y":521},{"Distance":56.9,"Elevation":522,"x":56.9,"y":522},{"Distance":57,"Elevation":518,"x":57,"y":518},{"Distance":57.1,"Elevation":517,"x":57.1,"y":517},{"Distance":57.2,"Elevation":514,"x":57.2,"y":514},{"Distance":57.3,"Elevation":515,"x":57.3,"y":515},{"Distance":57.4,"Elevation":513,"x":57.4,"y":513},{"Distance":57.5,"Elevation":511,"x":57.5,"y":511},{"Distance":57.6,"Elevation":511,"x":57.6,"y":511},{"Distance":57.7,"Elevation":511,"x":57.7,"y":511},{"Distance":57.8,"Elevation":510,"x":57.8,"y":510},{"Distance":57.9,"Elevation":510,"x":57.9,"y":510},{"Distance":58,"Elevation":509,"x":58,"y":509},{"Distance":58.1,"Elevation":509,"x":58.1,"y":509},{"Distance":58.2,"Elevation":509,"x":58.2,"y":509},{"Distance":58.3,"Elevation":509,"x":58.3,"y":509},{"Distance":58.4,"Elevation":509,"x":58.4,"y":509},{"Distance":58.5,"Elevation":509,"x":58.5,"y":509},{"Distance":58.6,"Elevation":509,"x":58.6,"y":509},{"Distance":58.7,"Elevation":509,"x":58.7,"y":509},{"Distance":58.8,"Elevation":509,"x":58.8,"y":509},{"Distance":58.9,"Elevation":510,"x":58.9,"y":510},{"Distance":59,"Elevation":510,"x":59,"y":510},{"Distance":59.1,"Elevation":521,"x":59.1,"y":521},{"Distance":59.2,"Elevation":524,"x":59.2,"y":524},{"Distance":59.3,"Elevation":528,"x":59.3,"y":528},{"Distance":59.4,"Elevation":533,"x":59.4,"y":533},{"Distance":59.5,"Elevation":539,"x":59.5,"y":539},{"Distance":59.6,"Elevation":545,"x":59.6,"y":545},{"Distance":59.7,"Elevation":551,"x":59.7,"y":551},{"Distance":59.8,"Elevation":562,"x":59.8,"y":562},{"Distance":59.9,"Elevation":572,"x":59.9,"y":572},{"Distance":60,"Elevation":579,"x":60,"y":579},{"Distance":60.1,"Elevation":585,"x":60.1,"y":585},{"Distance":60.2,"Elevation":593,"x":60.2,"y":593},{"Distance":60.3,"Elevation":596,"x":60.3,"y":596},{"Distance":60.4,"Elevation":605,"x":60.4,"y":605},{"Distance":60.5,"Elevation":617,"x":60.5,"y":617},{"Distance":60.6,"Elevation":620,"x":60.6,"y":620},{"Distance":60.7,"Elevation":627,"x":60.7,"y":627},{"Distance":60.8,"Elevation":628,"x":60.8,"y":628},{"Distance":60.9,"Elevation":627,"x":60.9,"y":627},{"Distance":61,"Elevation":627,"x":61,"y":627},{"Distance":61.1,"Elevation":628,"x":61.1,"y":628},{"Distance":61.2,"Elevation":629,"x":61.2,"y":629},{"Distance":61.3,"Elevation":632,"x":61.3,"y":632},{"Distance":61.4,"Elevation":634,"x":61.4,"y":634},{"Distance":61.5,"Elevation":638,"x":61.5,"y":638},{"Distance":61.6,"Elevation":637,"x":61.6,"y":637},{"Distance":61.7,"Elevation":638,"x":61.7,"y":638},{"Distance":61.8,"Elevation":639,"x":61.8,"y":639},{"Distance":61.9,"Elevation":640,"x":61.9,"y":640},{"Distance":62,"Elevation":640,"x":62,"y":640},{"Distance":62.1,"Elevation":639,"x":62.1,"y":639},{"Distance":62.2,"Elevation":639,"x":62.2,"y":639},{"Distance":62.3,"Elevation":637,"x":62.3,"y":637},{"Distance":62.4,"Elevation":637,"x":62.4,"y":637},{"Distance":62.5,"Elevation":636,"x":62.5,"y":636},{"Distance":62.6,"Elevation":637,"x":62.6,"y":637},{"Distance":62.7,"Elevation":636,"x":62.7,"y":636},{"Distance":62.8,"Elevation":637,"x":62.8,"y":637},{"Distance":62.9,"Elevation":635,"x":62.9,"y":635},{"Distance":63,"Elevation":629,"x":63,"y":629},{"Distance":63.1,"Elevation":626,"x":63.1,"y":626},{"Distance":63.2,"Elevation":626,"x":63.2,"y":626},{"Distance":63.3,"Elevation":623,"x":63.3,"y":623},{"Distance":63.4,"Elevation":621,"x":63.4,"y":621},{"Distance":63.5,"Elevation":621,"x":63.5,"y":621},{"Distance":63.6,"Elevation":621,"x":63.6,"y":621},{"Distance":63.7,"Elevation":622,"x":63.7,"y":622},{"Distance":63.8,"Elevation":625,"x":63.8,"y":625},{"Distance":63.9,"Elevation":626,"x":63.9,"y":626},{"Distance":64,"Elevation":629,"x":64,"y":629},{"Distance":64.09999999999999,"Elevation":631,"x":64.09999999999999,"y":631},{"Distance":64.2,"Elevation":633,"x":64.2,"y":633},{"Distance":64.3,"Elevation":631,"x":64.3,"y":631},{"Distance":64.40000000000001,"Elevation":632,"x":64.40000000000001,"y":632},{"Distance":64.5,"Elevation":634,"x":64.5,"y":634},{"Distance":64.59999999999999,"Elevation":637,"x":64.59999999999999,"y":637},{"Distance":64.7,"Elevation":637,"x":64.7,"y":637},{"Distance":64.8,"Elevation":637,"x":64.8,"y":637},{"Distance":64.90000000000001,"Elevation":637,"x":64.90000000000001,"y":637},{"Distance":65,"Elevation":638,"x":65,"y":638},{"Distance":65.09999999999999,"Elevation":641,"x":65.09999999999999,"y":641},{"Distance":65.2,"Elevation":644,"x":65.2,"y":644},{"Distance":65.3,"Elevation":646,"x":65.3,"y":646},{"Distance":65.40000000000001,"Elevation":649,"x":65.40000000000001,"y":649},{"Distance":65.5,"Elevation":648,"x":65.5,"y":648},{"Distance":65.59999999999999,"Elevation":647,"x":65.59999999999999,"y":647},{"Distance":65.7,"Elevation":647,"x":65.7,"y":647},{"Distance":65.8,"Elevation":649,"x":65.8,"y":649},{"Distance":65.90000000000001,"Elevation":650,"x":65.90000000000001,"y":650},{"Distance":66,"Elevation":651,"x":66,"y":651},{"Distance":66.09999999999999,"Elevation":654,"x":66.09999999999999,"y":654},{"Distance":66.2,"Elevation":652,"x":66.2,"y":652},{"Distance":66.3,"Elevation":651,"x":66.3,"y":651},{"Distance":66.40000000000001,"Elevation":650,"x":66.40000000000001,"y":650},{"Distance":66.5,"Elevation":650,"x":66.5,"y":650},{"Distance":66.59999999999999,"Elevation":649,"x":66.59999999999999,"y":649},{"Distance":66.7,"Elevation":648,"x":66.7,"y":648},{"Distance":66.8,"Elevation":648,"x":66.8,"y":648},{"Distance":66.90000000000001,"Elevation":648,"x":66.90000000000001,"y":648},{"Distance":67,"Elevation":649,"x":67,"y":649},{"Distance":67.09999999999999,"Elevation":650,"x":67.09999999999999,"y":650},{"Distance":67.2,"Elevation":647,"x":67.2,"y":647},{"Distance":67.3,"Elevation":642,"x":67.3,"y":642},{"Distance":67.40000000000001,"Elevation":641,"x":67.40000000000001,"y":641},{"Distance":67.5,"Elevation":638,"x":67.5,"y":638},{"Distance":67.59999999999999,"Elevation":636,"x":67.59999999999999,"y":636},{"Distance":67.7,"Elevation":635,"x":67.7,"y":635},{"Distance":67.8,"Elevation":633,"x":67.8,"y":633},{"Distance":67.90000000000001,"Elevation":636,"x":67.90000000000001,"y":636},{"Distance":68,"Elevation":638,"x":68,"y":638},{"Distance":68.09999999999999,"Elevation":639,"x":68.09999999999999,"y":639},{"Distance":68.2,"Elevation":641,"x":68.2,"y":641},{"Distance":68.3,"Elevation":643,"x":68.3,"y":643},{"Distance":68.40000000000001,"Elevation":644,"x":68.40000000000001,"y":644},{"Distance":68.5,"Elevation":645,"x":68.5,"y":645},{"Distance":68.59999999999999,"Elevation":649,"x":68.59999999999999,"y":649},{"Distance":68.7,"Elevation":651,"x":68.7,"y":651},{"Distance":68.8,"Elevation":648,"x":68.8,"y":648},{"Distance":68.90000000000001,"Elevation":645,"x":68.90000000000001,"y":645},{"Distance":69,"Elevation":640,"x":69,"y":640},{"Distance":69.09999999999999,"Elevation":637,"x":69.09999999999999,"y":637},{"Distance":69.2,"Elevation":637,"x":69.2,"y":637},{"Distance":69.3,"Elevation":637,"x":69.3,"y":637},{"Distance":69.40000000000001,"Elevation":635,"x":69.40000000000001,"y":635},{"Distance":69.5,"Elevation":630,"x":69.5,"y":630},{"Distance":69.59999999999999,"Elevation":628,"x":69.59999999999999,"y":628},{"Distance":69.7,"Elevation":625,"x":69.7,"y":625},{"Distance":69.8,"Elevation":622,"x":69.8,"y":622},{"Distance":69.90000000000001,"Elevation":620,"x":69.90000000000001,"y":620},{"Distance":70,"Elevation":618,"x":70,"y":618},{"Distance":70.09999999999999,"Elevation":613,"x":70.09999999999999,"y":613},{"Distance":70.2,"Elevation":612,"x":70.2,"y":612},{"Distance":70.3,"Elevation":608,"x":70.3,"y":608},{"Distance":70.40000000000001,"Elevation":603,"x":70.40000000000001,"y":603},{"Distance":70.5,"Elevation":599,"x":70.5,"y":599},{"Distance":70.59999999999999,"Elevation":597,"x":70.59999999999999,"y":597},{"Distance":70.7,"Elevation":591,"x":70.7,"y":591},{"Distance":70.8,"Elevation":590,"x":70.8,"y":590},{"Distance":70.90000000000001,"Elevation":587,"x":70.90000000000001,"y":587},{"Distance":71,"Elevation":584,"x":71,"y":584},{"Distance":71.09999999999999,"Elevation":584,"x":71.09999999999999,"y":584},{"Distance":71.2,"Elevation":582,"x":71.2,"y":582},{"Distance":71.3,"Elevation":574,"x":71.3,"y":574},{"Distance":71.40000000000001,"Elevation":572,"x":71.40000000000001,"y":572},{"Distance":71.5,"Elevation":570,"x":71.5,"y":570},{"Distance":71.59999999999999,"Elevation":572,"x":71.59999999999999,"y":572},{"Distance":71.7,"Elevation":573,"x":71.7,"y":573},{"Distance":71.8,"Elevation":575,"x":71.8,"y":575},{"Distance":71.90000000000001,"Elevation":578,"x":71.90000000000001,"y":578},{"Distance":72,"Elevation":590,"x":72,"y":590},{"Distance":72.09999999999999,"Elevation":595,"x":72.09999999999999,"y":595},{"Distance":72.2,"Elevation":595,"x":72.2,"y":595},{"Distance":72.3,"Elevation":579,"x":72.3,"y":579},{"Distance":72.40000000000001,"Elevation":581,"x":72.40000000000001,"y":581},{"Distance":72.5,"Elevation":583,"x":72.5,"y":583},{"Distance":72.59999999999999,"Elevation":583,"x":72.59999999999999,"y":583},{"Distance":72.7,"Elevation":583,"x":72.7,"y":583},{"Distance":72.8,"Elevation":583,"x":72.8,"y":583},{"Distance":72.90000000000001,"Elevation":580,"x":72.90000000000001,"y":580},{"Distance":73,"Elevation":579,"x":73,"y":579},{"Distance":73.09999999999999,"Elevation":584,"x":73.09999999999999,"y":584},{"Distance":73.2,"Elevation":587,"x":73.2,"y":587},{"Distance":73.3,"Elevation":594,"x":73.3,"y":594},{"Distance":73.40000000000001,"Elevation":597,"x":73.40000000000001,"y":597},{"Distance":73.5,"Elevation":597,"x":73.5,"y":597},{"Distance":73.59999999999999,"Elevation":596,"x":73.59999999999999,"y":596},{"Distance":73.7,"Elevation":593,"x":73.7,"y":593},{"Distance":73.8,"Elevation":591,"x":73.8,"y":591},{"Distance":73.90000000000001,"Elevation":596,"x":73.90000000000001,"y":596},{"Distance":74,"Elevation":596,"x":74,"y":596},{"Distance":74.09999999999999,"Elevation":598,"x":74.09999999999999,"y":598},{"Distance":74.2,"Elevation":598,"x":74.2,"y":598},{"Distance":74.3,"Elevation":595,"x":74.3,"y":595},{"Distance":74.40000000000001,"Elevation":592,"x":74.40000000000001,"y":592},{"Distance":74.5,"Elevation":592,"x":74.5,"y":592},{"Distance":74.59999999999999,"Elevation":592,"x":74.59999999999999,"y":592},{"Distance":74.7,"Elevation":594,"x":74.7,"y":594},{"Distance":74.8,"Elevation":597,"x":74.8,"y":597},{"Distance":74.90000000000001,"Elevation":600,"x":74.90000000000001,"y":600},{"Distance":75,"Elevation":601,"x":75,"y":601},{"Distance":75.09999999999999,"Elevation":605,"x":75.09999999999999,"y":605},{"Distance":75.2,"Elevation":604,"x":75.2,"y":604},{"Distance":75.3,"Elevation":604,"x":75.3,"y":604},{"Distance":75.40000000000001,"Elevation":607,"x":75.40000000000001,"y":607},{"Distance":75.5,"Elevation":607,"x":75.5,"y":607},{"Distance":75.59999999999999,"Elevation":607,"x":75.59999999999999,"y":607},{"Distance":75.7,"Elevation":604,"x":75.7,"y":604},{"Distance":75.8,"Elevation":605,"x":75.8,"y":605},{"Distance":75.90000000000001,"Elevation":608,"x":75.90000000000001,"y":608},{"Distance":76,"Elevation":616,"x":76,"y":616},{"Distance":76.09999999999999,"Elevation":618,"x":76.09999999999999,"y":618},{"Distance":76.2,"Elevation":629,"x":76.2,"y":629},{"Distance":76.3,"Elevation":633,"x":76.3,"y":633},{"Distance":76.40000000000001,"Elevation":634,"x":76.40000000000001,"y":634},{"Distance":76.5,"Elevation":637,"x":76.5,"y":637},{"Distance":76.59999999999999,"Elevation":644,"x":76.59999999999999,"y":644},{"Distance":76.7,"Elevation":650,"x":76.7,"y":650},{"Distance":76.8,"Elevation":653,"x":76.8,"y":653},{"Distance":76.90000000000001,"Elevation":653,"x":76.90000000000001,"y":653},{"Distance":77,"Elevation":657,"x":77,"y":657},{"Distance":77.09999999999999,"Elevation":664,"x":77.09999999999999,"y":664},{"Distance":77.2,"Elevation":668,"x":77.2,"y":668},{"Distance":77.3,"Elevation":668,"x":77.3,"y":668},{"Distance":77.40000000000001,"Elevation":668,"x":77.40000000000001,"y":668},{"Distance":77.5,"Elevation":672,"x":77.5,"y":672},{"Distance":77.59999999999999,"Elevation":674,"x":77.59999999999999,"y":674},{"Distance":77.7,"Elevation":679,"x":77.7,"y":679},{"Distance":77.8,"Elevation":681,"x":77.8,"y":681},{"Distance":77.90000000000001,"Elevation":689,"x":77.90000000000001,"y":689},{"Distance":78,"Elevation":692,"x":78,"y":692},{"Distance":78.09999999999999,"Elevation":704,"x":78.09999999999999,"y":704},{"Distance":78.2,"Elevation":708,"x":78.2,"y":708},{"Distance":78.3,"Elevation":714,"x":78.3,"y":714},{"Distance":78.40000000000001,"Elevation":716,"x":78.40000000000001,"y":716},{"Distance":78.5,"Elevation":719,"x":78.5,"y":719},{"Distance":78.59999999999999,"Elevation":722,"x":78.59999999999999,"y":722},{"Distance":78.7,"Elevation":729,"x":78.7,"y":729},{"Distance":78.8,"Elevation":733,"x":78.8,"y":733},{"Distance":78.90000000000001,"Elevation":735,"x":78.90000000000001,"y":735},{"Distance":79,"Elevation":736,"x":79,"y":736},{"Distance":79.09999999999999,"Elevation":737,"x":79.09999999999999,"y":737},{"Distance":79.2,"Elevation":737,"x":79.2,"y":737},{"Distance":79.3,"Elevation":737,"x":79.3,"y":737},{"Distance":79.40000000000001,"Elevation":737,"x":79.40000000000001,"y":737},{"Distance":79.5,"Elevation":736,"x":79.5,"y":736},{"Distance":79.59999999999999,"Elevation":736,"x":79.59999999999999,"y":736},{"Distance":79.7,"Elevation":736,"x":79.7,"y":736},{"Distance":79.8,"Elevation":737,"x":79.8,"y":737},{"Distance":79.90000000000001,"Elevation":737,"x":79.90000000000001,"y":737},{"Distance":80,"Elevation":737,"x":80,"y":737},{"Distance":80.09999999999999,"Elevation":737,"x":80.09999999999999,"y":737},{"Distance":80.2,"Elevation":738,"x":80.2,"y":738},{"Distance":80.3,"Elevation":739,"x":80.3,"y":739},{"Distance":80.40000000000001,"Elevation":739,"x":80.40000000000001,"y":739},{"Distance":80.5,"Elevation":739,"x":80.5,"y":739},{"Distance":80.59999999999999,"Elevation":741,"x":80.59999999999999,"y":741},{"Distance":80.7,"Elevation":741,"x":80.7,"y":741},{"Distance":80.8,"Elevation":741,"x":80.8,"y":741},{"Distance":80.90000000000001,"Elevation":741,"x":80.90000000000001,"y":741},{"Distance":81,"Elevation":743,"x":81,"y":743},{"Distance":81.09999999999999,"Elevation":744,"x":81.09999999999999,"y":744},{"Distance":81.2,"Elevation":744,"x":81.2,"y":744},{"Distance":81.3,"Elevation":744,"x":81.3,"y":744},{"Distance":81.40000000000001,"Elevation":744,"x":81.40000000000001,"y":744},{"Distance":81.5,"Elevation":746,"x":81.5,"y":746},{"Distance":81.59999999999999,"Elevation":748,"x":81.59999999999999,"y":748},{"Distance":81.7,"Elevation":757,"x":81.7,"y":757},{"Distance":81.8,"Elevation":753,"x":81.8,"y":753},{"Distance":81.90000000000001,"Elevation":752,"x":81.90000000000001,"y":752},{"Distance":82,"Elevation":751,"x":82,"y":751},{"Distance":82.09999999999999,"Elevation":748,"x":82.09999999999999,"y":748},{"Distance":82.2,"Elevation":746,"x":82.2,"y":746},{"Distance":82.3,"Elevation":756,"x":82.3,"y":756},{"Distance":82.40000000000001,"Elevation":755,"x":82.40000000000001,"y":755},{"Distance":82.5,"Elevation":748,"x":82.5,"y":748},{"Distance":82.59999999999999,"Elevation":745,"x":82.59999999999999,"y":745},{"Distance":82.7,"Elevation":749,"x":82.7,"y":749},{"Distance":82.8,"Elevation":752,"x":82.8,"y":752},{"Distance":82.90000000000001,"Elevation":753,"x":82.90000000000001,"y":753},{"Distance":83,"Elevation":753,"x":83,"y":753},{"Distance":83.09999999999999,"Elevation":755,"x":83.09999999999999,"y":755},{"Distance":83.2,"Elevation":764,"x":83.2,"y":764},{"Distance":83.3,"Elevation":766,"x":83.3,"y":766},{"Distance":83.40000000000001,"Elevation":771,"x":83.40000000000001,"y":771},{"Distance":83.5,"Elevation":774,"x":83.5,"y":774},{"Distance":83.59999999999999,"Elevation":775,"x":83.59999999999999,"y":775},{"Distance":83.7,"Elevation":777,"x":83.7,"y":777},{"Distance":83.8,"Elevation":778,"x":83.8,"y":778},{"Distance":83.90000000000001,"Elevation":778,"x":83.90000000000001,"y":778},{"Distance":84,"Elevation":780,"x":84,"y":780},{"Distance":84.09999999999999,"Elevation":780,"x":84.09999999999999,"y":780},{"Distance":84.2,"Elevation":782,"x":84.2,"y":782},{"Distance":84.3,"Elevation":783,"x":84.3,"y":783},{"Distance":84.40000000000001,"Elevation":786,"x":84.40000000000001,"y":786},{"Distance":84.5,"Elevation":791,"x":84.5,"y":791},{"Distance":84.59999999999999,"Elevation":792,"x":84.59999999999999,"y":792},{"Distance":84.7,"Elevation":787,"x":84.7,"y":787},{"Distance":84.8,"Elevation":782,"x":84.8,"y":782},{"Distance":84.90000000000001,"Elevation":780,"x":84.90000000000001,"y":780},{"Distance":85,"Elevation":777,"x":85,"y":777},{"Distance":85.09999999999999,"Elevation":777,"x":85.09999999999999,"y":777},{"Distance":85.2,"Elevation":777,"x":85.2,"y":777},{"Distance":85.3,"Elevation":777,"x":85.3,"y":777},{"Distance":85.40000000000001,"Elevation":770,"x":85.40000000000001,"y":770},{"Distance":85.5,"Elevation":768,"x":85.5,"y":768},{"Distance":85.59999999999999,"Elevation":764,"x":85.59999999999999,"y":764},{"Distance":85.7,"Elevation":763,"x":85.7,"y":763},{"Distance":85.8,"Elevation":758,"x":85.8,"y":758},{"Distance":85.90000000000001,"Elevation":757,"x":85.90000000000001,"y":757},{"Distance":86,"Elevation":760,"x":86,"y":760},{"Distance":86.09999999999999,"Elevation":759,"x":86.09999999999999,"y":759},{"Distance":86.2,"Elevation":756,"x":86.2,"y":756},{"Distance":86.3,"Elevation":751,"x":86.3,"y":751},{"Distance":86.40000000000001,"Elevation":748,"x":86.40000000000001,"y":748},{"Distance":86.5,"Elevation":748,"x":86.5,"y":748},{"Distance":86.59999999999999,"Elevation":747,"x":86.59999999999999,"y":747},{"Distance":86.7,"Elevation":746,"x":86.7,"y":746},{"Distance":86.8,"Elevation":745,"x":86.8,"y":745},{"Distance":86.90000000000001,"Elevation":746,"x":86.90000000000001,"y":746},{"Distance":87,"Elevation":746,"x":87,"y":746},{"Distance":87.09999999999999,"Elevation":747,"x":87.09999999999999,"y":747},{"Distance":87.2,"Elevation":742,"x":87.2,"y":742},{"Distance":87.3,"Elevation":738,"x":87.3,"y":738},{"Distance":87.40000000000001,"Elevation":733,"x":87.40000000000001,"y":733},{"Distance":87.5,"Elevation":730,"x":87.5,"y":730},{"Distance":87.59999999999999,"Elevation":730,"x":87.59999999999999,"y":730},{"Distance":87.7,"Elevation":727,"x":87.7,"y":727},{"Distance":87.8,"Elevation":725,"x":87.8,"y":725},{"Distance":87.90000000000001,"Elevation":722,"x":87.90000000000001,"y":722},{"Distance":88,"Elevation":719,"x":88,"y":719},{"Distance":88.09999999999999,"Elevation":718,"x":88.09999999999999,"y":718},{"Distance":88.2,"Elevation":716,"x":88.2,"y":716},{"Distance":88.3,"Elevation":712,"x":88.3,"y":712},{"Distance":88.40000000000001,"Elevation":710,"x":88.40000000000001,"y":710},{"Distance":88.5,"Elevation":708,"x":88.5,"y":708},{"Distance":88.59999999999999,"Elevation":707,"x":88.59999999999999,"y":707},{"Distance":88.7,"Elevation":705,"x":88.7,"y":705},{"Distance":88.8,"Elevation":699,"x":88.8,"y":699},{"Distance":88.90000000000001,"Elevation":695,"x":88.90000000000001,"y":695},{"Distance":89,"Elevation":686,"x":89,"y":686},{"Distance":89.09999999999999,"Elevation":674,"x":89.09999999999999,"y":674},{"Distance":89.2,"Elevation":671,"x":89.2,"y":671},{"Distance":89.3,"Elevation":670,"x":89.3,"y":670},{"Distance":89.40000000000001,"Elevation":670,"x":89.40000000000001,"y":670},{"Distance":89.5,"Elevation":669,"x":89.5,"y":669},{"Distance":89.59999999999999,"Elevation":668,"x":89.59999999999999,"y":668},{"Distance":89.7,"Elevation":669,"x":89.7,"y":669},{"Distance":89.8,"Elevation":670,"x":89.8,"y":670},{"Distance":89.90000000000001,"Elevation":672,"x":89.90000000000001,"y":672},{"Distance":90,"Elevation":679,"x":90,"y":679},{"Distance":90.09999999999999,"Elevation":681,"x":90.09999999999999,"y":681},{"Distance":90.2,"Elevation":684,"x":90.2,"y":684},{"Distance":90.3,"Elevation":689,"x":90.3,"y":689},{"Distance":90.40000000000001,"Elevation":693,"x":90.40000000000001,"y":693},{"Distance":90.5,"Elevation":697,"x":90.5,"y":697},{"Distance":90.59999999999999,"Elevation":701,"x":90.59999999999999,"y":701},{"Distance":90.7,"Elevation":705,"x":90.7,"y":705},{"Distance":90.8,"Elevation":708,"x":90.8,"y":708},{"Distance":90.90000000000001,"Elevation":709,"x":90.90000000000001,"y":709},{"Distance":91,"Elevation":712,"x":91,"y":712},{"Distance":91.09999999999999,"Elevation":714,"x":91.09999999999999,"y":714},{"Distance":91.2,"Elevation":716,"x":91.2,"y":716},{"Distance":91.3,"Elevation":706,"x":91.3,"y":706},{"Distance":91.40000000000001,"Elevation":697,"x":91.40000000000001,"y":697},{"Distance":91.5,"Elevation":689,"x":91.5,"y":689},{"Distance":91.59999999999999,"Elevation":681,"x":91.59999999999999,"y":681},{"Distance":91.7,"Elevation":677,"x":91.7,"y":677},{"Distance":91.8,"Elevation":668,"x":91.8,"y":668},{"Distance":91.90000000000001,"Elevation":663,"x":91.90000000000001,"y":663},{"Distance":92,"Elevation":661,"x":92,"y":661},{"Distance":92.09999999999999,"Elevation":653,"x":92.09999999999999,"y":653},{"Distance":92.2,"Elevation":652,"x":92.2,"y":652},{"Distance":92.3,"Elevation":650,"x":92.3,"y":650},{"Distance":92.40000000000001,"Elevation":647,"x":92.40000000000001,"y":647},{"Distance":92.5,"Elevation":646,"x":92.5,"y":646},{"Distance":92.59999999999999,"Elevation":645,"x":92.59999999999999,"y":645},{"Distance":92.7,"Elevation":642,"x":92.7,"y":642},{"Distance":92.8,"Elevation":640,"x":92.8,"y":640},{"Distance":92.90000000000001,"Elevation":640,"x":92.90000000000001,"y":640},{"Distance":93,"Elevation":651,"x":93,"y":651},{"Distance":93.09999999999999,"Elevation":648,"x":93.09999999999999,"y":648},{"Distance":93.2,"Elevation":657,"x":93.2,"y":657},{"Distance":93.3,"Elevation":660,"x":93.3,"y":660},{"Distance":93.40000000000001,"Elevation":660,"x":93.40000000000001,"y":660},{"Distance":93.5,"Elevation":662,"x":93.5,"y":662},{"Distance":93.59999999999999,"Elevation":672,"x":93.59999999999999,"y":672},{"Distance":93.7,"Elevation":675,"x":93.7,"y":675},{"Distance":93.8,"Elevation":681,"x":93.8,"y":681},{"Distance":93.90000000000001,"Elevation":685,"x":93.90000000000001,"y":685},{"Distance":94,"Elevation":694,"x":94,"y":694},{"Distance":94.09999999999999,"Elevation":700,"x":94.09999999999999,"y":700},{"Distance":94.2,"Elevation":707,"x":94.2,"y":707},{"Distance":94.3,"Elevation":716,"x":94.3,"y":716},{"Distance":94.40000000000001,"Elevation":720,"x":94.40000000000001,"y":720},{"Distance":94.5,"Elevation":723,"x":94.5,"y":723},{"Distance":94.59999999999999,"Elevation":727,"x":94.59999999999999,"y":727},{"Distance":94.7,"Elevation":727,"x":94.7,"y":727},{"Distance":94.8,"Elevation":728,"x":94.8,"y":728},{"Distance":94.90000000000001,"Elevation":727,"x":94.90000000000001,"y":727},{"Distance":95,"Elevation":727,"x":95,"y":727},{"Distance":95.09999999999999,"Elevation":727,"x":95.09999999999999,"y":727},{"Distance":95.2,"Elevation":730,"x":95.2,"y":730},{"Distance":95.3,"Elevation":735,"x":95.3,"y":735},{"Distance":95.40000000000001,"Elevation":744,"x":95.40000000000001,"y":744},{"Distance":95.5,"Elevation":749,"x":95.5,"y":749},{"Distance":95.59999999999999,"Elevation":753,"x":95.59999999999999,"y":753},{"Distance":95.7,"Elevation":759,"x":95.7,"y":759},{"Distance":95.8,"Elevation":762,"x":95.8,"y":762},{"Distance":95.90000000000001,"Elevation":767,"x":95.90000000000001,"y":767},{"Distance":96,"Elevation":782,"x":96,"y":782},{"Distance":96.09999999999999,"Elevation":781,"x":96.09999999999999,"y":781},{"Distance":96.2,"Elevation":783,"x":96.2,"y":783},{"Distance":96.3,"Elevation":785,"x":96.3,"y":785},{"Distance":96.40000000000001,"Elevation":789,"x":96.40000000000001,"y":789},{"Distance":96.5,"Elevation":796,"x":96.5,"y":796},{"Distance":96.59999999999999,"Elevation":807,"x":96.59999999999999,"y":807},{"Distance":96.7,"Elevation":813,"x":96.7,"y":813},{"Distance":96.8,"Elevation":819,"x":96.8,"y":819},{"Distance":96.90000000000001,"Elevation":822,"x":96.90000000000001,"y":822},{"Distance":97,"Elevation":824,"x":97,"y":824},{"Distance":97.09999999999999,"Elevation":826,"x":97.09999999999999,"y":826},{"Distance":97.2,"Elevation":830,"x":97.2,"y":830},{"Distance":97.3,"Elevation":832,"x":97.3,"y":832},{"Distance":97.40000000000001,"Elevation":836,"x":97.40000000000001,"y":836},{"Distance":97.5,"Elevation":838,"x":97.5,"y":838},{"Distance":97.59999999999999,"Elevation":842,"x":97.59999999999999,"y":842},{"Distance":97.7,"Elevation":847,"x":97.7,"y":847},{"Distance":97.8,"Elevation":848,"x":97.8,"y":848},{"Distance":97.90000000000001,"Elevation":854,"x":97.90000000000001,"y":854},{"Distance":98,"Elevation":855,"x":98,"y":855},{"Distance":98.09999999999999,"Elevation":858,"x":98.09999999999999,"y":858},{"Distance":98.2,"Elevation":863,"x":98.2,"y":863},{"Distance":98.3,"Elevation":870,"x":98.3,"y":870},{"Distance":98.40000000000001,"Elevation":875,"x":98.40000000000001,"y":875},{"Distance":98.5,"Elevation":883,"x":98.5,"y":883},{"Distance":98.59999999999999,"Elevation":889,"x":98.59999999999999,"y":889},{"Distance":98.7,"Elevation":896,"x":98.7,"y":896},{"Distance":98.8,"Elevation":904,"x":98.8,"y":904},{"Distance":98.90000000000001,"Elevation":910,"x":98.90000000000001,"y":910},{"Distance":99,"Elevation":916,"x":99,"y":916},{"Distance":99.09999999999999,"Elevation":922,"x":99.09999999999999,"y":922},{"Distance":99.2,"Elevation":927,"x":99.2,"y":927},{"Distance":99.3,"Elevation":931,"x":99.3,"y":931},{"Distance":99.40000000000001,"Elevation":938,"x":99.40000000000001,"y":938},{"Distance":99.5,"Elevation":941,"x":99.5,"y":941},{"Distance":99.59999999999999,"Elevation":949,"x":99.59999999999999,"y":949},{"Distance":99.7,"Elevation":954,"x":99.7,"y":954},{"Distance":99.8,"Elevation":962,"x":99.8,"y":962},{"Distance":99.90000000000001,"Elevation":967,"x":99.90000000000001,"y":967},{"Distance":100,"Elevation":976,"x":100,"y":976},{"Distance":100.1,"Elevation":983,"x":100.1,"y":983},{"Distance":100.2,"Elevation":986,"x":100.2,"y":986},{"Distance":100.3,"Elevation":992,"x":100.3,"y":992},{"Distance":100.4,"Elevation":994,"x":100.4,"y":994},{"Distance":100.5,"Elevation":999,"x":100.5,"y":999},{"Distance":100.6,"Elevation":1004,"x":100.6,"y":1004},{"Distance":100.7,"Elevation":1006,"x":100.7,"y":1006},{"Distance":100.8,"Elevation":1007,"x":100.8,"y":1007},{"Distance":100.9,"Elevation":1009,"x":100.9,"y":1009},{"Distance":101,"Elevation":1012,"x":101,"y":1012},{"Distance":101.1,"Elevation":1016,"x":101.1,"y":1016},{"Distance":101.2,"Elevation":1019,"x":101.2,"y":1019},{"Distance":101.3,"Elevation":1021,"x":101.3,"y":1021},{"Distance":101.4,"Elevation":1025,"x":101.4,"y":1025},{"Distance":101.5,"Elevation":1025,"x":101.5,"y":1025},{"Distance":101.6,"Elevation":1020,"x":101.6,"y":1020},{"Distance":101.7,"Elevation":1017,"x":101.7,"y":1017},{"Distance":101.8,"Elevation":1009,"x":101.8,"y":1009},{"Distance":101.9,"Elevation":1003,"x":101.9,"y":1003},{"Distance":102,"Elevation":1000,"x":102,"y":1000},{"Distance":102.1,"Elevation":994,"x":102.1,"y":994},{"Distance":102.2,"Elevation":989,"x":102.2,"y":989},{"Distance":102.3,"Elevation":986,"x":102.3,"y":986},{"Distance":102.4,"Elevation":979,"x":102.4,"y":979},{"Distance":102.5,"Elevation":974,"x":102.5,"y":974},{"Distance":102.6,"Elevation":972,"x":102.6,"y":972},{"Distance":102.7,"Elevation":964,"x":102.7,"y":964},{"Distance":102.8,"Elevation":961,"x":102.8,"y":961},{"Distance":102.9,"Elevation":957,"x":102.9,"y":957},{"Distance":103,"Elevation":952,"x":103,"y":952},{"Distance":103.1,"Elevation":946,"x":103.1,"y":946},{"Distance":103.2,"Elevation":944,"x":103.2,"y":944},{"Distance":103.3,"Elevation":940,"x":103.3,"y":940},{"Distance":103.4,"Elevation":936,"x":103.4,"y":936},{"Distance":103.5,"Elevation":935,"x":103.5,"y":935},{"Distance":103.6,"Elevation":934,"x":103.6,"y":934},{"Distance":103.7,"Elevation":934,"x":103.7,"y":934},{"Distance":103.8,"Elevation":934,"x":103.8,"y":934},{"Distance":103.9,"Elevation":934,"x":103.9,"y":934},{"Distance":104,"Elevation":933,"x":104,"y":933},{"Distance":104.1,"Elevation":929,"x":104.1,"y":929},{"Distance":104.2,"Elevation":922,"x":104.2,"y":922},{"Distance":104.3,"Elevation":914,"x":104.3,"y":914},{"Distance":104.4,"Elevation":906,"x":104.4,"y":906},{"Distance":104.5,"Elevation":910,"x":104.5,"y":910},{"Distance":104.6,"Elevation":906,"x":104.6,"y":906},{"Distance":104.7,"Elevation":903,"x":104.7,"y":903},{"Distance":104.8,"Elevation":895,"x":104.8,"y":895},{"Distance":104.9,"Elevation":893,"x":104.9,"y":893},{"Distance":105,"Elevation":891,"x":105,"y":891},{"Distance":105.1,"Elevation":889,"x":105.1,"y":889},{"Distance":105.2,"Elevation":889,"x":105.2,"y":889},{"Distance":105.3,"Elevation":893,"x":105.3,"y":893},{"Distance":105.4,"Elevation":899,"x":105.4,"y":899},{"Distance":105.5,"Elevation":904,"x":105.5,"y":904},{"Distance":105.6,"Elevation":906,"x":105.6,"y":906},{"Distance":105.7,"Elevation":897,"x":105.7,"y":897},{"Distance":105.8,"Elevation":883,"x":105.8,"y":883},{"Distance":105.9,"Elevation":895,"x":105.9,"y":895},{"Distance":106,"Elevation":898,"x":106,"y":898},{"Distance":106.1,"Elevation":893,"x":106.1,"y":893},{"Distance":106.2,"Elevation":895,"x":106.2,"y":895},{"Distance":106.3,"Elevation":907,"x":106.3,"y":907},{"Distance":106.4,"Elevation":916,"x":106.4,"y":916},{"Distance":106.5,"Elevation":915,"x":106.5,"y":915},{"Distance":106.6,"Elevation":920,"x":106.6,"y":920},{"Distance":106.7,"Elevation":919,"x":106.7,"y":919},{"Distance":106.8,"Elevation":917,"x":106.8,"y":917},{"Distance":106.9,"Elevation":911,"x":106.9,"y":911},{"Distance":107,"Elevation":904,"x":107,"y":904},{"Distance":107.1,"Elevation":891,"x":107.1,"y":891},{"Distance":107.2,"Elevation":894,"x":107.2,"y":894},{"Distance":107.3,"Elevation":902,"x":107.3,"y":902},{"Distance":107.4,"Elevation":900,"x":107.4,"y":900},{"Distance":107.5,"Elevation":900,"x":107.5,"y":900},{"Distance":107.6,"Elevation":898,"x":107.6,"y":898},{"Distance":107.7,"Elevation":897,"x":107.7,"y":897},{"Distance":107.8,"Elevation":897,"x":107.8,"y":897},{"Distance":107.9,"Elevation":897,"x":107.9,"y":897},{"Distance":108,"Elevation":909,"x":108,"y":909},{"Distance":108.1,"Elevation":910,"x":108.1,"y":910},{"Distance":108.2,"Elevation":906,"x":108.2,"y":906},{"Distance":108.3,"Elevation":920,"x":108.3,"y":920},{"Distance":108.4,"Elevation":901,"x":108.4,"y":901},{"Distance":108.5,"Elevation":900,"x":108.5,"y":900},{"Distance":108.6,"Elevation":895,"x":108.6,"y":895},{"Distance":108.7,"Elevation":892,"x":108.7,"y":892},{"Distance":108.8,"Elevation":887,"x":108.8,"y":887},{"Distance":108.9,"Elevation":889,"x":108.9,"y":889},{"Distance":109,"Elevation":904,"x":109,"y":904},{"Distance":109.1,"Elevation":910,"x":109.1,"y":910},{"Distance":109.2,"Elevation":910,"x":109.2,"y":910},{"Distance":109.3,"Elevation":907,"x":109.3,"y":907},{"Distance":109.4,"Elevation":906,"x":109.4,"y":906},{"Distance":109.5,"Elevation":898,"x":109.5,"y":898},{"Distance":109.6,"Elevation":908,"x":109.6,"y":908},{"Distance":109.7,"Elevation":911,"x":109.7,"y":911},{"Distance":109.8,"Elevation":920,"x":109.8,"y":920},{"Distance":109.9,"Elevation":928,"x":109.9,"y":928},{"Distance":110,"Elevation":939,"x":110,"y":939},{"Distance":110.1,"Elevation":939,"x":110.1,"y":939},{"Distance":110.2,"Elevation":935,"x":110.2,"y":935},{"Distance":110.3,"Elevation":932,"x":110.3,"y":932},{"Distance":110.4,"Elevation":926,"x":110.4,"y":926},{"Distance":110.5,"Elevation":924,"x":110.5,"y":924},{"Distance":110.6,"Elevation":919,"x":110.6,"y":919},{"Distance":110.7,"Elevation":913,"x":110.7,"y":913},{"Distance":110.8,"Elevation":909,"x":110.8,"y":909},{"Distance":110.9,"Elevation":906,"x":110.9,"y":906},{"Distance":111,"Elevation":901,"x":111,"y":901},{"Distance":111.1,"Elevation":899,"x":111.1,"y":899},{"Distance":111.2,"Elevation":899,"x":111.2,"y":899},{"Distance":111.3,"Elevation":899,"x":111.3,"y":899},{"Distance":111.4,"Elevation":898,"x":111.4,"y":898},{"Distance":111.5,"Elevation":896,"x":111.5,"y":896},{"Distance":111.6,"Elevation":895,"x":111.6,"y":895},{"Distance":111.7,"Elevation":889,"x":111.7,"y":889},{"Distance":111.8,"Elevation":887,"x":111.8,"y":887},{"Distance":111.9,"Elevation":886,"x":111.9,"y":886},{"Distance":112,"Elevation":881,"x":112,"y":881},{"Distance":112.1,"Elevation":875,"x":112.1,"y":875},{"Distance":112.2,"Elevation":872,"x":112.2,"y":872},{"Distance":112.3,"Elevation":867,"x":112.3,"y":867},{"Distance":112.4,"Elevation":856,"x":112.4,"y":856},{"Distance":112.5,"Elevation":850,"x":112.5,"y":850},{"Distance":112.6,"Elevation":842,"x":112.6,"y":842},{"Distance":112.7,"Elevation":839,"x":112.7,"y":839},{"Distance":112.8,"Elevation":836,"x":112.8,"y":836},{"Distance":112.9,"Elevation":827,"x":112.9,"y":827},{"Distance":113,"Elevation":822,"x":113,"y":822},{"Distance":113.1,"Elevation":817,"x":113.1,"y":817},{"Distance":113.2,"Elevation":809,"x":113.2,"y":809},{"Distance":113.3,"Elevation":805,"x":113.3,"y":805},{"Distance":113.4,"Elevation":802,"x":113.4,"y":802},{"Distance":113.5,"Elevation":796,"x":113.5,"y":796},{"Distance":113.6,"Elevation":793,"x":113.6,"y":793},{"Distance":113.7,"Elevation":790,"x":113.7,"y":790},{"Distance":113.8,"Elevation":786,"x":113.8,"y":786},{"Distance":113.9,"Elevation":778,"x":113.9,"y":778},{"Distance":114,"Elevation":770,"x":114,"y":770},{"Distance":114.1,"Elevation":759,"x":114.1,"y":759},{"Distance":114.2,"Elevation":754,"x":114.2,"y":754},{"Distance":114.3,"Elevation":744,"x":114.3,"y":744},{"Distance":114.4,"Elevation":744,"x":114.4,"y":744},{"Distance":114.5,"Elevation":746,"x":114.5,"y":746},{"Distance":114.6,"Elevation":741,"x":114.6,"y":741},{"Distance":114.7,"Elevation":761,"x":114.7,"y":761},{"Distance":114.8,"Elevation":759,"x":114.8,"y":759},{"Distance":114.9,"Elevation":737,"x":114.9,"y":737},{"Distance":115,"Elevation":722,"x":115,"y":722},{"Distance":115.1,"Elevation":719,"x":115.1,"y":719},{"Distance":115.2,"Elevation":720,"x":115.2,"y":720},{"Distance":115.3,"Elevation":721,"x":115.3,"y":721},{"Distance":115.4,"Elevation":722,"x":115.4,"y":722},{"Distance":115.5,"Elevation":718,"x":115.5,"y":718},{"Distance":115.6,"Elevation":713,"x":115.6,"y":713},{"Distance":115.7,"Elevation":709,"x":115.7,"y":709},{"Distance":115.8,"Elevation":706,"x":115.8,"y":706},{"Distance":115.9,"Elevation":707,"x":115.9,"y":707},{"Distance":116,"Elevation":699,"x":116,"y":699},{"Distance":116.1,"Elevation":689,"x":116.1,"y":689},{"Distance":116.2,"Elevation":685,"x":116.2,"y":685},{"Distance":116.3,"Elevation":683,"x":116.3,"y":683},{"Distance":116.4,"Elevation":669,"x":116.4,"y":669},{"Distance":116.5,"Elevation":665,"x":116.5,"y":665},{"Distance":116.6,"Elevation":661,"x":116.6,"y":661},{"Distance":116.7,"Elevation":657,"x":116.7,"y":657},{"Distance":116.8,"Elevation":653,"x":116.8,"y":653},{"Distance":116.9,"Elevation":653,"x":116.9,"y":653},{"Distance":117,"Elevation":647,"x":117,"y":647},{"Distance":117.1,"Elevation":640,"x":117.1,"y":640},{"Distance":117.2,"Elevation":638,"x":117.2,"y":638},{"Distance":117.3,"Elevation":633,"x":117.3,"y":633},{"Distance":117.4,"Elevation":628,"x":117.4,"y":628},{"Distance":117.5,"Elevation":624,"x":117.5,"y":624},{"Distance":117.6,"Elevation":618,"x":117.6,"y":618},{"Distance":117.7,"Elevation":613,"x":117.7,"y":613},{"Distance":117.8,"Elevation":607,"x":117.8,"y":607},{"Distance":117.9,"Elevation":602,"x":117.9,"y":602},{"Distance":118,"Elevation":598,"x":118,"y":598},{"Distance":118.1,"Elevation":595,"x":118.1,"y":595},{"Distance":118.2,"Elevation":595,"x":118.2,"y":595},{"Distance":118.3,"Elevation":594,"x":118.3,"y":594},{"Distance":118.4,"Elevation":602,"x":118.4,"y":602},{"Distance":118.5,"Elevation":598,"x":118.5,"y":598},{"Distance":118.6,"Elevation":598,"x":118.6,"y":598},{"Distance":118.7,"Elevation":601,"x":118.7,"y":601},{"Distance":118.8,"Elevation":605,"x":118.8,"y":605},{"Distance":118.9,"Elevation":608,"x":118.9,"y":608},{"Distance":119,"Elevation":612,"x":119,"y":612},{"Distance":119.1,"Elevation":614,"x":119.1,"y":614},{"Distance":119.2,"Elevation":611,"x":119.2,"y":611},{"Distance":119.3,"Elevation":608,"x":119.3,"y":608},{"Distance":119.4,"Elevation":611,"x":119.4,"y":611},{"Distance":119.5,"Elevation":612,"x":119.5,"y":612},{"Distance":119.6,"Elevation":614,"x":119.6,"y":614},{"Distance":119.7,"Elevation":615,"x":119.7,"y":615},{"Distance":119.8,"Elevation":613,"x":119.8,"y":613},{"Distance":119.9,"Elevation":611,"x":119.9,"y":611},{"Distance":120,"Elevation":602,"x":120,"y":602},{"Distance":120.1,"Elevation":593,"x":120.1,"y":593},{"Distance":120.2,"Elevation":588,"x":120.2,"y":588},{"Distance":120.3,"Elevation":588,"x":120.3,"y":588},{"Distance":120.4,"Elevation":586,"x":120.4,"y":586},{"Distance":120.5,"Elevation":583,"x":120.5,"y":583},{"Distance":120.6,"Elevation":579,"x":120.6,"y":579},{"Distance":120.7,"Elevation":579,"x":120.7,"y":579},{"Distance":120.8,"Elevation":578,"x":120.8,"y":578},{"Distance":120.9,"Elevation":576,"x":120.9,"y":576},{"Distance":121,"Elevation":575,"x":121,"y":575},{"Distance":121.1,"Elevation":579,"x":121.1,"y":579},{"Distance":121.2,"Elevation":574,"x":121.2,"y":574},{"Distance":121.3,"Elevation":570,"x":121.3,"y":570},{"Distance":121.4,"Elevation":565,"x":121.4,"y":565},{"Distance":121.5,"Elevation":562,"x":121.5,"y":562},{"Distance":121.6,"Elevation":560,"x":121.6,"y":560},{"Distance":121.7,"Elevation":559,"x":121.7,"y":559},{"Distance":121.8,"Elevation":556,"x":121.8,"y":556},{"Distance":121.9,"Elevation":554,"x":121.9,"y":554},{"Distance":122,"Elevation":546,"x":122,"y":546},{"Distance":122.1,"Elevation":542,"x":122.1,"y":542},{"Distance":122.2,"Elevation":536,"x":122.2,"y":536},{"Distance":122.3,"Elevation":531,"x":122.3,"y":531},{"Distance":122.4,"Elevation":529,"x":122.4,"y":529},{"Distance":122.5,"Elevation":529,"x":122.5,"y":529},{"Distance":122.6,"Elevation":518,"x":122.6,"y":518},{"Distance":122.7,"Elevation":515,"x":122.7,"y":515},{"Distance":122.8,"Elevation":515,"x":122.8,"y":515},{"Distance":122.9,"Elevation":515,"x":122.9,"y":515},{"Distance":123,"Elevation":514,"x":123,"y":514},{"Distance":123.1,"Elevation":513,"x":123.1,"y":513},{"Distance":123.2,"Elevation":506,"x":123.2,"y":506},{"Distance":123.3,"Elevation":498,"x":123.3,"y":498},{"Distance":123.4,"Elevation":496,"x":123.4,"y":496},{"Distance":123.5,"Elevation":494,"x":123.5,"y":494},{"Distance":123.6,"Elevation":483,"x":123.6,"y":483},{"Distance":123.7,"Elevation":479,"x":123.7,"y":479},{"Distance":123.8,"Elevation":476,"x":123.8,"y":476},{"Distance":123.9,"Elevation":470,"x":123.9,"y":470},{"Distance":124,"Elevation":466,"x":124,"y":466},{"Distance":124.1,"Elevation":460,"x":124.1,"y":460},{"Distance":124.2,"Elevation":457,"x":124.2,"y":457},{"Distance":124.3,"Elevation":451,"x":124.3,"y":451},{"Distance":124.4,"Elevation":445,"x":124.4,"y":445},{"Distance":124.5,"Elevation":443,"x":124.5,"y":443},{"Distance":124.6,"Elevation":435,"x":124.6,"y":435},{"Distance":124.7,"Elevation":432,"x":124.7,"y":432},{"Distance":124.8,"Elevation":426,"x":124.8,"y":426},{"Distance":124.9,"Elevation":421,"x":124.9,"y":421},{"Distance":125,"Elevation":418,"x":125,"y":418},{"Distance":125.1,"Elevation":414,"x":125.1,"y":414},{"Distance":125.2,"Elevation":408,"x":125.2,"y":408},{"Distance":125.3,"Elevation":405,"x":125.3,"y":405},{"Distance":125.4,"Elevation":403,"x":125.4,"y":403},{"Distance":125.5,"Elevation":394,"x":125.5,"y":394},{"Distance":125.6,"Elevation":386,"x":125.6,"y":386},{"Distance":125.7,"Elevation":379,"x":125.7,"y":379},{"Distance":125.8,"Elevation":361,"x":125.8,"y":361},{"Distance":125.9,"Elevation":358,"x":125.9,"y":358},{"Distance":126,"Elevation":366,"x":126,"y":366},{"Distance":126.1,"Elevation":372,"x":126.1,"y":372},{"Distance":126.2,"Elevation":372,"x":126.2,"y":372},{"Distance":126.3,"Elevation":374,"x":126.3,"y":374},{"Distance":126.4,"Elevation":379,"x":126.4,"y":379},{"Distance":126.5,"Elevation":382,"x":126.5,"y":382},{"Distance":126.6,"Elevation":385,"x":126.6,"y":385},{"Distance":126.7,"Elevation":388,"x":126.7,"y":388},{"Distance":126.8,"Elevation":390,"x":126.8,"y":390},{"Distance":126.9,"Elevation":393,"x":126.9,"y":393},{"Distance":127,"Elevation":394,"x":127,"y":394},{"Distance":127.1,"Elevation":393,"x":127.1,"y":393},{"Distance":127.2,"Elevation":391,"x":127.2,"y":391},{"Distance":127.3,"Elevation":387,"x":127.3,"y":387},{"Distance":127.4,"Elevation":382,"x":127.4,"y":382},{"Distance":127.5,"Elevation":378,"x":127.5,"y":378},{"Distance":127.6,"Elevation":374,"x":127.6,"y":374},{"Distance":127.7,"Elevation":370,"x":127.7,"y":370},{"Distance":127.8,"Elevation":367,"x":127.8,"y":367},{"Distance":127.9,"Elevation":366,"x":127.9,"y":366},{"Distance":128,"Elevation":364,"x":128,"y":364},{"Distance":128.1,"Elevation":364,"x":128.1,"y":364},{"Distance":128.2,"Elevation":362,"x":128.2,"y":362},{"Distance":128.3,"Elevation":362,"x":128.3,"y":362},{"Distance":128.4,"Elevation":360,"x":128.4,"y":360},{"Distance":128.5,"Elevation":357,"x":128.5,"y":357},{"Distance":128.6,"Elevation":354,"x":128.6,"y":354},{"Distance":128.7,"Elevation":351,"x":128.7,"y":351},{"Distance":128.8,"Elevation":350,"x":128.8,"y":350},{"Distance":128.9,"Elevation":351,"x":128.9,"y":351},{"Distance":129,"Elevation":350,"x":129,"y":350},{"Distance":129.1,"Elevation":350,"x":129.1,"y":350},{"Distance":129.2,"Elevation":351,"x":129.2,"y":351},{"Distance":129.3,"Elevation":352,"x":129.3,"y":352},{"Distance":129.4,"Elevation":352,"x":129.4,"y":352},{"Distance":129.5,"Elevation":352,"x":129.5,"y":352},{"Distance":129.6,"Elevation":351,"x":129.6,"y":351},{"Distance":129.7,"Elevation":352,"x":129.7,"y":352},{"Distance":129.8,"Elevation":352,"x":129.8,"y":352},{"Distance":129.9,"Elevation":353,"x":129.9,"y":353},{"Distance":130,"Elevation":348,"x":130,"y":348},{"Distance":130.1,"Elevation":346,"x":130.1,"y":346},{"Distance":130.2,"Elevation":344,"x":130.2,"y":344},{"Distance":130.3,"Elevation":343,"x":130.3,"y":343},{"Distance":130.4,"Elevation":343,"x":130.4,"y":343},{"Distance":130.5,"Elevation":342,"x":130.5,"y":342},{"Distance":130.6,"Elevation":342,"x":130.6,"y":342},{"Distance":130.7,"Elevation":345,"x":130.7,"y":345},{"Distance":130.8,"Elevation":349,"x":130.8,"y":349},{"Distance":130.9,"Elevation":341,"x":130.9,"y":341},{"Distance":131,"Elevation":345,"x":131,"y":345},{"Distance":131.1,"Elevation":348,"x":131.1,"y":348},{"Distance":131.2,"Elevation":364,"x":131.2,"y":364},{"Distance":131.3,"Elevation":374,"x":131.3,"y":374},{"Distance":131.4,"Elevation":388,"x":131.4,"y":388},{"Distance":131.5,"Elevation":379,"x":131.5,"y":379},{"Distance":131.6,"Elevation":380,"x":131.6,"y":380},{"Distance":131.7,"Elevation":387,"x":131.7,"y":387},{"Distance":131.8,"Elevation":394,"x":131.8,"y":394},{"Distance":131.9,"Elevation":404,"x":131.9,"y":404},{"Distance":132,"Elevation":411,"x":132,"y":411},{"Distance":132.1,"Elevation":416,"x":132.1,"y":416},{"Distance":132.2,"Elevation":426,"x":132.2,"y":426},{"Distance":132.3,"Elevation":428,"x":132.3,"y":428},{"Distance":132.4,"Elevation":430,"x":132.4,"y":430},{"Distance":132.5,"Elevation":438,"x":132.5,"y":438},{"Distance":132.6,"Elevation":447,"x":132.6,"y":447},{"Distance":132.7,"Elevation":450,"x":132.7,"y":450},{"Distance":132.8,"Elevation":454,"x":132.8,"y":454},{"Distance":132.9,"Elevation":460,"x":132.9,"y":460},{"Distance":133,"Elevation":468,"x":133,"y":468},{"Distance":133.1,"Elevation":469,"x":133.1,"y":469},{"Distance":133.2,"Elevation":474,"x":133.2,"y":474},{"Distance":133.3,"Elevation":478,"x":133.3,"y":478},{"Distance":133.4,"Elevation":485,"x":133.4,"y":485},{"Distance":133.5,"Elevation":488,"x":133.5,"y":488},{"Distance":133.6,"Elevation":494,"x":133.6,"y":494},{"Distance":133.7,"Elevation":497,"x":133.7,"y":497},{"Distance":133.8,"Elevation":502,"x":133.8,"y":502},{"Distance":133.9,"Elevation":510,"x":133.9,"y":510},{"Distance":134,"Elevation":513,"x":134,"y":513},{"Distance":134.1,"Elevation":516,"x":134.1,"y":516},{"Distance":134.2,"Elevation":523,"x":134.2,"y":523},{"Distance":134.3,"Elevation":527,"x":134.3,"y":527},{"Distance":134.4,"Elevation":531,"x":134.4,"y":531},{"Distance":134.5,"Elevation":540,"x":134.5,"y":540},{"Distance":134.6,"Elevation":544,"x":134.6,"y":544},{"Distance":134.7,"Elevation":549,"x":134.7,"y":549},{"Distance":134.8,"Elevation":554,"x":134.8,"y":554},{"Distance":134.9,"Elevation":557,"x":134.9,"y":557},{"Distance":135,"Elevation":564,"x":135,"y":564},{"Distance":135.1,"Elevation":566,"x":135.1,"y":566},{"Distance":135.2,"Elevation":571,"x":135.2,"y":571},{"Distance":135.3,"Elevation":577,"x":135.3,"y":577},{"Distance":135.4,"Elevation":581,"x":135.4,"y":581},{"Distance":135.5,"Elevation":584,"x":135.5,"y":584},{"Distance":135.6,"Elevation":591,"x":135.6,"y":591},{"Distance":135.7,"Elevation":596,"x":135.7,"y":596},{"Distance":135.8,"Elevation":600,"x":135.8,"y":600},{"Distance":135.9,"Elevation":608,"x":135.9,"y":608},{"Distance":136,"Elevation":610,"x":136,"y":610},{"Distance":136.1,"Elevation":616,"x":136.1,"y":616},{"Distance":136.2,"Elevation":621,"x":136.2,"y":621},{"Distance":136.3,"Elevation":627,"x":136.3,"y":627},{"Distance":136.4,"Elevation":632,"x":136.4,"y":632},{"Distance":136.5,"Elevation":644,"x":136.5,"y":644},{"Distance":136.6,"Elevation":649,"x":136.6,"y":649},{"Distance":136.7,"Elevation":656,"x":136.7,"y":656},{"Distance":136.8,"Elevation":660,"x":136.8,"y":660},{"Distance":136.9,"Elevation":663,"x":136.9,"y":663},{"Distance":137,"Elevation":668,"x":137,"y":668},{"Distance":137.1,"Elevation":672,"x":137.1,"y":672},{"Distance":137.2,"Elevation":674,"x":137.2,"y":674},{"Distance":137.3,"Elevation":677,"x":137.3,"y":677},{"Distance":137.4,"Elevation":680,"x":137.4,"y":680},{"Distance":137.5,"Elevation":683,"x":137.5,"y":683},{"Distance":137.6,"Elevation":689,"x":137.6,"y":689},{"Distance":137.7,"Elevation":691,"x":137.7,"y":691},{"Distance":137.8,"Elevation":697,"x":137.8,"y":697},{"Distance":137.9,"Elevation":699,"x":137.9,"y":699},{"Distance":138,"Elevation":702,"x":138,"y":702},{"Distance":138.1,"Elevation":707,"x":138.1,"y":707},{"Distance":138.2,"Elevation":712,"x":138.2,"y":712},{"Distance":138.3,"Elevation":716,"x":138.3,"y":716},{"Distance":138.4,"Elevation":720,"x":138.4,"y":720},{"Distance":138.5,"Elevation":728,"x":138.5,"y":728},{"Distance":138.6,"Elevation":731,"x":138.6,"y":731},{"Distance":138.7,"Elevation":735,"x":138.7,"y":735},{"Distance":138.8,"Elevation":740,"x":138.8,"y":740},{"Distance":138.9,"Elevation":742,"x":138.9,"y":742},{"Distance":139,"Elevation":746,"x":139,"y":746},{"Distance":139.1,"Elevation":750,"x":139.1,"y":750},{"Distance":139.2,"Elevation":752,"x":139.2,"y":752},{"Distance":139.3,"Elevation":760,"x":139.3,"y":760},{"Distance":139.4,"Elevation":760,"x":139.4,"y":760},{"Distance":139.5,"Elevation":761,"x":139.5,"y":761},{"Distance":139.6,"Elevation":757,"x":139.6,"y":757},{"Distance":139.7,"Elevation":756,"x":139.7,"y":756},{"Distance":139.8,"Elevation":755,"x":139.8,"y":755},{"Distance":139.9,"Elevation":754,"x":139.9,"y":754},{"Distance":140,"Elevation":755,"x":140,"y":755},{"Distance":140.1,"Elevation":756,"x":140.1,"y":756},{"Distance":140.2,"Elevation":753,"x":140.2,"y":753},{"Distance":140.3,"Elevation":746,"x":140.3,"y":746},{"Distance":140.4,"Elevation":743,"x":140.4,"y":743},{"Distance":140.5,"Elevation":734,"x":140.5,"y":734},{"Distance":140.6,"Elevation":740,"x":140.6,"y":740},{"Distance":140.7,"Elevation":746,"x":140.7,"y":746},{"Distance":140.8,"Elevation":748,"x":140.8,"y":748},{"Distance":140.9,"Elevation":747,"x":140.9,"y":747},{"Distance":141,"Elevation":743,"x":141,"y":743},{"Distance":141.1,"Elevation":742,"x":141.1,"y":742},{"Distance":141.2,"Elevation":742,"x":141.2,"y":742},{"Distance":141.3,"Elevation":740,"x":141.3,"y":740},{"Distance":141.4,"Elevation":739,"x":141.4,"y":739},{"Distance":141.5,"Elevation":741,"x":141.5,"y":741},{"Distance":141.6,"Elevation":757,"x":141.6,"y":757},{"Distance":141.7,"Elevation":756,"x":141.7,"y":756},{"Distance":141.8,"Elevation":751,"x":141.8,"y":751},{"Distance":141.9,"Elevation":747,"x":141.9,"y":747},{"Distance":142,"Elevation":743,"x":142,"y":743},{"Distance":142.1,"Elevation":738,"x":142.1,"y":738},{"Distance":142.2,"Elevation":739,"x":142.2,"y":739},{"Distance":142.3,"Elevation":742,"x":142.3,"y":742},{"Distance":142.4,"Elevation":749,"x":142.4,"y":749},{"Distance":142.5,"Elevation":750,"x":142.5,"y":750},{"Distance":142.6,"Elevation":756,"x":142.6,"y":756},{"Distance":142.7,"Elevation":760,"x":142.7,"y":760},{"Distance":142.8,"Elevation":762,"x":142.8,"y":762},{"Distance":142.9,"Elevation":765,"x":142.9,"y":765},{"Distance":143,"Elevation":771,"x":143,"y":771},{"Distance":143.1,"Elevation":775,"x":143.1,"y":775},{"Distance":143.2,"Elevation":786,"x":143.2,"y":786},{"Distance":143.3,"Elevation":791,"x":143.3,"y":791},{"Distance":143.4,"Elevation":797,"x":143.4,"y":797},{"Distance":143.5,"Elevation":801,"x":143.5,"y":801},{"Distance":143.6,"Elevation":801,"x":143.6,"y":801},{"Distance":143.7,"Elevation":793,"x":143.7,"y":793},{"Distance":143.8,"Elevation":786,"x":143.8,"y":786},{"Distance":143.9,"Elevation":782,"x":143.9,"y":782},{"Distance":144,"Elevation":780,"x":144,"y":780},{"Distance":144.1,"Elevation":778,"x":144.1,"y":778},{"Distance":144.2,"Elevation":776,"x":144.2,"y":776},{"Distance":144.3,"Elevation":765,"x":144.3,"y":765},{"Distance":144.4,"Elevation":757,"x":144.4,"y":757},{"Distance":144.5,"Elevation":753,"x":144.5,"y":753},{"Distance":144.6,"Elevation":750,"x":144.6,"y":750},{"Distance":144.7,"Elevation":748,"x":144.7,"y":748},{"Distance":144.8,"Elevation":745,"x":144.8,"y":745},{"Distance":144.9,"Elevation":738,"x":144.9,"y":738},{"Distance":145,"Elevation":735,"x":145,"y":735},{"Distance":145.1,"Elevation":732,"x":145.1,"y":732},{"Distance":145.2,"Elevation":726,"x":145.2,"y":726},{"Distance":145.3,"Elevation":724,"x":145.3,"y":724},{"Distance":145.4,"Elevation":720,"x":145.4,"y":720},{"Distance":145.5,"Elevation":712,"x":145.5,"y":712},{"Distance":145.6,"Elevation":710,"x":145.6,"y":710},{"Distance":145.7,"Elevation":705,"x":145.7,"y":705},{"Distance":145.8,"Elevation":697,"x":145.8,"y":697},{"Distance":145.9,"Elevation":691,"x":145.9,"y":691},{"Distance":146,"Elevation":686,"x":146,"y":686},{"Distance":146.1,"Elevation":681,"x":146.1,"y":681},{"Distance":146.2,"Elevation":679,"x":146.2,"y":679},{"Distance":146.3,"Elevation":680,"x":146.3,"y":680},{"Distance":146.4,"Elevation":678,"x":146.4,"y":678},{"Distance":146.5,"Elevation":673,"x":146.5,"y":673},{"Distance":146.6,"Elevation":665,"x":146.6,"y":665},{"Distance":146.7,"Elevation":657,"x":146.7,"y":657},{"Distance":146.8,"Elevation":655,"x":146.8,"y":655},{"Distance":146.9,"Elevation":647,"x":146.9,"y":647},{"Distance":147,"Elevation":640,"x":147,"y":640},{"Distance":147.1,"Elevation":634,"x":147.1,"y":634},{"Distance":147.2,"Elevation":621,"x":147.2,"y":621},{"Distance":147.3,"Elevation":621,"x":147.3,"y":621},{"Distance":147.4,"Elevation":613,"x":147.4,"y":613},{"Distance":147.5,"Elevation":608,"x":147.5,"y":608},{"Distance":147.6,"Elevation":598,"x":147.6,"y":598},{"Distance":147.7,"Elevation":594,"x":147.7,"y":594},{"Distance":147.8,"Elevation":588,"x":147.8,"y":588},{"Distance":147.9,"Elevation":578,"x":147.9,"y":578},{"Distance":148,"Elevation":565,"x":148,"y":565},{"Distance":148.1,"Elevation":559,"x":148.1,"y":559},{"Distance":148.2,"Elevation":558,"x":148.2,"y":558},{"Distance":148.3,"Elevation":556,"x":148.3,"y":556},{"Distance":148.4,"Elevation":556,"x":148.4,"y":556},{"Distance":148.5,"Elevation":555,"x":148.5,"y":555},{"Distance":148.6,"Elevation":556,"x":148.6,"y":556},{"Distance":148.7,"Elevation":557,"x":148.7,"y":557},{"Distance":148.8,"Elevation":557,"x":148.8,"y":557},{"Distance":148.9,"Elevation":565,"x":148.9,"y":565},{"Distance":149,"Elevation":570,"x":149,"y":570},{"Distance":149.1,"Elevation":575,"x":149.1,"y":575},{"Distance":149.2,"Elevation":583,"x":149.2,"y":583},{"Distance":149.3,"Elevation":591,"x":149.3,"y":591},{"Distance":149.4,"Elevation":599,"x":149.4,"y":599},{"Distance":149.5,"Elevation":603,"x":149.5,"y":603},{"Distance":149.6,"Elevation":609,"x":149.6,"y":609},{"Distance":149.7,"Elevation":613,"x":149.7,"y":613},{"Distance":149.8,"Elevation":618,"x":149.8,"y":618},{"Distance":149.9,"Elevation":624,"x":149.9,"y":624},{"Distance":150,"Elevation":630,"x":150,"y":630},{"Distance":150.1,"Elevation":635,"x":150.1,"y":635},{"Distance":150.2,"Elevation":643,"x":150.2,"y":643},{"Distance":150.3,"Elevation":652,"x":150.3,"y":652},{"Distance":150.4,"Elevation":658,"x":150.4,"y":658},{"Distance":150.5,"Elevation":669,"x":150.5,"y":669},{"Distance":150.6,"Elevation":680,"x":150.6,"y":680},{"Distance":150.7,"Elevation":684,"x":150.7,"y":684},{"Distance":150.8,"Elevation":692,"x":150.8,"y":692},{"Distance":150.9,"Elevation":696,"x":150.9,"y":696},{"Distance":151,"Elevation":698,"x":151,"y":698},{"Distance":151.1,"Elevation":698,"x":151.1,"y":698},{"Distance":151.2,"Elevation":696,"x":151.2,"y":696},{"Distance":151.3,"Elevation":695,"x":151.3,"y":695},{"Distance":151.4,"Elevation":696,"x":151.4,"y":696},{"Distance":151.5,"Elevation":699,"x":151.5,"y":699},{"Distance":151.6,"Elevation":701,"x":151.6,"y":701},{"Distance":151.7,"Elevation":706,"x":151.7,"y":706},{"Distance":151.8,"Elevation":707,"x":151.8,"y":707},{"Distance":151.9,"Elevation":707,"x":151.9,"y":707},{"Distance":152,"Elevation":703,"x":152,"y":703},{"Distance":152.1,"Elevation":702,"x":152.1,"y":702},{"Distance":152.2,"Elevation":700,"x":152.2,"y":700},{"Distance":152.3,"Elevation":700,"x":152.3,"y":700},{"Distance":152.4,"Elevation":705,"x":152.4,"y":705},{"Distance":152.5,"Elevation":705,"x":152.5,"y":705},{"Distance":152.6,"Elevation":715,"x":152.6,"y":715},{"Distance":152.7,"Elevation":718,"x":152.7,"y":718},{"Distance":152.8,"Elevation":721,"x":152.8,"y":721},{"Distance":152.9,"Elevation":723,"x":152.9,"y":723},{"Distance":153,"Elevation":725,"x":153,"y":725},{"Distance":153.1,"Elevation":724,"x":153.1,"y":724},{"Distance":153.2,"Elevation":722,"x":153.2,"y":722},{"Distance":153.3,"Elevation":720,"x":153.3,"y":720},{"Distance":153.4,"Elevation":716,"x":153.4,"y":716},{"Distance":153.5,"Elevation":710,"x":153.5,"y":710},{"Distance":153.6,"Elevation":700,"x":153.6,"y":700},{"Distance":153.7,"Elevation":696,"x":153.7,"y":696},{"Distance":153.8,"Elevation":691,"x":153.8,"y":691},{"Distance":153.9,"Elevation":682,"x":153.9,"y":682},{"Distance":154,"Elevation":676,"x":154,"y":676},{"Distance":154.1,"Elevation":670,"x":154.1,"y":670},{"Distance":154.2,"Elevation":664,"x":154.2,"y":664},{"Distance":154.3,"Elevation":658,"x":154.3,"y":658},{"Distance":154.4,"Elevation":648,"x":154.4,"y":648},{"Distance":154.5,"Elevation":643,"x":154.5,"y":643},{"Distance":154.6,"Elevation":645,"x":154.6,"y":645},{"Distance":154.7,"Elevation":645,"x":154.7,"y":645},{"Distance":154.8,"Elevation":646,"x":154.8,"y":646},{"Distance":154.9,"Elevation":630,"x":154.9,"y":630},{"Distance":155,"Elevation":625,"x":155,"y":625},{"Distance":155.1,"Elevation":620,"x":155.1,"y":620},{"Distance":155.2,"Elevation":614,"x":155.2,"y":614},{"Distance":155.3,"Elevation":605,"x":155.3,"y":605},{"Distance":155.4,"Elevation":600,"x":155.4,"y":600},{"Distance":155.5,"Elevation":593,"x":155.5,"y":593},{"Distance":155.6,"Elevation":587,"x":155.6,"y":587},{"Distance":155.7,"Elevation":581,"x":155.7,"y":581},{"Distance":155.8,"Elevation":576,"x":155.8,"y":576},{"Distance":155.9,"Elevation":569,"x":155.9,"y":569},{"Distance":156,"Elevation":566,"x":156,"y":566},{"Distance":156.1,"Elevation":559,"x":156.1,"y":559},{"Distance":156.2,"Elevation":557,"x":156.2,"y":557},{"Distance":156.3,"Elevation":551,"x":156.3,"y":551},{"Distance":156.4,"Elevation":548,"x":156.4,"y":548},{"Distance":156.5,"Elevation":544,"x":156.5,"y":544},{"Distance":156.6,"Elevation":542,"x":156.6,"y":542},{"Distance":156.7,"Elevation":540,"x":156.7,"y":540},{"Distance":156.8,"Elevation":537,"x":156.8,"y":537},{"Distance":156.9,"Elevation":540,"x":156.9,"y":540},{"Distance":157,"Elevation":542,"x":157,"y":542},{"Distance":157.1,"Elevation":541,"x":157.1,"y":541},{"Distance":157.2,"Elevation":540,"x":157.2,"y":540},{"Distance":157.3,"Elevation":538,"x":157.3,"y":538},{"Distance":157.4,"Elevation":536,"x":157.4,"y":536},{"Distance":157.5,"Elevation":532,"x":157.5,"y":532},{"Distance":157.6,"Elevation":523,"x":157.6,"y":523},{"Distance":157.7,"Elevation":519,"x":157.7,"y":519},{"Distance":157.8,"Elevation":515,"x":157.8,"y":515},{"Distance":157.9,"Elevation":509,"x":157.9,"y":509},{"Distance":158,"Elevation":503,"x":158,"y":503},{"Distance":158.1,"Elevation":499,"x":158.1,"y":499},{"Distance":158.2,"Elevation":491,"x":158.2,"y":491},{"Distance":158.3,"Elevation":485,"x":158.3,"y":485},{"Distance":158.4,"Elevation":478,"x":158.4,"y":478},{"Distance":158.5,"Elevation":477,"x":158.5,"y":477},{"Distance":158.6,"Elevation":474,"x":158.6,"y":474},{"Distance":158.7,"Elevation":471,"x":158.7,"y":471},{"Distance":158.8,"Elevation":469,"x":158.8,"y":469},{"Distance":158.9,"Elevation":464,"x":158.9,"y":464},{"Distance":159,"Elevation":462,"x":159,"y":462},{"Distance":159.1,"Elevation":456,"x":159.1,"y":456},{"Distance":159.2,"Elevation":454,"x":159.2,"y":454},{"Distance":159.3,"Elevation":445,"x":159.3,"y":445},{"Distance":159.4,"Elevation":424,"x":159.4,"y":424},{"Distance":159.5,"Elevation":427,"x":159.5,"y":427},{"Distance":159.6,"Elevation":425,"x":159.6,"y":425},{"Distance":159.7,"Elevation":422,"x":159.7,"y":422},{"Distance":159.8,"Elevation":419,"x":159.8,"y":419},{"Distance":159.9,"Elevation":418,"x":159.9,"y":418},{"Distance":160,"Elevation":417,"x":160,"y":417},{"Distance":160.1,"Elevation":423,"x":160.1,"y":423},{"Distance":160.2,"Elevation":436,"x":160.2,"y":436},{"Distance":160.3,"Elevation":434,"x":160.3,"y":434},{"Distance":160.4,"Elevation":426,"x":160.4,"y":426},{"Distance":160.5,"Elevation":401,"x":160.5,"y":401},{"Distance":160.6,"Elevation":417,"x":160.6,"y":417},{"Distance":160.7,"Elevation":418,"x":160.7,"y":418},{"Distance":160.8,"Elevation":419,"x":160.8,"y":419},{"Distance":160.9,"Elevation":419,"x":160.9,"y":419},{"Distance":161,"Elevation":412,"x":161,"y":412},{"Distance":161.1,"Elevation":417,"x":161.1,"y":417},{"Distance":161.2,"Elevation":425,"x":161.2,"y":425},{"Distance":161.3,"Elevation":430,"x":161.3,"y":430},{"Distance":161.4,"Elevation":432,"x":161.4,"y":432},{"Distance":161.5,"Elevation":417,"x":161.5,"y":417},{"Distance":161.6,"Elevation":423,"x":161.6,"y":423},{"Distance":161.7,"Elevation":425,"x":161.7,"y":425},{"Distance":161.8,"Elevation":409,"x":161.8,"y":409},{"Distance":161.9,"Elevation":399,"x":161.9,"y":399},{"Distance":162,"Elevation":427,"x":162,"y":427},{"Distance":162.1,"Elevation":425,"x":162.1,"y":425},{"Distance":162.2,"Elevation":414,"x":162.2,"y":414},{"Distance":162.3,"Elevation":421,"x":162.3,"y":421},{"Distance":162.4,"Elevation":424,"x":162.4,"y":424},{"Distance":162.5,"Elevation":426,"x":162.5,"y":426},{"Distance":162.6,"Elevation":417,"x":162.6,"y":417},{"Distance":162.7,"Elevation":405,"x":162.7,"y":405},{"Distance":162.8,"Elevation":411,"x":162.8,"y":411},{"Distance":162.9,"Elevation":403,"x":162.9,"y":403},{"Distance":163,"Elevation":405,"x":163,"y":405},{"Distance":163.1,"Elevation":410,"x":163.1,"y":410},{"Distance":163.2,"Elevation":412,"x":163.2,"y":412},{"Distance":163.3,"Elevation":413,"x":163.3,"y":413},{"Distance":163.4,"Elevation":415,"x":163.4,"y":415},{"Distance":163.5,"Elevation":406,"x":163.5,"y":406},{"Distance":163.6,"Elevation":407,"x":163.6,"y":407},{"Distance":163.7,"Elevation":408,"x":163.7,"y":408},{"Distance":163.8,"Elevation":412,"x":163.8,"y":412},{"Distance":163.9,"Elevation":417,"x":163.9,"y":417},{"Distance":164,"Elevation":426,"x":164,"y":426},{"Distance":164.1,"Elevation":431,"x":164.1,"y":431},{"Distance":164.2,"Elevation":482,"x":164.2,"y":482},{"Distance":164.3,"Elevation":478,"x":164.3,"y":478},{"Distance":164.4,"Elevation":471,"x":164.4,"y":471},{"Distance":164.5,"Elevation":463,"x":164.5,"y":463},{"Distance":164.6,"Elevation":457,"x":164.6,"y":457},{"Distance":164.7,"Elevation":452,"x":164.7,"y":452},{"Distance":164.8,"Elevation":456,"x":164.8,"y":456},{"Distance":164.9,"Elevation":463,"x":164.9,"y":463},{"Distance":165,"Elevation":471,"x":165,"y":471},{"Distance":165.1,"Elevation":470,"x":165.1,"y":470},{"Distance":165.2,"Elevation":471,"x":165.2,"y":471},{"Distance":165.3,"Elevation":474,"x":165.3,"y":474},{"Distance":165.4,"Elevation":494,"x":165.4,"y":494},{"Distance":165.5,"Elevation":506,"x":165.5,"y":506},{"Distance":165.6,"Elevation":515,"x":165.6,"y":515},{"Distance":165.7,"Elevation":520,"x":165.7,"y":520},{"Distance":165.8,"Elevation":534,"x":165.8,"y":534},{"Distance":165.9,"Elevation":520,"x":165.9,"y":520},{"Distance":166,"Elevation":536,"x":166,"y":536},{"Distance":166.1,"Elevation":529,"x":166.1,"y":529},{"Distance":166.2,"Elevation":524,"x":166.2,"y":524},{"Distance":166.3,"Elevation":515,"x":166.3,"y":515},{"Distance":166.4,"Elevation":520,"x":166.4,"y":520},{"Distance":166.5,"Elevation":526,"x":166.5,"y":526},{"Distance":166.6,"Elevation":531,"x":166.6,"y":531},{"Distance":166.7,"Elevation":551,"x":166.7,"y":551},{"Distance":166.8,"Elevation":553,"x":166.8,"y":553},{"Distance":166.9,"Elevation":555,"x":166.9,"y":555},{"Distance":167,"Elevation":559,"x":167,"y":559},{"Distance":167.1,"Elevation":562,"x":167.1,"y":562},{"Distance":167.2,"Elevation":564,"x":167.2,"y":564},{"Distance":167.3,"Elevation":567,"x":167.3,"y":567},{"Distance":167.4,"Elevation":571,"x":167.4,"y":571},{"Distance":167.5,"Elevation":574,"x":167.5,"y":574},{"Distance":167.6,"Elevation":576,"x":167.6,"y":576},{"Distance":167.7,"Elevation":596,"x":167.7,"y":596},{"Distance":167.8,"Elevation":607,"x":167.8,"y":607},{"Distance":167.9,"Elevation":623,"x":167.9,"y":623},{"Distance":168,"Elevation":645,"x":168,"y":645},{"Distance":168.1,"Elevation":667,"x":168.1,"y":667},{"Distance":168.2,"Elevation":685,"x":168.2,"y":685},{"Distance":168.3,"Elevation":691,"x":168.3,"y":691},{"Distance":168.4,"Elevation":709,"x":168.4,"y":709},{"Distance":168.5,"Elevation":702,"x":168.5,"y":702},{"Distance":168.6,"Elevation":692,"x":168.6,"y":692},{"Distance":168.7,"Elevation":692,"x":168.7,"y":692},{"Distance":168.8,"Elevation":696,"x":168.8,"y":696},{"Distance":168.9,"Elevation":732,"x":168.9,"y":732},{"Distance":169,"Elevation":746,"x":169,"y":746},{"Distance":169.1,"Elevation":758,"x":169.1,"y":758},{"Distance":169.2,"Elevation":761,"x":169.2,"y":761},{"Distance":169.3,"Elevation":763,"x":169.3,"y":763},{"Distance":169.4,"Elevation":765,"x":169.4,"y":765},{"Distance":169.5,"Elevation":768,"x":169.5,"y":768},{"Distance":169.6,"Elevation":783,"x":169.6,"y":783},{"Distance":169.7,"Elevation":816,"x":169.7,"y":816},{"Distance":169.8,"Elevation":815,"x":169.8,"y":815},{"Distance":169.9,"Elevation":817,"x":169.9,"y":817},{"Distance":170,"Elevation":821,"x":170,"y":821},{"Distance":170.1,"Elevation":825,"x":170.1,"y":825},{"Distance":170.2,"Elevation":827,"x":170.2,"y":827},{"Distance":170.3,"Elevation":828,"x":170.3,"y":828},{"Distance":170.4,"Elevation":830,"x":170.4,"y":830},{"Distance":170.5,"Elevation":829,"x":170.5,"y":829},{"Distance":170.6,"Elevation":827,"x":170.6,"y":827},{"Distance":170.7,"Elevation":827,"x":170.7,"y":827},{"Distance":170.8,"Elevation":828,"x":170.8,"y":828},{"Distance":170.9,"Elevation":837,"x":170.9,"y":837},{"Distance":171,"Elevation":845,"x":171,"y":845},{"Distance":171.1,"Elevation":850,"x":171.1,"y":850},{"Distance":171.2,"Elevation":856,"x":171.2,"y":856},{"Distance":171.3,"Elevation":864,"x":171.3,"y":864},{"Distance":171.4,"Elevation":867,"x":171.4,"y":867},{"Distance":171.5,"Elevation":876,"x":171.5,"y":876},{"Distance":171.6,"Elevation":880,"x":171.6,"y":880},{"Distance":171.7,"Elevation":888,"x":171.7,"y":888},{"Distance":171.8,"Elevation":900,"x":171.8,"y":900},{"Distance":171.9,"Elevation":905,"x":171.9,"y":905},{"Distance":172,"Elevation":910,"x":172,"y":910},{"Distance":172.1,"Elevation":922,"x":172.1,"y":922},{"Distance":172.2,"Elevation":925,"x":172.2,"y":925},{"Distance":172.3,"Elevation":931,"x":172.3,"y":931},{"Distance":172.4,"Elevation":939,"x":172.4,"y":939},{"Distance":172.5,"Elevation":957,"x":172.5,"y":957},{"Distance":172.6,"Elevation":966,"x":172.6,"y":966},{"Distance":172.7,"Elevation":980,"x":172.7,"y":980},{"Distance":172.8,"Elevation":991,"x":172.8,"y":991},{"Distance":172.9,"Elevation":998,"x":172.9,"y":998},{"Distance":173,"Elevation":1008,"x":173,"y":1008},{"Distance":173.1,"Elevation":1021,"x":173.1,"y":1021},{"Distance":173.2,"Elevation":1031,"x":173.2,"y":1031},{"Distance":173.3,"Elevation":1045,"x":173.3,"y":1045},{"Distance":173.4,"Elevation":1059,"x":173.4,"y":1059},{"Distance":173.5,"Elevation":1065,"x":173.5,"y":1065},{"Distance":173.6,"Elevation":1078,"x":173.6,"y":1078},{"Distance":173.7,"Elevation":1094,"x":173.7,"y":1094},{"Distance":173.8,"Elevation":1092,"x":173.8,"y":1092},{"Distance":173.9,"Elevation":1096,"x":173.9,"y":1096},{"Distance":174,"Elevation":1098,"x":174,"y":1098},{"Distance":174.1,"Elevation":1101,"x":174.1,"y":1101},{"Distance":174.2,"Elevation":1104,"x":174.2,"y":1104},{"Distance":174.3,"Elevation":1107,"x":174.3,"y":1107},{"Distance":174.4,"Elevation":1110,"x":174.4,"y":1110},{"Distance":174.5,"Elevation":1113,"x":174.5,"y":1113},{"Distance":174.6,"Elevation":1114,"x":174.6,"y":1114},{"Distance":174.7,"Elevation":1116,"x":174.7,"y":1116},{"Distance":174.8,"Elevation":1119,"x":174.8,"y":1119},{"Distance":174.9,"Elevation":1122,"x":174.9,"y":1122},{"Distance":175,"Elevation":1125,"x":175,"y":1125},{"Distance":175.1,"Elevation":1128,"x":175.1,"y":1128},{"Distance":175.2,"Elevation":1130,"x":175.2,"y":1130},{"Distance":175.3,"Elevation":1134,"x":175.3,"y":1134},{"Distance":175.4,"Elevation":1137,"x":175.4,"y":1137},{"Distance":175.5,"Elevation":1142,"x":175.5,"y":1142},{"Distance":175.6,"Elevation":1148,"x":175.6,"y":1148},{"Distance":175.7,"Elevation":1155,"x":175.7,"y":1155},{"Distance":175.8,"Elevation":1162,"x":175.8,"y":1162},{"Distance":175.9,"Elevation":1174,"x":175.9,"y":1174},{"Distance":176,"Elevation":1183,"x":176,"y":1183},{"Distance":176.1,"Elevation":1191,"x":176.1,"y":1191},{"Distance":176.2,"Elevation":1196,"x":176.2,"y":1196},{"Distance":176.3,"Elevation":1198,"x":176.3,"y":1198},{"Distance":176.4,"Elevation":1200,"x":176.4,"y":1200},{"Distance":176.5,"Elevation":1189,"x":176.5,"y":1189},{"Distance":176.6,"Elevation":1183,"x":176.6,"y":1183},{"Distance":176.7,"Elevation":1180,"x":176.7,"y":1180},{"Distance":176.8,"Elevation":1178,"x":176.8,"y":1178},{"Distance":176.9,"Elevation":1173,"x":176.9,"y":1173},{"Distance":177,"Elevation":1171,"x":177,"y":1171},{"Distance":177.1,"Elevation":1167,"x":177.1,"y":1167},{"Distance":177.2,"Elevation":1165,"x":177.2,"y":1165},{"Distance":177.3,"Elevation":1165,"x":177.3,"y":1165},{"Distance":177.4,"Elevation":1165,"x":177.4,"y":1165},{"Distance":177.5,"Elevation":1165,"x":177.5,"y":1165},{"Distance":177.6,"Elevation":1164,"x":177.6,"y":1164},{"Distance":177.7,"Elevation":1164,"x":177.7,"y":1164},{"Distance":177.8,"Elevation":1164,"x":177.8,"y":1164},{"Distance":177.9,"Elevation":1166,"x":177.9,"y":1166},{"Distance":178,"Elevation":1167,"x":178,"y":1167},{"Distance":178.1,"Elevation":1170,"x":178.1,"y":1170},{"Distance":178.2,"Elevation":1177,"x":178.2,"y":1177},{"Distance":178.3,"Elevation":1174,"x":178.3,"y":1174},{"Distance":178.4,"Elevation":1166,"x":178.4,"y":1166},{"Distance":178.5,"Elevation":1166,"x":178.5,"y":1166},{"Distance":178.6,"Elevation":1164,"x":178.6,"y":1164},{"Distance":178.7,"Elevation":1162,"x":178.7,"y":1162},{"Distance":178.8,"Elevation":1160,"x":178.8,"y":1160},{"Distance":178.9,"Elevation":1155,"x":178.9,"y":1155},{"Distance":179,"Elevation":1152,"x":179,"y":1152},{"Distance":179.1,"Elevation":1151,"x":179.1,"y":1151},{"Distance":179.2,"Elevation":1151,"x":179.2,"y":1151},{"Distance":179.3,"Elevation":1146,"x":179.3,"y":1146},{"Distance":179.4,"Elevation":1144,"x":179.4,"y":1144},{"Distance":179.5,"Elevation":1147,"x":179.5,"y":1147},{"Distance":179.6,"Elevation":1151,"x":179.6,"y":1151},{"Distance":179.7,"Elevation":1154,"x":179.7,"y":1154},{"Distance":179.8,"Elevation":1153,"x":179.8,"y":1153},{"Distance":179.9,"Elevation":1154,"x":179.9,"y":1154},{"Distance":180,"Elevation":1153,"x":180,"y":1153},{"Distance":180.1,"Elevation":1150,"x":180.1,"y":1150},{"Distance":180.2,"Elevation":1147,"x":180.2,"y":1147},{"Distance":180.3,"Elevation":1146,"x":180.3,"y":1146},{"Distance":180.4,"Elevation":1144,"x":180.4,"y":1144},{"Distance":180.5,"Elevation":1142,"x":180.5,"y":1142},{"Distance":180.6,"Elevation":1140,"x":180.6,"y":1140},{"Distance":180.7,"Elevation":1135,"x":180.7,"y":1135},{"Distance":180.8,"Elevation":1125,"x":180.8,"y":1125},{"Distance":180.9,"Elevation":1121,"x":180.9,"y":1121},{"Distance":181,"Elevation":1113,"x":181,"y":1113},{"Distance":181.1,"Elevation":1107,"x":181.1,"y":1107},{"Distance":181.2,"Elevation":1098,"x":181.2,"y":1098},{"Distance":181.3,"Elevation":1094,"x":181.3,"y":1094},{"Distance":181.4,"Elevation":1087,"x":181.4,"y":1087},{"Distance":181.5,"Elevation":1084,"x":181.5,"y":1084},{"Distance":181.6,"Elevation":1082,"x":181.6,"y":1082},{"Distance":181.7,"Elevation":1078,"x":181.7,"y":1078},{"Distance":181.8,"Elevation":1073,"x":181.8,"y":1073},{"Distance":181.9,"Elevation":1068,"x":181.9,"y":1068},{"Distance":182,"Elevation":1063,"x":182,"y":1063},{"Distance":182.1,"Elevation":1061,"x":182.1,"y":1061},{"Distance":182.2,"Elevation":1060,"x":182.2,"y":1060},{"Distance":182.3,"Elevation":1061,"x":182.3,"y":1061},{"Distance":182.4,"Elevation":1065,"x":182.4,"y":1065},{"Distance":182.5,"Elevation":1069,"x":182.5,"y":1069},{"Distance":182.6,"Elevation":1072,"x":182.6,"y":1072},{"Distance":182.7,"Elevation":1076,"x":182.7,"y":1076},{"Distance":182.8,"Elevation":1084,"x":182.8,"y":1084},{"Distance":182.9,"Elevation":1098,"x":182.9,"y":1098},{"Distance":183,"Elevation":1110,"x":183,"y":1110},{"Distance":183.1,"Elevation":1116,"x":183.1,"y":1116},{"Distance":183.2,"Elevation":1113,"x":183.2,"y":1113},{"Distance":183.3,"Elevation":1116,"x":183.3,"y":1116},{"Distance":183.4,"Elevation":1122,"x":183.4,"y":1122},{"Distance":183.5,"Elevation":1125,"x":183.5,"y":1125},{"Distance":183.6,"Elevation":1133,"x":183.6,"y":1133},{"Distance":183.7,"Elevation":1138,"x":183.7,"y":1138},{"Distance":183.8,"Elevation":1146,"x":183.8,"y":1146},{"Distance":183.9,"Elevation":1140,"x":183.9,"y":1140},{"Distance":184,"Elevation":1135,"x":184,"y":1135},{"Distance":184.1,"Elevation":1134,"x":184.1,"y":1134},{"Distance":184.2,"Elevation":1131,"x":184.2,"y":1131},{"Distance":184.3,"Elevation":1129,"x":184.3,"y":1129},{"Distance":184.4,"Elevation":1137,"x":184.4,"y":1137},{"Distance":184.5,"Elevation":1139,"x":184.5,"y":1139},{"Distance":184.6,"Elevation":1144,"x":184.6,"y":1144},{"Distance":184.7,"Elevation":1149,"x":184.7,"y":1149},{"Distance":184.8,"Elevation":1155,"x":184.8,"y":1155},{"Distance":184.9,"Elevation":1163,"x":184.9,"y":1163},{"Distance":185,"Elevation":1164,"x":185,"y":1164},{"Distance":185.1,"Elevation":1173,"x":185.1,"y":1173},{"Distance":185.2,"Elevation":1170,"x":185.2,"y":1170},{"Distance":185.3,"Elevation":1165,"x":185.3,"y":1165},{"Distance":185.4,"Elevation":1157,"x":185.4,"y":1157},{"Distance":185.5,"Elevation":1153,"x":185.5,"y":1153},{"Distance":185.6,"Elevation":1150,"x":185.6,"y":1150},{"Distance":185.7,"Elevation":1142,"x":185.7,"y":1142},{"Distance":185.8,"Elevation":1141,"x":185.8,"y":1141},{"Distance":185.9,"Elevation":1142,"x":185.9,"y":1142},{"Distance":186,"Elevation":1142,"x":186,"y":1142},{"Distance":186.1,"Elevation":1142,"x":186.1,"y":1142},{"Distance":186.2,"Elevation":1142,"x":186.2,"y":1142},{"Distance":186.3,"Elevation":1145,"x":186.3,"y":1145},{"Distance":186.4,"Elevation":1151,"x":186.4,"y":1151},{"Distance":186.5,"Elevation":1154,"x":186.5,"y":1154},{"Distance":186.6,"Elevation":1155,"x":186.6,"y":1155},{"Distance":186.7,"Elevation":1152,"x":186.7,"y":1152},{"Distance":186.8,"Elevation":1154,"x":186.8,"y":1154},{"Distance":186.9,"Elevation":1154,"x":186.9,"y":1154},{"Distance":187,"Elevation":1155,"x":187,"y":1155},{"Distance":187.1,"Elevation":1158,"x":187.1,"y":1158},{"Distance":187.2,"Elevation":1159,"x":187.2,"y":1159},{"Distance":187.3,"Elevation":1158,"x":187.3,"y":1158},{"Distance":187.4,"Elevation":1158,"x":187.4,"y":1158},{"Distance":187.5,"Elevation":1158,"x":187.5,"y":1158},{"Distance":187.6,"Elevation":1161,"x":187.6,"y":1161},{"Distance":187.7,"Elevation":1167,"x":187.7,"y":1167},{"Distance":187.8,"Elevation":1170,"x":187.8,"y":1170}],"type":"area","lineColor":"#434348","color":"#90ed7d","fillOpacity":0.5,"marker":{"enabled":false}}],"xAxis":{"title":{"text":"Distance"},"labels":{"format":"{value} km"},"minRange":5,"accessibility":{"rangeDescription":"Range: 0 to 187.8 km."}},"caption":{"text":"An annotated line chart illustrates the 8th stage of the 2017 Tour de France cycling race from the start point in Dole to the finish line at Station des Rousses. Altitude is plotted on the Y-axis, and distance is plotted on the X-axis. The line graph is interactive, and the user can trace the altitude level along the stage. The graph is shaded below the data line to visualize the mountainous altitudes encountered on the 187.5-kilometre stage. The three largest climbs are highlighted at Col de la Joux, Côte de Viry and the final 11.7-kilometer, 6.4% gradient climb to Montée de la Combe de Laisia Les Molunes which peaks at 1200 meters above sea level. The stage passes through the villages of Arbois, Montrond, Bonlieu, Chassal and Saint-Claude along the route."},"annotations":[{"labelOptions":{"backgroundColor":"rgba(255,255,255,0.6)","verticalAlign":"top","y":15},"labels":[{"point":{"xAxis":0,"yAxis":0,"x":27.98,"y":255},"text":"Arbois"},{"point":{"xAxis":0,"yAxis":0,"x":45.5,"y":611},"text":"Montrond"},{"point":{"xAxis":0,"yAxis":0,"x":63,"y":651},"text":"Mont-sur-Monnet"},{"point":{"xAxis":0,"yAxis":0,"x":84,"y":789},"x":-10,"text":"Bonlieu"},{"point":{"xAxis":0,"yAxis":0,"x":129.5,"y":382},"text":"Chassal"},{"point":{"xAxis":0,"yAxis":0,"x":159,"y":443},"text":"Saint-Claude"}]},{"labels":[{"point":{"xAxis":0,"yAxis":0,"x":101.44,"y":1026},"x":-30,"text":"Col de la Joux"},{"point":{"xAxis":0,"yAxis":0,"x":138.5,"y":748},"text":"Côte de Viry"},{"point":{"xAxis":0,"yAxis":0,"x":176.4,"y":1202},"text":"Montée de la Combe <br>de Laisia Les Molunes"}]},{"labelOptions":{"shape":"connector","align":"right","justify":false,"crop":true,"style":{"fontSize":"0.8em","textOutline":"1px white"}},"labels":[{"point":{"xAxis":0,"yAxis":0,"x":96.2,"y":783},"text":"6.1 km climb <br>4.6% on avg."},{"point":{"xAxis":0,"yAxis":0,"x":134.5,"y":540},"text":"7.6 km climb <br>5.2% on avg."},{"point":{"xAxis":0,"yAxis":0,"x":172.2,"y":925},"text":"11.7 km climb <br>6.4% on avg."}]}],"tooltip":{"headerFormat":"Distance: {point.x:.1f} km<br>","pointFormat":"{point.y} m a. s. l.","shared":true},"legend":{"enabled":false}},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"accessibility":{"screenReaderSection":{"annotations":{"descriptionNoPoints":"{annotationText}, at distance {annotation.options.point.x}km, elevation {annotation.options.point.y} meters."}}}}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
</div>
</div>
</section>
<section id="did-it-work" class="level3">
<h3 class="anchored" data-anchor-id="did-it-work">Did it work?</h3>
<p>The proof is in the pudding, which, in our case, is the HTML. Behold! We get the following at the end of our screen-reader section (but with all of the annotations in place of <code>...</code>):</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>HTML</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb5" data-filename="HTML" style="background: #f1f3f5;"><pre class="sourceCode html code-with-copy"><code class="sourceCode html"><span id="cb5-1"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb5-2">"Chart annotations summary"</span>
<span id="cb5-3"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">ul</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> style</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"list-style-type: none"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb5-4">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">li</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>Arbois, at distance 27.98km, elevation 255 meters.<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">li</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb5-5">  <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">li</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>Montrond, at distance 45.5km, elevation 611 meters.<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">li</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb5-6">  ...</span>
<span id="cb5-7"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">ul</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb5-8"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div></div>
</div>
</section>
</section>
<section id="wrapping-up" class="level2">
<h2 class="anchored" data-anchor-id="wrapping-up">Wrapping up</h2>
<p>Though I haven’t figured out how to get <em>all</em> of the aspects of the Highcharts accessibility module working from {highcharter} (<a href="https://api.highcharts.com/highcharts/accessibility.linkedDescription"><code>linkedDescription</code></a>, I’m looking at you), I’m confident that the issue is with the user (yours truly) and is not some limitation of <a href="https://jkunst.com/">Joshua Kunst’s</a> excellent R package.</p>
<p>There’s only so much that can (or should) be automatically generated when it comes to making a data visualization accessible, but Highcharts gives you some really nice scaffolding to work with.</p>
<p>I’m not an accessibility expert by any stretch of the imagination. If you want to learn more about accessibility and data visualization the collection from the <a href="https://github.com/dataviza11y/">dataviza11y</a> group, <a href="https://github.com/dataviza11y/resources">“Dataviz Accessibility Resources: A non-exhaustive and in-progress list of people and resources in Accessibility and Data Visualization”</a>, is a great place to start. I also really enjoyed an (as of this writing) recent paper by Alan Lundgard and Arvind Satyanarayan, <a href="http://vis.csail.mit.edu/pubs/vis-text-model/">Accessible Visualization via Natural Language Descriptions: A Four-Level Model of Semantic Content</a> <span class="citation" data-cites="2022-vis-text-model">(Lundgard and Satyanarayan 2022)</span>. If you’re an R user (likely, since you’re reading this post), <a href="https://silvia.rbind.io/blog/2021-curated-compilations/01-data-viz-a11y/">Silvia Canelón’s compilation</a> is most definitely worthy of a visit <span class="citation" data-cites="canelon_2021">(Canelón 2021)</span>.</p>
<p>Thank you to Joshua and Silvia for writing the package <span class="citation" data-cites="kunst_2021">(Kunst 2021)</span> and inspiring me to embark on this endeavor, respectively.</p>
<p>Corrections, improvements, and suggestions are more than welcome!</p>



</section>


<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-canelon_2021" class="csl-entry">
Canelón, Silvia. 2021. <span>“Resources for <span>Data</span> <span>Viz</span> <span>Accessibility</span>.”</span> <a href="https://silvia.rbind.io/blog/2021-curated-compilations/01-data-viz-a11y/">https://silvia.rbind.io/blog/2021-curated-compilations/01-data-viz-a11y/</a>.
</div>
<div id="ref-kunst_2021" class="csl-entry">
Kunst, Joshua. 2021. <em>Highcharter: A Wrapper for the ’Highcharts’ Library</em>. <a href="https://jkunst.com/highcharter">https://jkunst.com/highcharter</a>.
</div>
<div id="ref-2022-vis-text-model" class="csl-entry">
Lundgard, Alan, and Arvind Satyanarayan. 2022. <span>“<span class="nocase">Accessible Visualization via Natural Language Descriptions: A Four-Level Model of Semantic Content</span>.”</span> <em>IEEE Transactions on Visualization &amp; Computer Graphics (Proceedings of IEEE VIS)</em>. <a href="https://doi.org/10.1109/TVCG.2021.3114770">https://doi.org/10.1109/TVCG.2021.3114770</a>.
</div>
</div></section><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Footnotes</h2>

<ol>
<li id="fn1"><p>That’s a mouthful—summary point: if you didn’t read <a href="../../blog/2021-11_accessible-highcharter-part-4/index.html" aria-label="Accessible highcharter part 4" title="Accessible highcharter part 4">part 4</a>, go skim the screen-reader-div section of it to make better sense of this post.↩︎</p></li>
</ol>
</section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en_us">CC BY-SA 4.0</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2021,
  author = {Averick, Mara},
  title = {\{Highcharter\} and the Accessibility Module: {Part} 5},
  date = {2021-11-16},
  url = {https://dataand.me/blog/2021-11_highcharter-and-the-accessibility-module-part-5/},
  doi = {10.59350/2by6p-7en25},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2021" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2021. <span>“{Highcharter} and the Accessibility Module:
Part 5.”</span> November 16, 2021. <a href="https://doi.org/10.59350/2by6p-7en25">https://doi.org/10.59350/2by6p-7en25</a>.
</div></div></section></div> ]]></description>
  <category>R</category>
  <category>data visualization</category>
  <category>accessibility</category>
  <category>highcharter</category>
  <category>Highcharts</category>
  <guid>https://dataand.me/blog/2021-11_highcharter-and-the-accessibility-module-part-5/</guid>
  <pubDate>Tue, 16 Nov 2021 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/blog/2021-11_highcharter-and-the-accessibility-module-part-5/highcharter-2017-tour-de-france-stag-min.png" medium="image" type="image/png" height="109" width="144"/>
</item>
<item>
  <title>Accessible {highcharter}: Part 4</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/blog/2021-11_accessible-highcharter-part-4/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<p>Back in the <a href="../../blog/2021-11_adventures-with-the-highcharts-accessibility-module-part-1/index.html" aria-label="Adventures with the Highcarts accessibility module part 1" title="Adventures with the Highcarts accessibility module part 1">first post</a> in <a href="../../blog.html#category=highcharter">this series</a> I mentioned that the impetus for this whole endeavor was Silvia Canelón’s excellent collection of <a href="https://silvia.rbind.io/blog/2021-curated-compilations/01-data-viz-a11y/">R-specific resources for making data visualizations more accessible</a> <span class="citation" data-cites="canelon_2021">(Canelón 2021)</span>. I wanted to fill the gap between the possibilities afforded by <a href="https://www.highcharts.com/docs/accessibility/accessibility-module">Highcharts’ accessibility module</a>, and documented examples of module use with the <a href="https://jkunst.com/highcharter/">{highcharter}</a> package <span class="citation" data-cites="kunst_2021">(Kunst 2021)</span>.</p>
<aside>
Don’t worry, I have pull requests in the works for both repos, so that the info can be streamlined.
</aside>
<p>Here, we’ll go through the example chart from Silvia’s post (a scatter plot using data from the <a href="https://allisonhorst.github.io/palmerpenguins/">{palmerpenguins}</a> package <span class="citation" data-cites="horst_2021">(Horst, Hill, and Gorman 2020)</span>), and look at what accessibility features we can enable through {highcharter}.</p>
<section id="an-accessible-penguin-plot" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="an-accessible-penguin-plot">An accessible penguin plot</h2>
<p>First thing’s first, we’ll need both packages loaded in order to get plotting.</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(highcharter)</span>
<span id="cb1-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(palmerpenguins)</span></code></pre></div></div>
</div>
<p>In addition to the ones we’ve used in previous posts (accessibility, export, and export-data), we’ll also attach <a href="https://www.highcharts.com/docs/advanced-chart-features/annotations-module">Highcharts’ annotations module</a>. In the alt-text for <a href="https://github.com/spcanelon/silvia/commit/30b469f0196cd017024e7233fae8aa947ba4cae5#diff-f77e3c4c6d3c562d9771b3ad0aefddb8d8435b63e77fbd9dadbe28d8d9547a56R193">Silvia’s initial version of this chart</a> (which is what I’ll use for our caption), she mentioned a specific observation—so, we’ll annotate that point in our re-creation.</p>
<p>The original also specified colours, and we’ll do the same. However, as I note in comments in the code, we’ll do this <em>outside</em> of aesthetic specifications to avoid losing the dual encoding with shapes that Highcharts gives you by default.</p>
<div class="cell">
<details open="" class="code-fold">
<summary>View code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb2-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">highchart</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/accessibility.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-3">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/annotations.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-4">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/exporting.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-5">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/export-data.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-6">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_series</span>(</span>
<span id="cb2-7">    penguins, </span>
<span id="cb2-8">    <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"scatter"</span>, </span>
<span id="cb2-9">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hcaes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> flipper_length_mm,</span>
<span id="cb2-10">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> bill_length_mm,</span>
<span id="cb2-11">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">group =</span> species)</span>
<span id="cb2-12">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-13">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># n.b. by not adding color above, you get "automatic" dual encoding</span></span>
<span id="cb2-14">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># of points with a different shape for the markers for each species</span></span>
<span id="cb2-15">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_xAxis</span>(</span>
<span id="cb2-16">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">title =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Flipper length (mm)"</span>),</span>
<span id="cb2-17">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb2-18">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb2-19">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">description =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"flipper length in millimeters"</span></span>
<span id="cb2-20">    )</span>
<span id="cb2-21">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-22">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_yAxis</span>(</span>
<span id="cb2-23">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">title =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Bill length (mm)"</span>),</span>
<span id="cb2-24">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb2-25">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb2-26">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">description =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"bill length in millimeters"</span></span>
<span id="cb2-27">    )</span>
<span id="cb2-28">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-29">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_title</span>(</span>
<span id="cb2-30">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Flipper length vs. bill length in &lt;b&gt;{palmerpenguins}&lt;/b&gt;"</span>,</span>
<span id="cb2-31">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">style =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">useHTML =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>)</span>
<span id="cb2-32">           ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-33">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_subtitle</span>(</span>
<span id="cb2-34">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Grouped by species: Adelie, Chinstrap, and Gentoo"</span></span>
<span id="cb2-35">    ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-36">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_annotations</span>(</span>
<span id="cb2-37">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb2-38">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labels =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb2-39">        <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb2-40">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">point =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">201</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">54.2</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">xAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">yAxis =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>),</span>
<span id="cb2-41">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Chinstrap&lt;br/&gt;x: {x}&lt;br/&gt;y: {y}"</span>,</span>
<span id="cb2-42">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">shape =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"connector"</span> <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># defaults to 'callout'</span></span>
<span id="cb2-43">        )</span>
<span id="cb2-44">      ),</span>
<span id="cb2-45">      <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># below gives you screen-reader descriptions of annotations</span></span>
<span id="cb2-46">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">labelOptions =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb2-47">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb2-48">          <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># wouldn't hard code description here if there was</span></span>
<span id="cb2-49">          <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># more than one point annotated, need lang options</span></span>
<span id="cb2-50">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">description =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"A Chinstrap penguin observation mapping to a flipper length of 201mm and bill length of 54.2mm."</span></span>
<span id="cb2-51">      )</span>
<span id="cb2-52">    )</span>
<span id="cb2-53">  )</span>
<span id="cb2-54">  )<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-55">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_caption</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Scatterplot of the palmerpenguins dataset showing data points clustered by species (Adelie, Chinstrap, and Gentoo) using the highcharter package making it possible to focus on one cluster and identify the x and y values of a specific data point. In this case the data point is a Chinstrap penguin observation mapping to a flipper length of 201mm and bill length of 54.2mm."</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-56">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_exporting</span>(</span>
<span id="cb2-57">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb2-58">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb2-59">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span></span>
<span id="cb2-60">    )</span>
<span id="cb2-61">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-62">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_plotOptions</span>(</span>
<span id="cb2-63">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb2-64">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb2-65">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">keyboardNavigation =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>)</span>
<span id="cb2-66">    )</span>
<span id="cb2-67">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb2-68">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># use the custom colors and keep shape per group if added here</span></span>
<span id="cb2-69">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_colors</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"darkorange"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"purple"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#057276"</span>))</span></code></pre></div></div>
</details>
<div class="cell-output-display">
<div class="highchart html-widget html-fill-item" id="htmlwidget-a94341a7a6a704e251ff" style="width:100%;height:464px;"></div>
<script type="application/json" data-for="htmlwidget-a94341a7a6a704e251ff">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Flipper length vs. bill length in <b>{palmerpenguins}<\/b>","style":{"useHTML":true}},"yAxis":{"title":{"text":"Bill length (mm)"},"accessibility":{"enabled":true,"description":"bill length in millimeters"}},"credits":{"enabled":false},"exporting":{"enabled":true,"accessibility":{"enabled":true}},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0},"treemap":{"layoutAlgorithm":"squarified"},"accessibility":{"enabled":true,"keyboardNavigation":{"enabled":true}}},"series":[{"name":"Adelie","data":[{"species":"Adelie","island":"Torgersen","bill_length_mm":39.1,"bill_depth_mm":18.7,"flipper_length_mm":181,"body_mass_g":3750,"sex":"male","year":2007,"x":181,"y":39.1},{"species":"Adelie","island":"Torgersen","bill_length_mm":39.5,"bill_depth_mm":17.4,"flipper_length_mm":186,"body_mass_g":3800,"sex":"female","year":2007,"x":186,"y":39.5},{"species":"Adelie","island":"Torgersen","bill_length_mm":40.3,"bill_depth_mm":18,"flipper_length_mm":195,"body_mass_g":3250,"sex":"female","year":2007,"x":195,"y":40.3},{"species":"Adelie","island":"Torgersen","bill_length_mm":null,"bill_depth_mm":null,"flipper_length_mm":null,"body_mass_g":null,"sex":null,"year":2007,"x":null,"y":null},{"species":"Adelie","island":"Torgersen","bill_length_mm":36.7,"bill_depth_mm":19.3,"flipper_length_mm":193,"body_mass_g":3450,"sex":"female","year":2007,"x":193,"y":36.7},{"species":"Adelie","island":"Torgersen","bill_length_mm":39.3,"bill_depth_mm":20.6,"flipper_length_mm":190,"body_mass_g":3650,"sex":"male","year":2007,"x":190,"y":39.3},{"species":"Adelie","island":"Torgersen","bill_length_mm":38.9,"bill_depth_mm":17.8,"flipper_length_mm":181,"body_mass_g":3625,"sex":"female","year":2007,"x":181,"y":38.9},{"species":"Adelie","island":"Torgersen","bill_length_mm":39.2,"bill_depth_mm":19.6,"flipper_length_mm":195,"body_mass_g":4675,"sex":"male","year":2007,"x":195,"y":39.2},{"species":"Adelie","island":"Torgersen","bill_length_mm":34.1,"bill_depth_mm":18.1,"flipper_length_mm":193,"body_mass_g":3475,"sex":null,"year":2007,"x":193,"y":34.1},{"species":"Adelie","island":"Torgersen","bill_length_mm":42,"bill_depth_mm":20.2,"flipper_length_mm":190,"body_mass_g":4250,"sex":null,"year":2007,"x":190,"y":42},{"species":"Adelie","island":"Torgersen","bill_length_mm":37.8,"bill_depth_mm":17.1,"flipper_length_mm":186,"body_mass_g":3300,"sex":null,"year":2007,"x":186,"y":37.8},{"species":"Adelie","island":"Torgersen","bill_length_mm":37.8,"bill_depth_mm":17.3,"flipper_length_mm":180,"body_mass_g":3700,"sex":null,"year":2007,"x":180,"y":37.8},{"species":"Adelie","island":"Torgersen","bill_length_mm":41.1,"bill_depth_mm":17.6,"flipper_length_mm":182,"body_mass_g":3200,"sex":"female","year":2007,"x":182,"y":41.1},{"species":"Adelie","island":"Torgersen","bill_length_mm":38.6,"bill_depth_mm":21.2,"flipper_length_mm":191,"body_mass_g":3800,"sex":"male","year":2007,"x":191,"y":38.6},{"species":"Adelie","island":"Torgersen","bill_length_mm":34.6,"bill_depth_mm":21.1,"flipper_length_mm":198,"body_mass_g":4400,"sex":"male","year":2007,"x":198,"y":34.6},{"species":"Adelie","island":"Torgersen","bill_length_mm":36.6,"bill_depth_mm":17.8,"flipper_length_mm":185,"body_mass_g":3700,"sex":"female","year":2007,"x":185,"y":36.6},{"species":"Adelie","island":"Torgersen","bill_length_mm":38.7,"bill_depth_mm":19,"flipper_length_mm":195,"body_mass_g":3450,"sex":"female","year":2007,"x":195,"y":38.7},{"species":"Adelie","island":"Torgersen","bill_length_mm":42.5,"bill_depth_mm":20.7,"flipper_length_mm":197,"body_mass_g":4500,"sex":"male","year":2007,"x":197,"y":42.5},{"species":"Adelie","island":"Torgersen","bill_length_mm":34.4,"bill_depth_mm":18.4,"flipper_length_mm":184,"body_mass_g":3325,"sex":"female","year":2007,"x":184,"y":34.4},{"species":"Adelie","island":"Torgersen","bill_length_mm":46,"bill_depth_mm":21.5,"flipper_length_mm":194,"body_mass_g":4200,"sex":"male","year":2007,"x":194,"y":46},{"species":"Adelie","island":"Biscoe","bill_length_mm":37.8,"bill_depth_mm":18.3,"flipper_length_mm":174,"body_mass_g":3400,"sex":"female","year":2007,"x":174,"y":37.8},{"species":"Adelie","island":"Biscoe","bill_length_mm":37.7,"bill_depth_mm":18.7,"flipper_length_mm":180,"body_mass_g":3600,"sex":"male","year":2007,"x":180,"y":37.7},{"species":"Adelie","island":"Biscoe","bill_length_mm":35.9,"bill_depth_mm":19.2,"flipper_length_mm":189,"body_mass_g":3800,"sex":"female","year":2007,"x":189,"y":35.9},{"species":"Adelie","island":"Biscoe","bill_length_mm":38.2,"bill_depth_mm":18.1,"flipper_length_mm":185,"body_mass_g":3950,"sex":"male","year":2007,"x":185,"y":38.2},{"species":"Adelie","island":"Biscoe","bill_length_mm":38.8,"bill_depth_mm":17.2,"flipper_length_mm":180,"body_mass_g":3800,"sex":"male","year":2007,"x":180,"y":38.8},{"species":"Adelie","island":"Biscoe","bill_length_mm":35.3,"bill_depth_mm":18.9,"flipper_length_mm":187,"body_mass_g":3800,"sex":"female","year":2007,"x":187,"y":35.3},{"species":"Adelie","island":"Biscoe","bill_length_mm":40.6,"bill_depth_mm":18.6,"flipper_length_mm":183,"body_mass_g":3550,"sex":"male","year":2007,"x":183,"y":40.6},{"species":"Adelie","island":"Biscoe","bill_length_mm":40.5,"bill_depth_mm":17.9,"flipper_length_mm":187,"body_mass_g":3200,"sex":"female","year":2007,"x":187,"y":40.5},{"species":"Adelie","island":"Biscoe","bill_length_mm":37.9,"bill_depth_mm":18.6,"flipper_length_mm":172,"body_mass_g":3150,"sex":"female","year":2007,"x":172,"y":37.9},{"species":"Adelie","island":"Biscoe","bill_length_mm":40.5,"bill_depth_mm":18.9,"flipper_length_mm":180,"body_mass_g":3950,"sex":"male","year":2007,"x":180,"y":40.5},{"species":"Adelie","island":"Dream","bill_length_mm":39.5,"bill_depth_mm":16.7,"flipper_length_mm":178,"body_mass_g":3250,"sex":"female","year":2007,"x":178,"y":39.5},{"species":"Adelie","island":"Dream","bill_length_mm":37.2,"bill_depth_mm":18.1,"flipper_length_mm":178,"body_mass_g":3900,"sex":"male","year":2007,"x":178,"y":37.2},{"species":"Adelie","island":"Dream","bill_length_mm":39.5,"bill_depth_mm":17.8,"flipper_length_mm":188,"body_mass_g":3300,"sex":"female","year":2007,"x":188,"y":39.5},{"species":"Adelie","island":"Dream","bill_length_mm":40.9,"bill_depth_mm":18.9,"flipper_length_mm":184,"body_mass_g":3900,"sex":"male","year":2007,"x":184,"y":40.9},{"species":"Adelie","island":"Dream","bill_length_mm":36.4,"bill_depth_mm":17,"flipper_length_mm":195,"body_mass_g":3325,"sex":"female","year":2007,"x":195,"y":36.4},{"species":"Adelie","island":"Dream","bill_length_mm":39.2,"bill_depth_mm":21.1,"flipper_length_mm":196,"body_mass_g":4150,"sex":"male","year":2007,"x":196,"y":39.2},{"species":"Adelie","island":"Dream","bill_length_mm":38.8,"bill_depth_mm":20,"flipper_length_mm":190,"body_mass_g":3950,"sex":"male","year":2007,"x":190,"y":38.8},{"species":"Adelie","island":"Dream","bill_length_mm":42.2,"bill_depth_mm":18.5,"flipper_length_mm":180,"body_mass_g":3550,"sex":"female","year":2007,"x":180,"y":42.2},{"species":"Adelie","island":"Dream","bill_length_mm":37.6,"bill_depth_mm":19.3,"flipper_length_mm":181,"body_mass_g":3300,"sex":"female","year":2007,"x":181,"y":37.6},{"species":"Adelie","island":"Dream","bill_length_mm":39.8,"bill_depth_mm":19.1,"flipper_length_mm":184,"body_mass_g":4650,"sex":"male","year":2007,"x":184,"y":39.8},{"species":"Adelie","island":"Dream","bill_length_mm":36.5,"bill_depth_mm":18,"flipper_length_mm":182,"body_mass_g":3150,"sex":"female","year":2007,"x":182,"y":36.5},{"species":"Adelie","island":"Dream","bill_length_mm":40.8,"bill_depth_mm":18.4,"flipper_length_mm":195,"body_mass_g":3900,"sex":"male","year":2007,"x":195,"y":40.8},{"species":"Adelie","island":"Dream","bill_length_mm":36,"bill_depth_mm":18.5,"flipper_length_mm":186,"body_mass_g":3100,"sex":"female","year":2007,"x":186,"y":36},{"species":"Adelie","island":"Dream","bill_length_mm":44.1,"bill_depth_mm":19.7,"flipper_length_mm":196,"body_mass_g":4400,"sex":"male","year":2007,"x":196,"y":44.1},{"species":"Adelie","island":"Dream","bill_length_mm":37,"bill_depth_mm":16.9,"flipper_length_mm":185,"body_mass_g":3000,"sex":"female","year":2007,"x":185,"y":37},{"species":"Adelie","island":"Dream","bill_length_mm":39.6,"bill_depth_mm":18.8,"flipper_length_mm":190,"body_mass_g":4600,"sex":"male","year":2007,"x":190,"y":39.6},{"species":"Adelie","island":"Dream","bill_length_mm":41.1,"bill_depth_mm":19,"flipper_length_mm":182,"body_mass_g":3425,"sex":"male","year":2007,"x":182,"y":41.1},{"species":"Adelie","island":"Dream","bill_length_mm":37.5,"bill_depth_mm":18.9,"flipper_length_mm":179,"body_mass_g":2975,"sex":null,"year":2007,"x":179,"y":37.5},{"species":"Adelie","island":"Dream","bill_length_mm":36,"bill_depth_mm":17.9,"flipper_length_mm":190,"body_mass_g":3450,"sex":"female","year":2007,"x":190,"y":36},{"species":"Adelie","island":"Dream","bill_length_mm":42.3,"bill_depth_mm":21.2,"flipper_length_mm":191,"body_mass_g":4150,"sex":"male","year":2007,"x":191,"y":42.3},{"species":"Adelie","island":"Biscoe","bill_length_mm":39.6,"bill_depth_mm":17.7,"flipper_length_mm":186,"body_mass_g":3500,"sex":"female","year":2008,"x":186,"y":39.6},{"species":"Adelie","island":"Biscoe","bill_length_mm":40.1,"bill_depth_mm":18.9,"flipper_length_mm":188,"body_mass_g":4300,"sex":"male","year":2008,"x":188,"y":40.1},{"species":"Adelie","island":"Biscoe","bill_length_mm":35,"bill_depth_mm":17.9,"flipper_length_mm":190,"body_mass_g":3450,"sex":"female","year":2008,"x":190,"y":35},{"species":"Adelie","island":"Biscoe","bill_length_mm":42,"bill_depth_mm":19.5,"flipper_length_mm":200,"body_mass_g":4050,"sex":"male","year":2008,"x":200,"y":42},{"species":"Adelie","island":"Biscoe","bill_length_mm":34.5,"bill_depth_mm":18.1,"flipper_length_mm":187,"body_mass_g":2900,"sex":"female","year":2008,"x":187,"y":34.5},{"species":"Adelie","island":"Biscoe","bill_length_mm":41.4,"bill_depth_mm":18.6,"flipper_length_mm":191,"body_mass_g":3700,"sex":"male","year":2008,"x":191,"y":41.4},{"species":"Adelie","island":"Biscoe","bill_length_mm":39,"bill_depth_mm":17.5,"flipper_length_mm":186,"body_mass_g":3550,"sex":"female","year":2008,"x":186,"y":39},{"species":"Adelie","island":"Biscoe","bill_length_mm":40.6,"bill_depth_mm":18.8,"flipper_length_mm":193,"body_mass_g":3800,"sex":"male","year":2008,"x":193,"y":40.6},{"species":"Adelie","island":"Biscoe","bill_length_mm":36.5,"bill_depth_mm":16.6,"flipper_length_mm":181,"body_mass_g":2850,"sex":"female","year":2008,"x":181,"y":36.5},{"species":"Adelie","island":"Biscoe","bill_length_mm":37.6,"bill_depth_mm":19.1,"flipper_length_mm":194,"body_mass_g":3750,"sex":"male","year":2008,"x":194,"y":37.6},{"species":"Adelie","island":"Biscoe","bill_length_mm":35.7,"bill_depth_mm":16.9,"flipper_length_mm":185,"body_mass_g":3150,"sex":"female","year":2008,"x":185,"y":35.7},{"species":"Adelie","island":"Biscoe","bill_length_mm":41.3,"bill_depth_mm":21.1,"flipper_length_mm":195,"body_mass_g":4400,"sex":"male","year":2008,"x":195,"y":41.3},{"species":"Adelie","island":"Biscoe","bill_length_mm":37.6,"bill_depth_mm":17,"flipper_length_mm":185,"body_mass_g":3600,"sex":"female","year":2008,"x":185,"y":37.6},{"species":"Adelie","island":"Biscoe","bill_length_mm":41.1,"bill_depth_mm":18.2,"flipper_length_mm":192,"body_mass_g":4050,"sex":"male","year":2008,"x":192,"y":41.1},{"species":"Adelie","island":"Biscoe","bill_length_mm":36.4,"bill_depth_mm":17.1,"flipper_length_mm":184,"body_mass_g":2850,"sex":"female","year":2008,"x":184,"y":36.4},{"species":"Adelie","island":"Biscoe","bill_length_mm":41.6,"bill_depth_mm":18,"flipper_length_mm":192,"body_mass_g":3950,"sex":"male","year":2008,"x":192,"y":41.6},{"species":"Adelie","island":"Biscoe","bill_length_mm":35.5,"bill_depth_mm":16.2,"flipper_length_mm":195,"body_mass_g":3350,"sex":"female","year":2008,"x":195,"y":35.5},{"species":"Adelie","island":"Biscoe","bill_length_mm":41.1,"bill_depth_mm":19.1,"flipper_length_mm":188,"body_mass_g":4100,"sex":"male","year":2008,"x":188,"y":41.1},{"species":"Adelie","island":"Torgersen","bill_length_mm":35.9,"bill_depth_mm":16.6,"flipper_length_mm":190,"body_mass_g":3050,"sex":"female","year":2008,"x":190,"y":35.9},{"species":"Adelie","island":"Torgersen","bill_length_mm":41.8,"bill_depth_mm":19.4,"flipper_length_mm":198,"body_mass_g":4450,"sex":"male","year":2008,"x":198,"y":41.8},{"species":"Adelie","island":"Torgersen","bill_length_mm":33.5,"bill_depth_mm":19,"flipper_length_mm":190,"body_mass_g":3600,"sex":"female","year":2008,"x":190,"y":33.5},{"species":"Adelie","island":"Torgersen","bill_length_mm":39.7,"bill_depth_mm":18.4,"flipper_length_mm":190,"body_mass_g":3900,"sex":"male","year":2008,"x":190,"y":39.7},{"species":"Adelie","island":"Torgersen","bill_length_mm":39.6,"bill_depth_mm":17.2,"flipper_length_mm":196,"body_mass_g":3550,"sex":"female","year":2008,"x":196,"y":39.6},{"species":"Adelie","island":"Torgersen","bill_length_mm":45.8,"bill_depth_mm":18.9,"flipper_length_mm":197,"body_mass_g":4150,"sex":"male","year":2008,"x":197,"y":45.8},{"species":"Adelie","island":"Torgersen","bill_length_mm":35.5,"bill_depth_mm":17.5,"flipper_length_mm":190,"body_mass_g":3700,"sex":"female","year":2008,"x":190,"y":35.5},{"species":"Adelie","island":"Torgersen","bill_length_mm":42.8,"bill_depth_mm":18.5,"flipper_length_mm":195,"body_mass_g":4250,"sex":"male","year":2008,"x":195,"y":42.8},{"species":"Adelie","island":"Torgersen","bill_length_mm":40.9,"bill_depth_mm":16.8,"flipper_length_mm":191,"body_mass_g":3700,"sex":"female","year":2008,"x":191,"y":40.9},{"species":"Adelie","island":"Torgersen","bill_length_mm":37.2,"bill_depth_mm":19.4,"flipper_length_mm":184,"body_mass_g":3900,"sex":"male","year":2008,"x":184,"y":37.2},{"species":"Adelie","island":"Torgersen","bill_length_mm":36.2,"bill_depth_mm":16.1,"flipper_length_mm":187,"body_mass_g":3550,"sex":"female","year":2008,"x":187,"y":36.2},{"species":"Adelie","island":"Torgersen","bill_length_mm":42.1,"bill_depth_mm":19.1,"flipper_length_mm":195,"body_mass_g":4000,"sex":"male","year":2008,"x":195,"y":42.1},{"species":"Adelie","island":"Torgersen","bill_length_mm":34.6,"bill_depth_mm":17.2,"flipper_length_mm":189,"body_mass_g":3200,"sex":"female","year":2008,"x":189,"y":34.6},{"species":"Adelie","island":"Torgersen","bill_length_mm":42.9,"bill_depth_mm":17.6,"flipper_length_mm":196,"body_mass_g":4700,"sex":"male","year":2008,"x":196,"y":42.9},{"species":"Adelie","island":"Torgersen","bill_length_mm":36.7,"bill_depth_mm":18.8,"flipper_length_mm":187,"body_mass_g":3800,"sex":"female","year":2008,"x":187,"y":36.7},{"species":"Adelie","island":"Torgersen","bill_length_mm":35.1,"bill_depth_mm":19.4,"flipper_length_mm":193,"body_mass_g":4200,"sex":"male","year":2008,"x":193,"y":35.1},{"species":"Adelie","island":"Dream","bill_length_mm":37.3,"bill_depth_mm":17.8,"flipper_length_mm":191,"body_mass_g":3350,"sex":"female","year":2008,"x":191,"y":37.3},{"species":"Adelie","island":"Dream","bill_length_mm":41.3,"bill_depth_mm":20.3,"flipper_length_mm":194,"body_mass_g":3550,"sex":"male","year":2008,"x":194,"y":41.3},{"species":"Adelie","island":"Dream","bill_length_mm":36.3,"bill_depth_mm":19.5,"flipper_length_mm":190,"body_mass_g":3800,"sex":"male","year":2008,"x":190,"y":36.3},{"species":"Adelie","island":"Dream","bill_length_mm":36.9,"bill_depth_mm":18.6,"flipper_length_mm":189,"body_mass_g":3500,"sex":"female","year":2008,"x":189,"y":36.9},{"species":"Adelie","island":"Dream","bill_length_mm":38.3,"bill_depth_mm":19.2,"flipper_length_mm":189,"body_mass_g":3950,"sex":"male","year":2008,"x":189,"y":38.3},{"species":"Adelie","island":"Dream","bill_length_mm":38.9,"bill_depth_mm":18.8,"flipper_length_mm":190,"body_mass_g":3600,"sex":"female","year":2008,"x":190,"y":38.9},{"species":"Adelie","island":"Dream","bill_length_mm":35.7,"bill_depth_mm":18,"flipper_length_mm":202,"body_mass_g":3550,"sex":"female","year":2008,"x":202,"y":35.7},{"species":"Adelie","island":"Dream","bill_length_mm":41.1,"bill_depth_mm":18.1,"flipper_length_mm":205,"body_mass_g":4300,"sex":"male","year":2008,"x":205,"y":41.1},{"species":"Adelie","island":"Dream","bill_length_mm":34,"bill_depth_mm":17.1,"flipper_length_mm":185,"body_mass_g":3400,"sex":"female","year":2008,"x":185,"y":34},{"species":"Adelie","island":"Dream","bill_length_mm":39.6,"bill_depth_mm":18.1,"flipper_length_mm":186,"body_mass_g":4450,"sex":"male","year":2008,"x":186,"y":39.6},{"species":"Adelie","island":"Dream","bill_length_mm":36.2,"bill_depth_mm":17.3,"flipper_length_mm":187,"body_mass_g":3300,"sex":"female","year":2008,"x":187,"y":36.2},{"species":"Adelie","island":"Dream","bill_length_mm":40.8,"bill_depth_mm":18.9,"flipper_length_mm":208,"body_mass_g":4300,"sex":"male","year":2008,"x":208,"y":40.8},{"species":"Adelie","island":"Dream","bill_length_mm":38.1,"bill_depth_mm":18.6,"flipper_length_mm":190,"body_mass_g":3700,"sex":"female","year":2008,"x":190,"y":38.1},{"species":"Adelie","island":"Dream","bill_length_mm":40.3,"bill_depth_mm":18.5,"flipper_length_mm":196,"body_mass_g":4350,"sex":"male","year":2008,"x":196,"y":40.3},{"species":"Adelie","island":"Dream","bill_length_mm":33.1,"bill_depth_mm":16.1,"flipper_length_mm":178,"body_mass_g":2900,"sex":"female","year":2008,"x":178,"y":33.1},{"species":"Adelie","island":"Dream","bill_length_mm":43.2,"bill_depth_mm":18.5,"flipper_length_mm":192,"body_mass_g":4100,"sex":"male","year":2008,"x":192,"y":43.2},{"species":"Adelie","island":"Biscoe","bill_length_mm":35,"bill_depth_mm":17.9,"flipper_length_mm":192,"body_mass_g":3725,"sex":"female","year":2009,"x":192,"y":35},{"species":"Adelie","island":"Biscoe","bill_length_mm":41,"bill_depth_mm":20,"flipper_length_mm":203,"body_mass_g":4725,"sex":"male","year":2009,"x":203,"y":41},{"species":"Adelie","island":"Biscoe","bill_length_mm":37.7,"bill_depth_mm":16,"flipper_length_mm":183,"body_mass_g":3075,"sex":"female","year":2009,"x":183,"y":37.7},{"species":"Adelie","island":"Biscoe","bill_length_mm":37.8,"bill_depth_mm":20,"flipper_length_mm":190,"body_mass_g":4250,"sex":"male","year":2009,"x":190,"y":37.8},{"species":"Adelie","island":"Biscoe","bill_length_mm":37.9,"bill_depth_mm":18.6,"flipper_length_mm":193,"body_mass_g":2925,"sex":"female","year":2009,"x":193,"y":37.9},{"species":"Adelie","island":"Biscoe","bill_length_mm":39.7,"bill_depth_mm":18.9,"flipper_length_mm":184,"body_mass_g":3550,"sex":"male","year":2009,"x":184,"y":39.7},{"species":"Adelie","island":"Biscoe","bill_length_mm":38.6,"bill_depth_mm":17.2,"flipper_length_mm":199,"body_mass_g":3750,"sex":"female","year":2009,"x":199,"y":38.6},{"species":"Adelie","island":"Biscoe","bill_length_mm":38.2,"bill_depth_mm":20,"flipper_length_mm":190,"body_mass_g":3900,"sex":"male","year":2009,"x":190,"y":38.2},{"species":"Adelie","island":"Biscoe","bill_length_mm":38.1,"bill_depth_mm":17,"flipper_length_mm":181,"body_mass_g":3175,"sex":"female","year":2009,"x":181,"y":38.1},{"species":"Adelie","island":"Biscoe","bill_length_mm":43.2,"bill_depth_mm":19,"flipper_length_mm":197,"body_mass_g":4775,"sex":"male","year":2009,"x":197,"y":43.2},{"species":"Adelie","island":"Biscoe","bill_length_mm":38.1,"bill_depth_mm":16.5,"flipper_length_mm":198,"body_mass_g":3825,"sex":"female","year":2009,"x":198,"y":38.1},{"species":"Adelie","island":"Biscoe","bill_length_mm":45.6,"bill_depth_mm":20.3,"flipper_length_mm":191,"body_mass_g":4600,"sex":"male","year":2009,"x":191,"y":45.6},{"species":"Adelie","island":"Biscoe","bill_length_mm":39.7,"bill_depth_mm":17.7,"flipper_length_mm":193,"body_mass_g":3200,"sex":"female","year":2009,"x":193,"y":39.7},{"species":"Adelie","island":"Biscoe","bill_length_mm":42.2,"bill_depth_mm":19.5,"flipper_length_mm":197,"body_mass_g":4275,"sex":"male","year":2009,"x":197,"y":42.2},{"species":"Adelie","island":"Biscoe","bill_length_mm":39.6,"bill_depth_mm":20.7,"flipper_length_mm":191,"body_mass_g":3900,"sex":"female","year":2009,"x":191,"y":39.6},{"species":"Adelie","island":"Biscoe","bill_length_mm":42.7,"bill_depth_mm":18.3,"flipper_length_mm":196,"body_mass_g":4075,"sex":"male","year":2009,"x":196,"y":42.7},{"species":"Adelie","island":"Torgersen","bill_length_mm":38.6,"bill_depth_mm":17,"flipper_length_mm":188,"body_mass_g":2900,"sex":"female","year":2009,"x":188,"y":38.6},{"species":"Adelie","island":"Torgersen","bill_length_mm":37.3,"bill_depth_mm":20.5,"flipper_length_mm":199,"body_mass_g":3775,"sex":"male","year":2009,"x":199,"y":37.3},{"species":"Adelie","island":"Torgersen","bill_length_mm":35.7,"bill_depth_mm":17,"flipper_length_mm":189,"body_mass_g":3350,"sex":"female","year":2009,"x":189,"y":35.7},{"species":"Adelie","island":"Torgersen","bill_length_mm":41.1,"bill_depth_mm":18.6,"flipper_length_mm":189,"body_mass_g":3325,"sex":"male","year":2009,"x":189,"y":41.1},{"species":"Adelie","island":"Torgersen","bill_length_mm":36.2,"bill_depth_mm":17.2,"flipper_length_mm":187,"body_mass_g":3150,"sex":"female","year":2009,"x":187,"y":36.2},{"species":"Adelie","island":"Torgersen","bill_length_mm":37.7,"bill_depth_mm":19.8,"flipper_length_mm":198,"body_mass_g":3500,"sex":"male","year":2009,"x":198,"y":37.7},{"species":"Adelie","island":"Torgersen","bill_length_mm":40.2,"bill_depth_mm":17,"flipper_length_mm":176,"body_mass_g":3450,"sex":"female","year":2009,"x":176,"y":40.2},{"species":"Adelie","island":"Torgersen","bill_length_mm":41.4,"bill_depth_mm":18.5,"flipper_length_mm":202,"body_mass_g":3875,"sex":"male","year":2009,"x":202,"y":41.4},{"species":"Adelie","island":"Torgersen","bill_length_mm":35.2,"bill_depth_mm":15.9,"flipper_length_mm":186,"body_mass_g":3050,"sex":"female","year":2009,"x":186,"y":35.2},{"species":"Adelie","island":"Torgersen","bill_length_mm":40.6,"bill_depth_mm":19,"flipper_length_mm":199,"body_mass_g":4000,"sex":"male","year":2009,"x":199,"y":40.6},{"species":"Adelie","island":"Torgersen","bill_length_mm":38.8,"bill_depth_mm":17.6,"flipper_length_mm":191,"body_mass_g":3275,"sex":"female","year":2009,"x":191,"y":38.8},{"species":"Adelie","island":"Torgersen","bill_length_mm":41.5,"bill_depth_mm":18.3,"flipper_length_mm":195,"body_mass_g":4300,"sex":"male","year":2009,"x":195,"y":41.5},{"species":"Adelie","island":"Torgersen","bill_length_mm":39,"bill_depth_mm":17.1,"flipper_length_mm":191,"body_mass_g":3050,"sex":"female","year":2009,"x":191,"y":39},{"species":"Adelie","island":"Torgersen","bill_length_mm":44.1,"bill_depth_mm":18,"flipper_length_mm":210,"body_mass_g":4000,"sex":"male","year":2009,"x":210,"y":44.1},{"species":"Adelie","island":"Torgersen","bill_length_mm":38.5,"bill_depth_mm":17.9,"flipper_length_mm":190,"body_mass_g":3325,"sex":"female","year":2009,"x":190,"y":38.5},{"species":"Adelie","island":"Torgersen","bill_length_mm":43.1,"bill_depth_mm":19.2,"flipper_length_mm":197,"body_mass_g":3500,"sex":"male","year":2009,"x":197,"y":43.1},{"species":"Adelie","island":"Dream","bill_length_mm":36.8,"bill_depth_mm":18.5,"flipper_length_mm":193,"body_mass_g":3500,"sex":"female","year":2009,"x":193,"y":36.8},{"species":"Adelie","island":"Dream","bill_length_mm":37.5,"bill_depth_mm":18.5,"flipper_length_mm":199,"body_mass_g":4475,"sex":"male","year":2009,"x":199,"y":37.5},{"species":"Adelie","island":"Dream","bill_length_mm":38.1,"bill_depth_mm":17.6,"flipper_length_mm":187,"body_mass_g":3425,"sex":"female","year":2009,"x":187,"y":38.1},{"species":"Adelie","island":"Dream","bill_length_mm":41.1,"bill_depth_mm":17.5,"flipper_length_mm":190,"body_mass_g":3900,"sex":"male","year":2009,"x":190,"y":41.1},{"species":"Adelie","island":"Dream","bill_length_mm":35.6,"bill_depth_mm":17.5,"flipper_length_mm":191,"body_mass_g":3175,"sex":"female","year":2009,"x":191,"y":35.6},{"species":"Adelie","island":"Dream","bill_length_mm":40.2,"bill_depth_mm":20.1,"flipper_length_mm":200,"body_mass_g":3975,"sex":"male","year":2009,"x":200,"y":40.2},{"species":"Adelie","island":"Dream","bill_length_mm":37,"bill_depth_mm":16.5,"flipper_length_mm":185,"body_mass_g":3400,"sex":"female","year":2009,"x":185,"y":37},{"species":"Adelie","island":"Dream","bill_length_mm":39.7,"bill_depth_mm":17.9,"flipper_length_mm":193,"body_mass_g":4250,"sex":"male","year":2009,"x":193,"y":39.7},{"species":"Adelie","island":"Dream","bill_length_mm":40.2,"bill_depth_mm":17.1,"flipper_length_mm":193,"body_mass_g":3400,"sex":"female","year":2009,"x":193,"y":40.2},{"species":"Adelie","island":"Dream","bill_length_mm":40.6,"bill_depth_mm":17.2,"flipper_length_mm":187,"body_mass_g":3475,"sex":"male","year":2009,"x":187,"y":40.6},{"species":"Adelie","island":"Dream","bill_length_mm":32.1,"bill_depth_mm":15.5,"flipper_length_mm":188,"body_mass_g":3050,"sex":"female","year":2009,"x":188,"y":32.1},{"species":"Adelie","island":"Dream","bill_length_mm":40.7,"bill_depth_mm":17,"flipper_length_mm":190,"body_mass_g":3725,"sex":"male","year":2009,"x":190,"y":40.7},{"species":"Adelie","island":"Dream","bill_length_mm":37.3,"bill_depth_mm":16.8,"flipper_length_mm":192,"body_mass_g":3000,"sex":"female","year":2009,"x":192,"y":37.3},{"species":"Adelie","island":"Dream","bill_length_mm":39,"bill_depth_mm":18.7,"flipper_length_mm":185,"body_mass_g":3650,"sex":"male","year":2009,"x":185,"y":39},{"species":"Adelie","island":"Dream","bill_length_mm":39.2,"bill_depth_mm":18.6,"flipper_length_mm":190,"body_mass_g":4250,"sex":"male","year":2009,"x":190,"y":39.2},{"species":"Adelie","island":"Dream","bill_length_mm":36.6,"bill_depth_mm":18.4,"flipper_length_mm":184,"body_mass_g":3475,"sex":"female","year":2009,"x":184,"y":36.6},{"species":"Adelie","island":"Dream","bill_length_mm":36,"bill_depth_mm":17.8,"flipper_length_mm":195,"body_mass_g":3450,"sex":"female","year":2009,"x":195,"y":36},{"species":"Adelie","island":"Dream","bill_length_mm":37.8,"bill_depth_mm":18.1,"flipper_length_mm":193,"body_mass_g":3750,"sex":"male","year":2009,"x":193,"y":37.8},{"species":"Adelie","island":"Dream","bill_length_mm":36,"bill_depth_mm":17.1,"flipper_length_mm":187,"body_mass_g":3700,"sex":"female","year":2009,"x":187,"y":36},{"species":"Adelie","island":"Dream","bill_length_mm":41.5,"bill_depth_mm":18.5,"flipper_length_mm":201,"body_mass_g":4000,"sex":"male","year":2009,"x":201,"y":41.5}],"type":"scatter"},{"name":"Chinstrap","data":[{"species":"Chinstrap","island":"Dream","bill_length_mm":46.5,"bill_depth_mm":17.9,"flipper_length_mm":192,"body_mass_g":3500,"sex":"female","year":2007,"x":192,"y":46.5},{"species":"Chinstrap","island":"Dream","bill_length_mm":50,"bill_depth_mm":19.5,"flipper_length_mm":196,"body_mass_g":3900,"sex":"male","year":2007,"x":196,"y":50},{"species":"Chinstrap","island":"Dream","bill_length_mm":51.3,"bill_depth_mm":19.2,"flipper_length_mm":193,"body_mass_g":3650,"sex":"male","year":2007,"x":193,"y":51.3},{"species":"Chinstrap","island":"Dream","bill_length_mm":45.4,"bill_depth_mm":18.7,"flipper_length_mm":188,"body_mass_g":3525,"sex":"female","year":2007,"x":188,"y":45.4},{"species":"Chinstrap","island":"Dream","bill_length_mm":52.7,"bill_depth_mm":19.8,"flipper_length_mm":197,"body_mass_g":3725,"sex":"male","year":2007,"x":197,"y":52.7},{"species":"Chinstrap","island":"Dream","bill_length_mm":45.2,"bill_depth_mm":17.8,"flipper_length_mm":198,"body_mass_g":3950,"sex":"female","year":2007,"x":198,"y":45.2},{"species":"Chinstrap","island":"Dream","bill_length_mm":46.1,"bill_depth_mm":18.2,"flipper_length_mm":178,"body_mass_g":3250,"sex":"female","year":2007,"x":178,"y":46.1},{"species":"Chinstrap","island":"Dream","bill_length_mm":51.3,"bill_depth_mm":18.2,"flipper_length_mm":197,"body_mass_g":3750,"sex":"male","year":2007,"x":197,"y":51.3},{"species":"Chinstrap","island":"Dream","bill_length_mm":46,"bill_depth_mm":18.9,"flipper_length_mm":195,"body_mass_g":4150,"sex":"female","year":2007,"x":195,"y":46},{"species":"Chinstrap","island":"Dream","bill_length_mm":51.3,"bill_depth_mm":19.9,"flipper_length_mm":198,"body_mass_g":3700,"sex":"male","year":2007,"x":198,"y":51.3},{"species":"Chinstrap","island":"Dream","bill_length_mm":46.6,"bill_depth_mm":17.8,"flipper_length_mm":193,"body_mass_g":3800,"sex":"female","year":2007,"x":193,"y":46.6},{"species":"Chinstrap","island":"Dream","bill_length_mm":51.7,"bill_depth_mm":20.3,"flipper_length_mm":194,"body_mass_g":3775,"sex":"male","year":2007,"x":194,"y":51.7},{"species":"Chinstrap","island":"Dream","bill_length_mm":47,"bill_depth_mm":17.3,"flipper_length_mm":185,"body_mass_g":3700,"sex":"female","year":2007,"x":185,"y":47},{"species":"Chinstrap","island":"Dream","bill_length_mm":52,"bill_depth_mm":18.1,"flipper_length_mm":201,"body_mass_g":4050,"sex":"male","year":2007,"x":201,"y":52},{"species":"Chinstrap","island":"Dream","bill_length_mm":45.9,"bill_depth_mm":17.1,"flipper_length_mm":190,"body_mass_g":3575,"sex":"female","year":2007,"x":190,"y":45.9},{"species":"Chinstrap","island":"Dream","bill_length_mm":50.5,"bill_depth_mm":19.6,"flipper_length_mm":201,"body_mass_g":4050,"sex":"male","year":2007,"x":201,"y":50.5},{"species":"Chinstrap","island":"Dream","bill_length_mm":50.3,"bill_depth_mm":20,"flipper_length_mm":197,"body_mass_g":3300,"sex":"male","year":2007,"x":197,"y":50.3},{"species":"Chinstrap","island":"Dream","bill_length_mm":58,"bill_depth_mm":17.8,"flipper_length_mm":181,"body_mass_g":3700,"sex":"female","year":2007,"x":181,"y":58},{"species":"Chinstrap","island":"Dream","bill_length_mm":46.4,"bill_depth_mm":18.6,"flipper_length_mm":190,"body_mass_g":3450,"sex":"female","year":2007,"x":190,"y":46.4},{"species":"Chinstrap","island":"Dream","bill_length_mm":49.2,"bill_depth_mm":18.2,"flipper_length_mm":195,"body_mass_g":4400,"sex":"male","year":2007,"x":195,"y":49.2},{"species":"Chinstrap","island":"Dream","bill_length_mm":42.4,"bill_depth_mm":17.3,"flipper_length_mm":181,"body_mass_g":3600,"sex":"female","year":2007,"x":181,"y":42.4},{"species":"Chinstrap","island":"Dream","bill_length_mm":48.5,"bill_depth_mm":17.5,"flipper_length_mm":191,"body_mass_g":3400,"sex":"male","year":2007,"x":191,"y":48.5},{"species":"Chinstrap","island":"Dream","bill_length_mm":43.2,"bill_depth_mm":16.6,"flipper_length_mm":187,"body_mass_g":2900,"sex":"female","year":2007,"x":187,"y":43.2},{"species":"Chinstrap","island":"Dream","bill_length_mm":50.6,"bill_depth_mm":19.4,"flipper_length_mm":193,"body_mass_g":3800,"sex":"male","year":2007,"x":193,"y":50.6},{"species":"Chinstrap","island":"Dream","bill_length_mm":46.7,"bill_depth_mm":17.9,"flipper_length_mm":195,"body_mass_g":3300,"sex":"female","year":2007,"x":195,"y":46.7},{"species":"Chinstrap","island":"Dream","bill_length_mm":52,"bill_depth_mm":19,"flipper_length_mm":197,"body_mass_g":4150,"sex":"male","year":2007,"x":197,"y":52},{"species":"Chinstrap","island":"Dream","bill_length_mm":50.5,"bill_depth_mm":18.4,"flipper_length_mm":200,"body_mass_g":3400,"sex":"female","year":2008,"x":200,"y":50.5},{"species":"Chinstrap","island":"Dream","bill_length_mm":49.5,"bill_depth_mm":19,"flipper_length_mm":200,"body_mass_g":3800,"sex":"male","year":2008,"x":200,"y":49.5},{"species":"Chinstrap","island":"Dream","bill_length_mm":46.4,"bill_depth_mm":17.8,"flipper_length_mm":191,"body_mass_g":3700,"sex":"female","year":2008,"x":191,"y":46.4},{"species":"Chinstrap","island":"Dream","bill_length_mm":52.8,"bill_depth_mm":20,"flipper_length_mm":205,"body_mass_g":4550,"sex":"male","year":2008,"x":205,"y":52.8},{"species":"Chinstrap","island":"Dream","bill_length_mm":40.9,"bill_depth_mm":16.6,"flipper_length_mm":187,"body_mass_g":3200,"sex":"female","year":2008,"x":187,"y":40.9},{"species":"Chinstrap","island":"Dream","bill_length_mm":54.2,"bill_depth_mm":20.8,"flipper_length_mm":201,"body_mass_g":4300,"sex":"male","year":2008,"x":201,"y":54.2},{"species":"Chinstrap","island":"Dream","bill_length_mm":42.5,"bill_depth_mm":16.7,"flipper_length_mm":187,"body_mass_g":3350,"sex":"female","year":2008,"x":187,"y":42.5},{"species":"Chinstrap","island":"Dream","bill_length_mm":51,"bill_depth_mm":18.8,"flipper_length_mm":203,"body_mass_g":4100,"sex":"male","year":2008,"x":203,"y":51},{"species":"Chinstrap","island":"Dream","bill_length_mm":49.7,"bill_depth_mm":18.6,"flipper_length_mm":195,"body_mass_g":3600,"sex":"male","year":2008,"x":195,"y":49.7},{"species":"Chinstrap","island":"Dream","bill_length_mm":47.5,"bill_depth_mm":16.8,"flipper_length_mm":199,"body_mass_g":3900,"sex":"female","year":2008,"x":199,"y":47.5},{"species":"Chinstrap","island":"Dream","bill_length_mm":47.6,"bill_depth_mm":18.3,"flipper_length_mm":195,"body_mass_g":3850,"sex":"female","year":2008,"x":195,"y":47.6},{"species":"Chinstrap","island":"Dream","bill_length_mm":52,"bill_depth_mm":20.7,"flipper_length_mm":210,"body_mass_g":4800,"sex":"male","year":2008,"x":210,"y":52},{"species":"Chinstrap","island":"Dream","bill_length_mm":46.9,"bill_depth_mm":16.6,"flipper_length_mm":192,"body_mass_g":2700,"sex":"female","year":2008,"x":192,"y":46.9},{"species":"Chinstrap","island":"Dream","bill_length_mm":53.5,"bill_depth_mm":19.9,"flipper_length_mm":205,"body_mass_g":4500,"sex":"male","year":2008,"x":205,"y":53.5},{"species":"Chinstrap","island":"Dream","bill_length_mm":49,"bill_depth_mm":19.5,"flipper_length_mm":210,"body_mass_g":3950,"sex":"male","year":2008,"x":210,"y":49},{"species":"Chinstrap","island":"Dream","bill_length_mm":46.2,"bill_depth_mm":17.5,"flipper_length_mm":187,"body_mass_g":3650,"sex":"female","year":2008,"x":187,"y":46.2},{"species":"Chinstrap","island":"Dream","bill_length_mm":50.9,"bill_depth_mm":19.1,"flipper_length_mm":196,"body_mass_g":3550,"sex":"male","year":2008,"x":196,"y":50.9},{"species":"Chinstrap","island":"Dream","bill_length_mm":45.5,"bill_depth_mm":17,"flipper_length_mm":196,"body_mass_g":3500,"sex":"female","year":2008,"x":196,"y":45.5},{"species":"Chinstrap","island":"Dream","bill_length_mm":50.9,"bill_depth_mm":17.9,"flipper_length_mm":196,"body_mass_g":3675,"sex":"female","year":2009,"x":196,"y":50.9},{"species":"Chinstrap","island":"Dream","bill_length_mm":50.8,"bill_depth_mm":18.5,"flipper_length_mm":201,"body_mass_g":4450,"sex":"male","year":2009,"x":201,"y":50.8},{"species":"Chinstrap","island":"Dream","bill_length_mm":50.1,"bill_depth_mm":17.9,"flipper_length_mm":190,"body_mass_g":3400,"sex":"female","year":2009,"x":190,"y":50.1},{"species":"Chinstrap","island":"Dream","bill_length_mm":49,"bill_depth_mm":19.6,"flipper_length_mm":212,"body_mass_g":4300,"sex":"male","year":2009,"x":212,"y":49},{"species":"Chinstrap","island":"Dream","bill_length_mm":51.5,"bill_depth_mm":18.7,"flipper_length_mm":187,"body_mass_g":3250,"sex":"male","year":2009,"x":187,"y":51.5},{"species":"Chinstrap","island":"Dream","bill_length_mm":49.8,"bill_depth_mm":17.3,"flipper_length_mm":198,"body_mass_g":3675,"sex":"female","year":2009,"x":198,"y":49.8},{"species":"Chinstrap","island":"Dream","bill_length_mm":48.1,"bill_depth_mm":16.4,"flipper_length_mm":199,"body_mass_g":3325,"sex":"female","year":2009,"x":199,"y":48.1},{"species":"Chinstrap","island":"Dream","bill_length_mm":51.4,"bill_depth_mm":19,"flipper_length_mm":201,"body_mass_g":3950,"sex":"male","year":2009,"x":201,"y":51.4},{"species":"Chinstrap","island":"Dream","bill_length_mm":45.7,"bill_depth_mm":17.3,"flipper_length_mm":193,"body_mass_g":3600,"sex":"female","year":2009,"x":193,"y":45.7},{"species":"Chinstrap","island":"Dream","bill_length_mm":50.7,"bill_depth_mm":19.7,"flipper_length_mm":203,"body_mass_g":4050,"sex":"male","year":2009,"x":203,"y":50.7},{"species":"Chinstrap","island":"Dream","bill_length_mm":42.5,"bill_depth_mm":17.3,"flipper_length_mm":187,"body_mass_g":3350,"sex":"female","year":2009,"x":187,"y":42.5},{"species":"Chinstrap","island":"Dream","bill_length_mm":52.2,"bill_depth_mm":18.8,"flipper_length_mm":197,"body_mass_g":3450,"sex":"male","year":2009,"x":197,"y":52.2},{"species":"Chinstrap","island":"Dream","bill_length_mm":45.2,"bill_depth_mm":16.6,"flipper_length_mm":191,"body_mass_g":3250,"sex":"female","year":2009,"x":191,"y":45.2},{"species":"Chinstrap","island":"Dream","bill_length_mm":49.3,"bill_depth_mm":19.9,"flipper_length_mm":203,"body_mass_g":4050,"sex":"male","year":2009,"x":203,"y":49.3},{"species":"Chinstrap","island":"Dream","bill_length_mm":50.2,"bill_depth_mm":18.8,"flipper_length_mm":202,"body_mass_g":3800,"sex":"male","year":2009,"x":202,"y":50.2},{"species":"Chinstrap","island":"Dream","bill_length_mm":45.6,"bill_depth_mm":19.4,"flipper_length_mm":194,"body_mass_g":3525,"sex":"female","year":2009,"x":194,"y":45.6},{"species":"Chinstrap","island":"Dream","bill_length_mm":51.9,"bill_depth_mm":19.5,"flipper_length_mm":206,"body_mass_g":3950,"sex":"male","year":2009,"x":206,"y":51.9},{"species":"Chinstrap","island":"Dream","bill_length_mm":46.8,"bill_depth_mm":16.5,"flipper_length_mm":189,"body_mass_g":3650,"sex":"female","year":2009,"x":189,"y":46.8},{"species":"Chinstrap","island":"Dream","bill_length_mm":45.7,"bill_depth_mm":17,"flipper_length_mm":195,"body_mass_g":3650,"sex":"female","year":2009,"x":195,"y":45.7},{"species":"Chinstrap","island":"Dream","bill_length_mm":55.8,"bill_depth_mm":19.8,"flipper_length_mm":207,"body_mass_g":4000,"sex":"male","year":2009,"x":207,"y":55.8},{"species":"Chinstrap","island":"Dream","bill_length_mm":43.5,"bill_depth_mm":18.1,"flipper_length_mm":202,"body_mass_g":3400,"sex":"female","year":2009,"x":202,"y":43.5},{"species":"Chinstrap","island":"Dream","bill_length_mm":49.6,"bill_depth_mm":18.2,"flipper_length_mm":193,"body_mass_g":3775,"sex":"male","year":2009,"x":193,"y":49.6},{"species":"Chinstrap","island":"Dream","bill_length_mm":50.8,"bill_depth_mm":19,"flipper_length_mm":210,"body_mass_g":4100,"sex":"male","year":2009,"x":210,"y":50.8},{"species":"Chinstrap","island":"Dream","bill_length_mm":50.2,"bill_depth_mm":18.7,"flipper_length_mm":198,"body_mass_g":3775,"sex":"female","year":2009,"x":198,"y":50.2}],"type":"scatter"},{"name":"Gentoo","data":[{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.1,"bill_depth_mm":13.2,"flipper_length_mm":211,"body_mass_g":4500,"sex":"female","year":2007,"x":211,"y":46.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50,"bill_depth_mm":16.3,"flipper_length_mm":230,"body_mass_g":5700,"sex":"male","year":2007,"x":230,"y":50},{"species":"Gentoo","island":"Biscoe","bill_length_mm":48.7,"bill_depth_mm":14.1,"flipper_length_mm":210,"body_mass_g":4450,"sex":"female","year":2007,"x":210,"y":48.7},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50,"bill_depth_mm":15.2,"flipper_length_mm":218,"body_mass_g":5700,"sex":"male","year":2007,"x":218,"y":50},{"species":"Gentoo","island":"Biscoe","bill_length_mm":47.6,"bill_depth_mm":14.5,"flipper_length_mm":215,"body_mass_g":5400,"sex":"male","year":2007,"x":215,"y":47.6},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.5,"bill_depth_mm":13.5,"flipper_length_mm":210,"body_mass_g":4550,"sex":"female","year":2007,"x":210,"y":46.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.4,"bill_depth_mm":14.6,"flipper_length_mm":211,"body_mass_g":4800,"sex":"female","year":2007,"x":211,"y":45.4},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.7,"bill_depth_mm":15.3,"flipper_length_mm":219,"body_mass_g":5200,"sex":"male","year":2007,"x":219,"y":46.7},{"species":"Gentoo","island":"Biscoe","bill_length_mm":43.3,"bill_depth_mm":13.4,"flipper_length_mm":209,"body_mass_g":4400,"sex":"female","year":2007,"x":209,"y":43.3},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.8,"bill_depth_mm":15.4,"flipper_length_mm":215,"body_mass_g":5150,"sex":"male","year":2007,"x":215,"y":46.8},{"species":"Gentoo","island":"Biscoe","bill_length_mm":40.9,"bill_depth_mm":13.7,"flipper_length_mm":214,"body_mass_g":4650,"sex":"female","year":2007,"x":214,"y":40.9},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49,"bill_depth_mm":16.1,"flipper_length_mm":216,"body_mass_g":5550,"sex":"male","year":2007,"x":216,"y":49},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.5,"bill_depth_mm":13.7,"flipper_length_mm":214,"body_mass_g":4650,"sex":"female","year":2007,"x":214,"y":45.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":48.4,"bill_depth_mm":14.6,"flipper_length_mm":213,"body_mass_g":5850,"sex":"male","year":2007,"x":213,"y":48.4},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.8,"bill_depth_mm":14.6,"flipper_length_mm":210,"body_mass_g":4200,"sex":"female","year":2007,"x":210,"y":45.8},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49.3,"bill_depth_mm":15.7,"flipper_length_mm":217,"body_mass_g":5850,"sex":"male","year":2007,"x":217,"y":49.3},{"species":"Gentoo","island":"Biscoe","bill_length_mm":42,"bill_depth_mm":13.5,"flipper_length_mm":210,"body_mass_g":4150,"sex":"female","year":2007,"x":210,"y":42},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49.2,"bill_depth_mm":15.2,"flipper_length_mm":221,"body_mass_g":6300,"sex":"male","year":2007,"x":221,"y":49.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.2,"bill_depth_mm":14.5,"flipper_length_mm":209,"body_mass_g":4800,"sex":"female","year":2007,"x":209,"y":46.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":48.7,"bill_depth_mm":15.1,"flipper_length_mm":222,"body_mass_g":5350,"sex":"male","year":2007,"x":222,"y":48.7},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50.2,"bill_depth_mm":14.3,"flipper_length_mm":218,"body_mass_g":5700,"sex":"male","year":2007,"x":218,"y":50.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.1,"bill_depth_mm":14.5,"flipper_length_mm":215,"body_mass_g":5000,"sex":"female","year":2007,"x":215,"y":45.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.5,"bill_depth_mm":14.5,"flipper_length_mm":213,"body_mass_g":4400,"sex":"female","year":2007,"x":213,"y":46.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.3,"bill_depth_mm":15.8,"flipper_length_mm":215,"body_mass_g":5050,"sex":"male","year":2007,"x":215,"y":46.3},{"species":"Gentoo","island":"Biscoe","bill_length_mm":42.9,"bill_depth_mm":13.1,"flipper_length_mm":215,"body_mass_g":5000,"sex":"female","year":2007,"x":215,"y":42.9},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.1,"bill_depth_mm":15.1,"flipper_length_mm":215,"body_mass_g":5100,"sex":"male","year":2007,"x":215,"y":46.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":44.5,"bill_depth_mm":14.3,"flipper_length_mm":216,"body_mass_g":4100,"sex":null,"year":2007,"x":216,"y":44.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":47.8,"bill_depth_mm":15,"flipper_length_mm":215,"body_mass_g":5650,"sex":"male","year":2007,"x":215,"y":47.8},{"species":"Gentoo","island":"Biscoe","bill_length_mm":48.2,"bill_depth_mm":14.3,"flipper_length_mm":210,"body_mass_g":4600,"sex":"female","year":2007,"x":210,"y":48.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50,"bill_depth_mm":15.3,"flipper_length_mm":220,"body_mass_g":5550,"sex":"male","year":2007,"x":220,"y":50},{"species":"Gentoo","island":"Biscoe","bill_length_mm":47.3,"bill_depth_mm":15.3,"flipper_length_mm":222,"body_mass_g":5250,"sex":"male","year":2007,"x":222,"y":47.3},{"species":"Gentoo","island":"Biscoe","bill_length_mm":42.8,"bill_depth_mm":14.2,"flipper_length_mm":209,"body_mass_g":4700,"sex":"female","year":2007,"x":209,"y":42.8},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.1,"bill_depth_mm":14.5,"flipper_length_mm":207,"body_mass_g":5050,"sex":"female","year":2007,"x":207,"y":45.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":59.6,"bill_depth_mm":17,"flipper_length_mm":230,"body_mass_g":6050,"sex":"male","year":2007,"x":230,"y":59.6},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49.1,"bill_depth_mm":14.8,"flipper_length_mm":220,"body_mass_g":5150,"sex":"female","year":2008,"x":220,"y":49.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":48.4,"bill_depth_mm":16.3,"flipper_length_mm":220,"body_mass_g":5400,"sex":"male","year":2008,"x":220,"y":48.4},{"species":"Gentoo","island":"Biscoe","bill_length_mm":42.6,"bill_depth_mm":13.7,"flipper_length_mm":213,"body_mass_g":4950,"sex":"female","year":2008,"x":213,"y":42.6},{"species":"Gentoo","island":"Biscoe","bill_length_mm":44.4,"bill_depth_mm":17.3,"flipper_length_mm":219,"body_mass_g":5250,"sex":"male","year":2008,"x":219,"y":44.4},{"species":"Gentoo","island":"Biscoe","bill_length_mm":44,"bill_depth_mm":13.6,"flipper_length_mm":208,"body_mass_g":4350,"sex":"female","year":2008,"x":208,"y":44},{"species":"Gentoo","island":"Biscoe","bill_length_mm":48.7,"bill_depth_mm":15.7,"flipper_length_mm":208,"body_mass_g":5350,"sex":"male","year":2008,"x":208,"y":48.7},{"species":"Gentoo","island":"Biscoe","bill_length_mm":42.7,"bill_depth_mm":13.7,"flipper_length_mm":208,"body_mass_g":3950,"sex":"female","year":2008,"x":208,"y":42.7},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49.6,"bill_depth_mm":16,"flipper_length_mm":225,"body_mass_g":5700,"sex":"male","year":2008,"x":225,"y":49.6},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.3,"bill_depth_mm":13.7,"flipper_length_mm":210,"body_mass_g":4300,"sex":"female","year":2008,"x":210,"y":45.3},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49.6,"bill_depth_mm":15,"flipper_length_mm":216,"body_mass_g":4750,"sex":"male","year":2008,"x":216,"y":49.6},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50.5,"bill_depth_mm":15.9,"flipper_length_mm":222,"body_mass_g":5550,"sex":"male","year":2008,"x":222,"y":50.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":43.6,"bill_depth_mm":13.9,"flipper_length_mm":217,"body_mass_g":4900,"sex":"female","year":2008,"x":217,"y":43.6},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.5,"bill_depth_mm":13.9,"flipper_length_mm":210,"body_mass_g":4200,"sex":"female","year":2008,"x":210,"y":45.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50.5,"bill_depth_mm":15.9,"flipper_length_mm":225,"body_mass_g":5400,"sex":"male","year":2008,"x":225,"y":50.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":44.9,"bill_depth_mm":13.3,"flipper_length_mm":213,"body_mass_g":5100,"sex":"female","year":2008,"x":213,"y":44.9},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.2,"bill_depth_mm":15.8,"flipper_length_mm":215,"body_mass_g":5300,"sex":"male","year":2008,"x":215,"y":45.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.6,"bill_depth_mm":14.2,"flipper_length_mm":210,"body_mass_g":4850,"sex":"female","year":2008,"x":210,"y":46.6},{"species":"Gentoo","island":"Biscoe","bill_length_mm":48.5,"bill_depth_mm":14.1,"flipper_length_mm":220,"body_mass_g":5300,"sex":"male","year":2008,"x":220,"y":48.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.1,"bill_depth_mm":14.4,"flipper_length_mm":210,"body_mass_g":4400,"sex":"female","year":2008,"x":210,"y":45.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50.1,"bill_depth_mm":15,"flipper_length_mm":225,"body_mass_g":5000,"sex":"male","year":2008,"x":225,"y":50.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.5,"bill_depth_mm":14.4,"flipper_length_mm":217,"body_mass_g":4900,"sex":"female","year":2008,"x":217,"y":46.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45,"bill_depth_mm":15.4,"flipper_length_mm":220,"body_mass_g":5050,"sex":"male","year":2008,"x":220,"y":45},{"species":"Gentoo","island":"Biscoe","bill_length_mm":43.8,"bill_depth_mm":13.9,"flipper_length_mm":208,"body_mass_g":4300,"sex":"female","year":2008,"x":208,"y":43.8},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.5,"bill_depth_mm":15,"flipper_length_mm":220,"body_mass_g":5000,"sex":"male","year":2008,"x":220,"y":45.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":43.2,"bill_depth_mm":14.5,"flipper_length_mm":208,"body_mass_g":4450,"sex":"female","year":2008,"x":208,"y":43.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50.4,"bill_depth_mm":15.3,"flipper_length_mm":224,"body_mass_g":5550,"sex":"male","year":2008,"x":224,"y":50.4},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.3,"bill_depth_mm":13.8,"flipper_length_mm":208,"body_mass_g":4200,"sex":"female","year":2008,"x":208,"y":45.3},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.2,"bill_depth_mm":14.9,"flipper_length_mm":221,"body_mass_g":5300,"sex":"male","year":2008,"x":221,"y":46.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.7,"bill_depth_mm":13.9,"flipper_length_mm":214,"body_mass_g":4400,"sex":"female","year":2008,"x":214,"y":45.7},{"species":"Gentoo","island":"Biscoe","bill_length_mm":54.3,"bill_depth_mm":15.7,"flipper_length_mm":231,"body_mass_g":5650,"sex":"male","year":2008,"x":231,"y":54.3},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.8,"bill_depth_mm":14.2,"flipper_length_mm":219,"body_mass_g":4700,"sex":"female","year":2008,"x":219,"y":45.8},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49.8,"bill_depth_mm":16.8,"flipper_length_mm":230,"body_mass_g":5700,"sex":"male","year":2008,"x":230,"y":49.8},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.2,"bill_depth_mm":14.4,"flipper_length_mm":214,"body_mass_g":4650,"sex":null,"year":2008,"x":214,"y":46.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49.5,"bill_depth_mm":16.2,"flipper_length_mm":229,"body_mass_g":5800,"sex":"male","year":2008,"x":229,"y":49.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":43.5,"bill_depth_mm":14.2,"flipper_length_mm":220,"body_mass_g":4700,"sex":"female","year":2008,"x":220,"y":43.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50.7,"bill_depth_mm":15,"flipper_length_mm":223,"body_mass_g":5550,"sex":"male","year":2008,"x":223,"y":50.7},{"species":"Gentoo","island":"Biscoe","bill_length_mm":47.7,"bill_depth_mm":15,"flipper_length_mm":216,"body_mass_g":4750,"sex":"female","year":2008,"x":216,"y":47.7},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.4,"bill_depth_mm":15.6,"flipper_length_mm":221,"body_mass_g":5000,"sex":"male","year":2008,"x":221,"y":46.4},{"species":"Gentoo","island":"Biscoe","bill_length_mm":48.2,"bill_depth_mm":15.6,"flipper_length_mm":221,"body_mass_g":5100,"sex":"male","year":2008,"x":221,"y":48.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.5,"bill_depth_mm":14.8,"flipper_length_mm":217,"body_mass_g":5200,"sex":"female","year":2008,"x":217,"y":46.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.4,"bill_depth_mm":15,"flipper_length_mm":216,"body_mass_g":4700,"sex":"female","year":2008,"x":216,"y":46.4},{"species":"Gentoo","island":"Biscoe","bill_length_mm":48.6,"bill_depth_mm":16,"flipper_length_mm":230,"body_mass_g":5800,"sex":"male","year":2008,"x":230,"y":48.6},{"species":"Gentoo","island":"Biscoe","bill_length_mm":47.5,"bill_depth_mm":14.2,"flipper_length_mm":209,"body_mass_g":4600,"sex":"female","year":2008,"x":209,"y":47.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":51.1,"bill_depth_mm":16.3,"flipper_length_mm":220,"body_mass_g":6000,"sex":"male","year":2008,"x":220,"y":51.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.2,"bill_depth_mm":13.8,"flipper_length_mm":215,"body_mass_g":4750,"sex":"female","year":2008,"x":215,"y":45.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.2,"bill_depth_mm":16.4,"flipper_length_mm":223,"body_mass_g":5950,"sex":"male","year":2008,"x":223,"y":45.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49.1,"bill_depth_mm":14.5,"flipper_length_mm":212,"body_mass_g":4625,"sex":"female","year":2009,"x":212,"y":49.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":52.5,"bill_depth_mm":15.6,"flipper_length_mm":221,"body_mass_g":5450,"sex":"male","year":2009,"x":221,"y":52.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":47.4,"bill_depth_mm":14.6,"flipper_length_mm":212,"body_mass_g":4725,"sex":"female","year":2009,"x":212,"y":47.4},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50,"bill_depth_mm":15.9,"flipper_length_mm":224,"body_mass_g":5350,"sex":"male","year":2009,"x":224,"y":50},{"species":"Gentoo","island":"Biscoe","bill_length_mm":44.9,"bill_depth_mm":13.8,"flipper_length_mm":212,"body_mass_g":4750,"sex":"female","year":2009,"x":212,"y":44.9},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50.8,"bill_depth_mm":17.3,"flipper_length_mm":228,"body_mass_g":5600,"sex":"male","year":2009,"x":228,"y":50.8},{"species":"Gentoo","island":"Biscoe","bill_length_mm":43.4,"bill_depth_mm":14.4,"flipper_length_mm":218,"body_mass_g":4600,"sex":"female","year":2009,"x":218,"y":43.4},{"species":"Gentoo","island":"Biscoe","bill_length_mm":51.3,"bill_depth_mm":14.2,"flipper_length_mm":218,"body_mass_g":5300,"sex":"male","year":2009,"x":218,"y":51.3},{"species":"Gentoo","island":"Biscoe","bill_length_mm":47.5,"bill_depth_mm":14,"flipper_length_mm":212,"body_mass_g":4875,"sex":"female","year":2009,"x":212,"y":47.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":52.1,"bill_depth_mm":17,"flipper_length_mm":230,"body_mass_g":5550,"sex":"male","year":2009,"x":230,"y":52.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":47.5,"bill_depth_mm":15,"flipper_length_mm":218,"body_mass_g":4950,"sex":"female","year":2009,"x":218,"y":47.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":52.2,"bill_depth_mm":17.1,"flipper_length_mm":228,"body_mass_g":5400,"sex":"male","year":2009,"x":228,"y":52.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.5,"bill_depth_mm":14.5,"flipper_length_mm":212,"body_mass_g":4750,"sex":"female","year":2009,"x":212,"y":45.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49.5,"bill_depth_mm":16.1,"flipper_length_mm":224,"body_mass_g":5650,"sex":"male","year":2009,"x":224,"y":49.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":44.5,"bill_depth_mm":14.7,"flipper_length_mm":214,"body_mass_g":4850,"sex":"female","year":2009,"x":214,"y":44.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50.8,"bill_depth_mm":15.7,"flipper_length_mm":226,"body_mass_g":5200,"sex":"male","year":2009,"x":226,"y":50.8},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49.4,"bill_depth_mm":15.8,"flipper_length_mm":216,"body_mass_g":4925,"sex":"male","year":2009,"x":216,"y":49.4},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.9,"bill_depth_mm":14.6,"flipper_length_mm":222,"body_mass_g":4875,"sex":"female","year":2009,"x":222,"y":46.9},{"species":"Gentoo","island":"Biscoe","bill_length_mm":48.4,"bill_depth_mm":14.4,"flipper_length_mm":203,"body_mass_g":4625,"sex":"female","year":2009,"x":203,"y":48.4},{"species":"Gentoo","island":"Biscoe","bill_length_mm":51.1,"bill_depth_mm":16.5,"flipper_length_mm":225,"body_mass_g":5250,"sex":"male","year":2009,"x":225,"y":51.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":48.5,"bill_depth_mm":15,"flipper_length_mm":219,"body_mass_g":4850,"sex":"female","year":2009,"x":219,"y":48.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":55.9,"bill_depth_mm":17,"flipper_length_mm":228,"body_mass_g":5600,"sex":"male","year":2009,"x":228,"y":55.9},{"species":"Gentoo","island":"Biscoe","bill_length_mm":47.2,"bill_depth_mm":15.5,"flipper_length_mm":215,"body_mass_g":4975,"sex":"female","year":2009,"x":215,"y":47.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49.1,"bill_depth_mm":15,"flipper_length_mm":228,"body_mass_g":5500,"sex":"male","year":2009,"x":228,"y":49.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":47.3,"bill_depth_mm":13.8,"flipper_length_mm":216,"body_mass_g":4725,"sex":null,"year":2009,"x":216,"y":47.3},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.8,"bill_depth_mm":16.1,"flipper_length_mm":215,"body_mass_g":5500,"sex":"male","year":2009,"x":215,"y":46.8},{"species":"Gentoo","island":"Biscoe","bill_length_mm":41.7,"bill_depth_mm":14.7,"flipper_length_mm":210,"body_mass_g":4700,"sex":"female","year":2009,"x":210,"y":41.7},{"species":"Gentoo","island":"Biscoe","bill_length_mm":53.4,"bill_depth_mm":15.8,"flipper_length_mm":219,"body_mass_g":5500,"sex":"male","year":2009,"x":219,"y":53.4},{"species":"Gentoo","island":"Biscoe","bill_length_mm":43.3,"bill_depth_mm":14,"flipper_length_mm":208,"body_mass_g":4575,"sex":"female","year":2009,"x":208,"y":43.3},{"species":"Gentoo","island":"Biscoe","bill_length_mm":48.1,"bill_depth_mm":15.1,"flipper_length_mm":209,"body_mass_g":5500,"sex":"male","year":2009,"x":209,"y":48.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50.5,"bill_depth_mm":15.2,"flipper_length_mm":216,"body_mass_g":5000,"sex":"female","year":2009,"x":216,"y":50.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49.8,"bill_depth_mm":15.9,"flipper_length_mm":229,"body_mass_g":5950,"sex":"male","year":2009,"x":229,"y":49.8},{"species":"Gentoo","island":"Biscoe","bill_length_mm":43.5,"bill_depth_mm":15.2,"flipper_length_mm":213,"body_mass_g":4650,"sex":"female","year":2009,"x":213,"y":43.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":51.5,"bill_depth_mm":16.3,"flipper_length_mm":230,"body_mass_g":5500,"sex":"male","year":2009,"x":230,"y":51.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.2,"bill_depth_mm":14.1,"flipper_length_mm":217,"body_mass_g":4375,"sex":"female","year":2009,"x":217,"y":46.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":55.1,"bill_depth_mm":16,"flipper_length_mm":230,"body_mass_g":5850,"sex":"male","year":2009,"x":230,"y":55.1},{"species":"Gentoo","island":"Biscoe","bill_length_mm":44.5,"bill_depth_mm":15.7,"flipper_length_mm":217,"body_mass_g":4875,"sex":null,"year":2009,"x":217,"y":44.5},{"species":"Gentoo","island":"Biscoe","bill_length_mm":48.8,"bill_depth_mm":16.2,"flipper_length_mm":222,"body_mass_g":6000,"sex":"male","year":2009,"x":222,"y":48.8},{"species":"Gentoo","island":"Biscoe","bill_length_mm":47.2,"bill_depth_mm":13.7,"flipper_length_mm":214,"body_mass_g":4925,"sex":"female","year":2009,"x":214,"y":47.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":null,"bill_depth_mm":null,"flipper_length_mm":null,"body_mass_g":null,"sex":null,"year":2009,"x":null,"y":null},{"species":"Gentoo","island":"Biscoe","bill_length_mm":46.8,"bill_depth_mm":14.3,"flipper_length_mm":215,"body_mass_g":4850,"sex":"female","year":2009,"x":215,"y":46.8},{"species":"Gentoo","island":"Biscoe","bill_length_mm":50.4,"bill_depth_mm":15.7,"flipper_length_mm":222,"body_mass_g":5750,"sex":"male","year":2009,"x":222,"y":50.4},{"species":"Gentoo","island":"Biscoe","bill_length_mm":45.2,"bill_depth_mm":14.8,"flipper_length_mm":212,"body_mass_g":5200,"sex":"female","year":2009,"x":212,"y":45.2},{"species":"Gentoo","island":"Biscoe","bill_length_mm":49.9,"bill_depth_mm":16.1,"flipper_length_mm":213,"body_mass_g":5400,"sex":"male","year":2009,"x":213,"y":49.9}],"type":"scatter"}],"xAxis":{"title":{"text":"Flipper length (mm)"},"accessibility":{"enabled":true,"description":"flipper length in millimeters"}},"subtitle":{"text":"Grouped by species: Adelie, Chinstrap, and Gentoo"},"annotations":[{"labels":[{"point":{"x":201,"y":54.2,"xAxis":0,"yAxis":0},"text":"Chinstrap<br/>x: {x}<br/>y: {y}","shape":"connector"}],"labelOptions":{"accessibility":{"description":"A Chinstrap penguin observation mapping to a flipper length of 201mm and bill length of 54.2mm."}}}],"caption":{"text":"Scatterplot of the palmerpenguins dataset showing data points clustered by species (Adelie, Chinstrap, and Gentoo) using the highcharter package making it possible to focus on one cluster and identify the x and y values of a specific data point. In this case the data point is a Chinstrap penguin observation mapping to a flipper length of 201mm and bill length of 54.2mm."},"colors":["darkorange","purple","#057276"]},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadCSV":"Download CSV","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","downloadXLS":"Download XLS","drillUpText":"◁ Back to {series.name}","exitFullscreen":"Exit from full screen","exportData":{"annotationHeader":"Annotations","categoryDatetimeHeader":"DateTime","categoryHeader":"Category"},"hideData":"Hide data table","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbolMagnitude":1000,"numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"shortWeekdays":["Sat","Sun","Mon","Tue","Wed","Thu","Fri"],"thousandsSep":" ","viewData":"View data table","viewFullscreen":"View in full screen","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
</div>
</div>
<p>Looking at the code for this chart, you may be wondering if I lost control of the keyboard when writing the <em>descriptions</em> of the axes, since I didn’t capitalize their first letters. Fear not! It was intentional—I wanted the text to look right in something I’ve mentioned, but not gone through in detail: the <a href="https://api.highcharts.com/highcharts/accessibility.screenReaderSection"><code>screenReaderSection</code></a>.</p>
<section id="the-hidden-screen-reader-div" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="the-hidden-screen-reader-div">The hidden screen-reader <code>&lt;div&gt;</code></h3>
<p>Though it’s hidden from display, you can see how your Highcharts visualization will “look” to a screen reader in the generated HTML. There’s a special <code>&lt;div&gt;</code> with information that comes from a the templated <code>screenReaderSection</code>. In the case of the chart above, the outer HTML is:<sup>1</sup></p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>HTML</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb3" data-filename="HTML" style="background: #f1f3f5;"><pre class="sourceCode html code-with-copy"><code class="sourceCode html"><span id="cb3-1"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> id</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"highcharts-screen-reader-region-before-0"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> </span></span>
<span id="cb3-2"><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">aria-label</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Chart screen reader information."</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> role</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"region"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> </span></span>
<span id="cb3-3"><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">aria-hidden</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"false"</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;"> style</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"position: relative;"</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div></div>
</div>
<p>ARIA stands for <a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA">Accessible Rich Internet Applications</a>. <code>aria-hidden="false"</code>, in effect, tells a screen reader <em>not</em> to ignore this section even though it’s not visually displayed.</p>
<p>The template for the contents of this section is actually a customizable parameter (<a href="https://api.highcharts.com/highcharts/accessibility.screenReaderSection.beforeChartFormat"><code>screenReadersection.beforeChartFormat</code></a>), but I used the default format:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>HTML</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb4" data-filename="HTML" style="background: #f1f3f5;"><pre class="sourceCode html code-with-copy"><code class="sourceCode html"><span id="cb4-1"><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span>{headingTagName}&gt;{chartTitle}<span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span>/{headingTagName}&gt;<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>{typeDescription}<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb4-2"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>{chartSubtitle}<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>{chartLongdesc}<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>{playAsSoundButton}<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb4-3"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>{viewTableButton}<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb4-4"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>{xAxisDescription}<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>{yAxisDescription}<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb4-5"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>{annotationsTitle}{annotationsList}<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div></div>
</div>
<p>The information contained is a combination of information we specified manually (e.g.&nbsp;the title and subtitle), and information derived by the annotation module (e.g.&nbsp;the number of groups in our data).</p>
<p>For the chart above, it begins:</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>HTML</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb5" data-filename="HTML" style="background: #f1f3f5;"><pre class="sourceCode html code-with-copy"><code class="sourceCode html"><span id="cb5-1"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">p</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>Flipper length vs. bill length in {palmerpenguins}<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">p</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb5-2"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>Scatter chart with 3 data series.<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb5-3"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>Grouped by species: Adelie, Chinstrap, and Gentoo<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div></div>
</div>
<p>Then followed by a <code>&lt;div&gt;</code> containing our chart’s caption. After an option to view the information as a data table rather than a chart, we come to axis descriptions including ranges, which can be automatically calculated or described manually as a <a href="https://api.highcharts.com/highcharts/xAxis.accessibility.rangeDescription"><code>rangeDescription</code></a>.</p>
<aside>
This is where I wanted those descriptions to be lower-cased.
</aside>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>HTML</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb6" data-filename="HTML" style="background: #f1f3f5;"><pre class="sourceCode html code-with-copy"><code class="sourceCode html"><span id="cb6-1"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>The chart has 1 X axis displaying flipper length in millimeters. Range: 171.41 to 231.59.<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span>
<span id="cb6-2"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>The chart has 1 Y axis displaying bill length in millimeters. Range: 30 to 70.<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">div</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div></div>
</div>
<p>And, lastly, we come to “Chart annotations summary”, which contains an unordered list of the annotations. In our case, this contains just one item.</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>HTML</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb7" data-filename="HTML" style="background: #f1f3f5;"><pre class="sourceCode html code-with-copy"><code class="sourceCode html"><span id="cb7-1"><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">li</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span>A Chinstrap penguin observation mapping to a flipper length of 201mm and bill length of 54.2mm.<span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;/</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">li</span><span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;</span></span></code></pre></div></div>
</div>
</section>
</section>
<section id="fin" class="level2">
<h2 class="anchored" data-anchor-id="fin">Fin</h2>
<p>There’s one <a href="../../blog/2021-11_highcharter-and-the-accessibility-module-part-5/index.html" aria-label="highcharter and the accessibility module part 5" title="highcharter and the accessibility module part 5">last post</a> to come in this series. There, we’ll re-create an example from <a href="https://www.highcharts.com/docs/advanced-chart-features/annotations-module">Highcharts’ annotation module documentation</a>, and see what it takes to get the screen-reader list of annotations working with more than one item.</p>



</section>


<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-canelon_2021" class="csl-entry">
Canelón, Silvia. 2021. <span>“Resources for <span>Data</span> <span>Viz</span> <span>Accessibility</span>.”</span> <a href="https://silvia.rbind.io/blog/2021-curated-compilations/01-data-viz-a11y/">https://silvia.rbind.io/blog/2021-curated-compilations/01-data-viz-a11y/</a>.
</div>
<div id="ref-horst_2021" class="csl-entry">
Horst, Allison Marie, Alison Presmanes Hill, and Kristen B Gorman. 2020. <em>Palmerpenguins: Palmer Archipelago (Antarctica) Penguin Data</em>. <a href="https://allisonhorst.github.io/palmerpenguins/">https://allisonhorst.github.io/palmerpenguins/</a>.
</div>
<div id="ref-kunst_2021" class="csl-entry">
Kunst, Joshua. 2021. <em>Highcharter: A Wrapper for the ’Highcharts’ Library</em>. <a href="https://jkunst.com/highcharter">https://jkunst.com/highcharter</a>.
</div>
</div></section><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Footnotes</h2>

<ol>
<li id="fn1"><p>I’ve added some hard line breaks that aren’t there in the original for ease of reading.↩︎</p></li>
</ol>
</section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en_us">CC BY-SA 4.0</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2021,
  author = {Averick, Mara},
  title = {Accessible \{Highcharter\}: {Part} 4},
  date = {2021-11-15},
  url = {https://dataand.me/blog/2021-11_accessible-highcharter-part-4/},
  doi = {10.59350/sf1fv-wse56},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2021" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2021. <span>“Accessible {Highcharter}: Part 4.”</span>
November 15, 2021. <a href="https://doi.org/10.59350/sf1fv-wse56">https://doi.org/10.59350/sf1fv-wse56</a>.
</div></div></section></div> ]]></description>
  <category>R</category>
  <category>data visualization</category>
  <category>accessibility</category>
  <category>highcharter</category>
  <category>Highcharts</category>
  <guid>https://dataand.me/blog/2021-11_accessible-highcharter-part-4/</guid>
  <pubDate>Mon, 15 Nov 2021 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/blog/2021-11_accessible-highcharter-part-4/highcharter-flipper-length-vs-bill-l-min.png" medium="image" type="image/png" height="109" width="144"/>
</item>
<item>
  <title>Highcharts accessibility module with {highcharter}: Part 3</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/blog/2021-11_highcharts-accessibility-module-with-highcharter-part-3/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<p>In the first two parts of <a href="../../blog.html#category=highcharter">this series</a> we introduced the <a href="https://www.highcharts.com/docs/accessibility/accessibility-module">Highcharts accessibility module</a>, the <a href="https://jkunst.com/highcharter/">{highcharter}</a> R package, and created some working examples with accessibility features turned on.</p>
<p>Here, we’ll follow in the vein as <a href="../../blog/2021-11_higcharter-and-the-highcharts-accessibility-module-part-2/index.html" aria-label="highcharter and the Highcharts accessibility module part 2" title="highcharter and the Highcharts accessibility module part 2">part 2</a> by re-creating one of the <a href="https://www.highcharts.com/demo#accessible-charts">accessible chart demos</a> from Highcharts.</p>
<section id="accessible-pie-chart" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="accessible-pie-chart">Accessible pie chart</h2>
<p>Highcharts’ <a href="https://www.highcharts.com/demo/accessible-pie">accessible pie chart</a> isn’t what I’d call “easy on the eyes.” Heck, they even added an option to turn the pattern fills off (a feat that I do not accomplish below).</p>
<div class="cell page-columns page-full" data-layout-align="center">
<details class="code-fold">
<summary>View code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(highcharter)</span>
<span id="cb1-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">highchart</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-3">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># add dependencies</span></span>
<span id="cb1-4">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/exporting.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-5">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/export-data.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-6">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/accessibility.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-7">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/pattern-fill.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-8">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_tooltip</span>(</span>
<span id="cb1-9">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">valueSuffix =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"%"</span>,</span>
<span id="cb1-10">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">borderColor =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#8ae"</span></span>
<span id="cb1-11">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-12">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_title</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Primary desktop/laptop screen readers"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-13">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_subtitle</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Source: WebAIM."</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-14">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_caption</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Pie chart demonstrating some accessibility features of Highcharts. The chart shows which screen reader is used as the primary screen reader by the respondents, with NVDA currently being the most popular one. The JAWS screen reader is following closely behind."</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-15">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_exporting</span>(</span>
<span id="cb1-16">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb1-17">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-18">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span></span>
<span id="cb1-19">    )</span>
<span id="cb1-20">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-21">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_series</span>(</span>
<span id="cb1-22">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">type =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"pie"</span>,</span>
<span id="cb1-23">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Screen reader usage"</span>,</span>
<span id="cb1-24">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-25">      <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-26">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"NVDA"</span>,</span>
<span id="cb1-27">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">40.6</span>,</span>
<span id="cb1-28">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-29">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">pattern =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-30">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">path =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"M 0 0 L 5 5 M 4.5 -0.5 L 5.5 0.5 M -0.5 4.5 L 0.5 5.5"</span>,</span>
<span id="cb1-31">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span>  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#0b7383"</span>,</span>
<span id="cb1-32">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">width =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,</span>
<span id="cb1-33">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">height =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,</span>
<span id="cb1-34">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">patternTransform =</span>  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"scale(1.4 1.4)"</span></span>
<span id="cb1-35">          )</span>
<span id="cb1-36">        )</span>
<span id="cb1-37">      ),</span>
<span id="cb1-38">      <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-39">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"JAWS"</span>,</span>
<span id="cb1-40">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">40.1</span>,</span>
<span id="cb1-41">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-42">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">pattern =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-43">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">path =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"M 0 5 L 5 0 M -0.5 0.5 L 0.5 -0.5 M 4.5 5.5 L 5.5 4.5"</span>,</span>
<span id="cb1-44">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#4372da"</span>,</span>
<span id="cb1-45">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">width =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,</span>
<span id="cb1-46">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">height =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,</span>
<span id="cb1-47">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">patternTransform =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"scale(1.4 1.4)"</span></span>
<span id="cb1-48">          )</span>
<span id="cb1-49">        )</span>
<span id="cb1-50">      ),</span>
<span id="cb1-51">      <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-52">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"VoiceOver"</span>,</span>
<span id="cb1-53">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">12.9</span>,</span>
<span id="cb1-54">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-55">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">pattern =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-56">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">path =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"M 2 0 L 2 5 M 4 0 L 4 5"</span>,</span>
<span id="cb1-57">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#6B26F0"</span>,</span>
<span id="cb1-58">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">width =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,</span>
<span id="cb1-59">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">height =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,</span>
<span id="cb1-60">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">patternTransform =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"scale(1.4 1.4)"</span></span>
<span id="cb1-61">          )</span>
<span id="cb1-62">        )</span>
<span id="cb1-63">      ),</span>
<span id="cb1-64">      <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-65">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ZoomText"</span>,</span>
<span id="cb1-66">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>,</span>
<span id="cb1-67">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-68">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">pattern =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-69">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">path =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"M 0 2 L 5 2 M 0 4 L 5 4"</span>,</span>
<span id="cb1-70">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#222"</span>,</span>
<span id="cb1-71">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">width =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,</span>
<span id="cb1-72">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">height =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,</span>
<span id="cb1-73">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">patternTransform =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"scale(1.4 1.4)"</span></span>
<span id="cb1-74">          )</span>
<span id="cb1-75">        )</span>
<span id="cb1-76">      ),</span>
<span id="cb1-77">      <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-78">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Other"</span>,</span>
<span id="cb1-79">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">4.4</span>,</span>
<span id="cb1-80">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-81">          <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">pattern =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-82">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">path =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"M 0 1.5 L 2.5 1.5 L 2.5 0 M 2.5 5 L 2.5 3.5 L 5 3.5"</span>,</span>
<span id="cb1-83">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#D42D1A"</span>,</span>
<span id="cb1-84">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">width =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,</span>
<span id="cb1-85">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">height =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>,</span>
<span id="cb1-86">            <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">patternTransform =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"scale(1.4 1.4)"</span></span>
<span id="cb1-87">          )</span>
<span id="cb1-88">        )</span>
<span id="cb1-89">      )</span>
<span id="cb1-90">    )</span>
<span id="cb1-91">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb1-92">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_plotOptions</span>(</span>
<span id="cb1-93">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">series =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-94">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dataLabels =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-95">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb1-96">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">connectorColor =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#777"</span>,</span>
<span id="cb1-97">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">format =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"&lt;b&gt;{point.name}&lt;/b&gt;: {point.percentage:.1f} %"</span></span>
<span id="cb1-98">      ),</span>
<span id="cb1-99">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">cursor =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"pointer"</span>,</span>
<span id="cb1-100">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">borderWidth =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span></span>
<span id="cb1-101">    ),</span>
<span id="cb1-102">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-103">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb1-104">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">keyboardNavigation =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>)</span>
<span id="cb1-105">    )</span>
<span id="cb1-106">  )</span></code></pre></div></div>
</details>
<div class="cell-output-display column-body-outset">
<div class="highchart html-widget html-fill-item" id="htmlwidget-9bf32ee98a7f67322278" style="width:100%;height:464px;"></div>
<script type="application/json" data-for="htmlwidget-9bf32ee98a7f67322278">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Primary desktop/laptop screen readers"},"yAxis":{"title":{"text":null}},"credits":{"enabled":false},"exporting":{"enabled":true,"accessibility":{"enabled":true}},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0,"dataLabels":{"enabled":true,"connectorColor":"#777","format":"<b>{point.name}<\/b>: {point.percentage:.1f} %"},"cursor":"pointer","borderWidth":3},"treemap":{"layoutAlgorithm":"squarified"},"accessibility":{"enabled":true,"keyboardNavigation":{"enabled":true}}},"tooltip":{"valueSuffix":"%","borderColor":"#8ae"},"subtitle":{"text":"Source: WebAIM."},"caption":{"text":"Pie chart demonstrating some accessibility features of Highcharts. The chart shows which screen reader is used as the primary screen reader by the respondents, with NVDA currently being the most popular one. The JAWS screen reader is following closely behind."},"series":[{"type":"pie","name":"Screen reader usage","data":[{"name":"NVDA","y":40.6,"color":{"pattern":{"path":"M 0 0 L 5 5 M 4.5 -0.5 L 5.5 0.5 M -0.5 4.5 L 0.5 5.5","color":"#0b7383","width":5,"height":5,"patternTransform":"scale(1.4 1.4)"}}},{"name":"JAWS","y":40.1,"color":{"pattern":{"path":"M 0 5 L 5 0 M -0.5 0.5 L 0.5 -0.5 M 4.5 5.5 L 5.5 4.5","color":"#4372da","width":5,"height":5,"patternTransform":"scale(1.4 1.4)"}}},{"name":"VoiceOver","y":12.9,"color":{"pattern":{"path":"M 2 0 L 2 5 M 4 0 L 4 5","color":"#6B26F0","width":5,"height":5,"patternTransform":"scale(1.4 1.4)"}}},{"name":"ZoomText","y":2,"color":{"pattern":{"path":"M 0 2 L 5 2 M 0 4 L 5 4","color":"#222","width":5,"height":5,"patternTransform":"scale(1.4 1.4)"}}},{"name":"Other","y":4.4,"color":{"pattern":{"path":"M 0 1.5 L 2.5 1.5 L 2.5 0 M 2.5 5 L 2.5 3.5 L 5 3.5","color":"#D42D1A","width":5,"height":5,"patternTransform":"scale(1.4 1.4)"}}}]}]},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadCSV":"Download CSV","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","downloadXLS":"Download XLS","drillUpText":"◁ Back to {series.name}","exitFullscreen":"Exit from full screen","exportData":{"annotationHeader":"Annotations","categoryDatetimeHeader":"DateTime","categoryHeader":"Category"},"hideData":"Hide data table","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbolMagnitude":1000,"numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"shortWeekdays":["Sat","Sun","Mon","Tue","Wed","Thu","Fri"],"thousandsSep":" ","viewData":"View data table","viewFullscreen":"View in full screen","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
</div>
</div>
<p>As with the <a href="../../blog/2021-11_higcharter-and-the-highcharts-accessibility-module-part-2/index.html#line-chart-original-edition">first version of the accessible line chart</a> in part 2 of this series, the code here doesn’t look terribly R-like (in fact, we’re not using a data-frame object at all). The reason is the same, too: in order to get the dual encoding (in this case, colour + pattern), each item was defined individually.</p>
<aside>
Making a <a href="https://jkunst.com/highcharter/articles/highcharts.html#pie">basic pie chart using {highcharter}</a> is not a heavy task.
</aside>
<p>The code above is very much reflects the fact that I reverse engineered this chart from the <a href="https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/demo/accessible-pie">original version</a>, which combined the indexed pattern definitions from the <a href="https://www.highcharts.com/docs/chart-design-and-style/pattern-fills#svg-patterns">Highcharts pattern fill module</a> with colours (see un-run JavaScript code below).</p>
<div class="code-with-filename">
<div class="code-with-filename-file">
<pre><strong>JavaScript</strong></pre>
</div>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" data-filename="JavaScript" style="background: #f1f3f5;"><pre class="sourceCode javascript code-with-copy"><code class="sourceCode javascript"><span id="cb2-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">var</span> clrs <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> Highcharts<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">getOptions</span>()<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">colors</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb2-2"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">var</span> pieColors <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [clrs[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> clrs[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> clrs[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> clrs[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> clrs[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>]]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb2-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// Get a default pattern, but using the pieColors above.</span></span>
<span id="cb2-4"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// The i-argument refers to which default pattern to use</span></span>
<span id="cb2-5"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">getPattern</span>(i) {</span>
<span id="cb2-6">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">return</span> {</span>
<span id="cb2-7">        <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">pattern</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> Highcharts<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">merge</span>(Highcharts<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">patterns</span>[i]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> {</span>
<span id="cb2-8">            <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">color</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span> pieColors[i]</span>
<span id="cb2-9">        })</span>
<span id="cb2-10">    }<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span>
<span id="cb2-11">}</span>
<span id="cb2-12"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">// Get 5 patterns</span></span>
<span id="cb2-13"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">var</span> patterns <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">,</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>]<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">.</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">map</span>(getPattern)<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span></code></pre></div></div>
</div>
<p>I imagine there’s a way to reference the <code>patternIndex</code> from the R code, but I wasn’t able to figure it out. I actually <a href="https://developer.chrome.com/docs/devtools/console/javascript/">ran the JavaScript in my console</a> to get the color/pattern definitions (e.g.&nbsp;<code>Highcharts.patterns[0]</code>) used for each item in the series.</p>
</section>
<section id="takeaways" class="level2">
<h2 class="anchored" data-anchor-id="takeaways">Takeaways?</h2>
<p>I’d say the main lesson learned for this one was that the vignette written by Tom Bishop in the {highcharter} docs, <a href="https://jkunst.com/highcharter/articles/highchartsjs-api-basics.html">JavaScript API Basics</a>, is helpful <em>and</em> accurate:</p>
<blockquote class="blockquote">
<p>loosely understanding…how functions and their arguments map to build JSON objects that define JavaScript Highcharts should supercharge your use of the R package.</p>
</blockquote>
<p><a href="../../blog/2021-11_accessible-highcharter-part-4/index.html" aria-label="Accessible highcharter Part 4" title="Accessible highcharter Part 4">Next time</a>, we’ll take a closer look at my personal favorite feature from the accessibility module: the information for screen readers generated.</p>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en_us">CC BY-SA 4.0</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2021,
  author = {Averick, Mara},
  title = {Highcharts Accessibility Module with \{Highcharter\}: {Part}
    3},
  date = {2021-11-13},
  url = {https://dataand.me/blog/2021-11_highcharts-accessibility-module-with-highcharter-part-3/},
  doi = {10.59350/sya1k-j8f45},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2021" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2021. <span>“Highcharts Accessibility Module with
{Highcharter}: Part 3.”</span> November 13, 2021. <a href="https://doi.org/10.59350/sya1k-j8f45">https://doi.org/10.59350/sya1k-j8f45</a>.
</div></div></section></div> ]]></description>
  <category>R</category>
  <category>data visualization</category>
  <category>accessibility</category>
  <category>highcharter</category>
  <category>Highcharts</category>
  <guid>https://dataand.me/blog/2021-11_highcharts-accessibility-module-with-highcharter-part-3/</guid>
  <pubDate>Sat, 13 Nov 2021 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/blog/2021-11_highcharts-accessibility-module-with-highcharter-part-3/highcharter-primary-desktoplaptop-screen-reader-min.png" medium="image" type="image/png" height="103" width="144"/>
</item>
<item>
  <title>{higcharter} and the Highcharts accessibility module: Part 2</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/blog/2021-11_higcharter-and-the-highcharts-accessibility-module-part-2/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<p>Today we’ll be using the Joshua Kunst’s <a href="https://jkunst.com/highcharter/">{highcharter}</a> package to re-create the first example from the Highcharts documentation for its <a href="https://www.highcharts.com/docs/accessibility/accessibility-module">accessibility module</a>, <a href="https://www.highcharts.com/demo/accessible-line">an accessible line chart</a> showing screen reader popularity over time, as an <a href="https://www.htmlwidgets.org/">htmlwidget</a>.</p>
<p>As mentioned in <a href="../../blog/2021-11_adventures-with-the-highcharts-accessibility-module-part-1/index.html" aria-label="Adventures with the Highcharts accessibility module part 1" title="Adventures with the Highcharts accessibility module part 1">the first part of this series</a>, this chart was the first in my highcharter-accessibility experiments.<sup>1</sup> Thus, it’s only in hindsight that I realize that it has some features that result in a less R-like syntax than is usually possible when using {highcharter}. So, we’ll go create two versions of the visualization: one that most closely resembles the JavaScript-API-based original, and one that (to me) felt more natural to write.</p>
<section id="laying-the-groundwork" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="laying-the-groundwork">Laying the groundwork</h2>
<p>Before you make a chart, you need data! Since the original version of the visualization uses the <a href="https://www.highcharts.com/docs/export-module/export-module-overview">Highcharts export module</a>, I was able to simply export the data as a CSV (which I then stashed in a <a href="https://gist.github.com/batpigandme/aeb30566f899cdcdeb6024c0344d1ae1">Gist</a>), and read the data back in using <code>readr::read_csv()</code>.</p>
<aside>
Even if you’re not a JavaScript developer (I’m not), the <a href="https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/demo/accessible-line">original code for this chart</a> is handy to look at (and <em>should</em> somewhat resemble its R-code counterpart).
</aside>
<div class="cell">
<details class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">suppressPackageStartupMessages</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(tidyverse))</span>
<span id="cb1-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(highcharter)</span>
<span id="cb1-3"></span>
<span id="cb1-4"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># read in the data</span></span>
<span id="cb1-5">url <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"https://gist.githubusercontent.com/batpigandme/aeb30566f899cdcdeb6024c0344d1ae1/raw/9cbafbbc99311c04b1a675e0ebb3953692fd51b8/pop-screenreaders.csv"</span></span>
<span id="cb1-6">raw_dat <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">read_csv</span>(url)</span></code></pre></div></div>
</details>
</div>
<p>Without any modification, this is what the data (which I name <code>raw_dat</code>) looks like:</p>
<div class="cell page-columns page-full">
<div class="cell-output-display column-body-outset">
<div data-pagedtable="false">
  <script data-pagedtable-source="" type="application/json">
{"columns":[{"label":["Category"],"name":[1],"type":["chr"],"align":["left"]},{"label":["NVDA"],"name":[2],"type":["dbl"],"align":["right"]},{"label":["JAWS"],"name":[3],"type":["dbl"],"align":["right"]},{"label":["VoiceOver"],"name":[4],"type":["dbl"],"align":["right"]},{"label":["Narrator"],"name":[5],"type":["dbl"],"align":["right"]},{"label":["ZoomText/Fusion"],"name":[6],"type":["dbl"],"align":["right"]},{"label":["Other"],"name":[7],"type":["dbl"],"align":["right"]}],"data":[{"1":"Dec. 2010","2":"34.8","3":"69.6","4":"20.2","5":"NA","6":"6.1","7":"42.6"},{"1":"May 2012","2":"43.0","3":"63.7","4":"30.7","5":"NA","6":"6.8","7":"51.5"},{"1":"Jan. 2014","2":"51.2","3":"63.9","4":"36.8","5":"NA","6":"5.3","7":"54.2"},{"1":"July 2015","2":"41.4","3":"43.7","4":"30.9","5":"NA","6":"27.5","7":"45.8"},{"1":"Oct. 2017","2":"64.9","3":"66.0","4":"39.6","5":"21.4","6":"6.0","7":"20.2"},{"1":"Sep. 2019","2":"72.4","3":"61.7","4":"47.1","5":"30.3","6":"5.5","7":"15.4"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[10],"max":[10]},"pages":{}}}
  </script>
</div>
</div>
</div>
</section>
<section id="line-chart-original-edition" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="line-chart-original-edition">Line chart: original edition</h2>
<p>Though this data isn’t “tidy” (more on that later), the format lends itself to a solid re-creation of the original version. So, all I did in terms of cleanup was remove the periods from the abbreviated months, and convert <code>Category</code> into an ordered factor.</p>
<div class="cell">
<details open="" class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb2-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># turn Category into ordered factor and remove inconsistent period</span></span>
<span id="cb2-2">sr_dat1 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> raw_dat <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb2-3">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">Category =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">str_replace_all</span>(Category, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\\</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">."</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>)) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb2-4">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">Category =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">as_factor</span>(Category))</span></code></pre></div></div>
</details>
</div>
<p>Because I was following the {highcharter} <a href="https://jkunst.com/highcharter/articles/modules.html#pattern-fills-1"><em>Modules &amp; plugins</em> vignette</a> (particularly the one on using pattern fills), I made this chart in two parts: first setting up a base chart without the data, and then adding the data to it. I’m not sure this was necessary or helpful, but, since I <em>didn’t</em> take that approach with the other charts in this series, I’ll keep it here for variety’s sake.</p>
<p>I add the dependency modules first, though it works fine if you add them at the end too. If not for the JavaScript code, I wouldn’t have known that there was actually a <a href="https://api.highcharts.com/highcharts/plotOptions.series.label">series-label module</a> to add, in addition to our export, export-data, and accessibility modules.</p>
<p>You’ll also notice that I seem to (and do) add the same text twice. I have yet to get the <a href="https://api.highcharts.com/highcharts/accessibility.linkedDescription"><code>linkedDescription</code> accessibility option</a> to work correctly. However, it’s supposed to appear in a special, hidden div especially for screen readers that appears before the chart, along with much of the other metadata you see below.<sup>2</sup></p>
<div class="cell">
<details class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1">hc_sr_setup <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">highchart</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb3-2">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># add dependencies</span></span>
<span id="cb3-3">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/series-label.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb3-4">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/accessibility.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb3-5">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/exporting.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb3-6">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/export-data.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb3-7">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_chart</span>(</span>
<span id="cb3-8">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">type =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"spline"</span>,</span>
<span id="cb3-9">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb3-10">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb3-11">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">keyboardNavigation =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>),</span>
<span id="cb3-12">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">linkedDescription =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Line chart demonstrating some accessibility features of Highcharts. </span></span>
<span id="cb3-13"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">      The chart displays the most commonly used screen readers in surveys taken by WebAIM from December 2010 to September 2019. </span></span>
<span id="cb3-14"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">      JAWS was the most used screen reader until 2019, when NVDA took over.</span></span>
<span id="cb3-15"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">      VoiceOver is the third most used screen reader, followed by Narrator.</span></span>
<span id="cb3-16"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">      ZoomText/Fusion had a surge in 2015, but usage is otherwise low.</span></span>
<span id="cb3-17"><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">      The overall use of other screen readers has declined drastically the past few years."</span></span>
<span id="cb3-18">      ),</span>
<span id="cb3-19">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dateTimeLabelFormats =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb3-20">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">month =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">main =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"%b %Y"</span>)</span>
<span id="cb3-21">    )</span>
<span id="cb3-22">    ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb3-23">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_title</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Most common desktop screen readers"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb3-24">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_subtitle</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Source: WebAIM."</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb3-25">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_caption</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Line chart demonstrating some accessibility features of Highcharts. The chart displays the most commonly used screen readers in surveys taken by WebAIM from December 2010 to September 2019. JAWS was the most used screen reader until 2019, when NVDA took over. VoiceOver is the third most used screen reader, followed by Narrator. ZoomText/Fusion had a surge in 2015, but usage is otherwise low. The overall use of other screen readers has declined drastically the past few years."</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb3-26">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_xAxis</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">categories =</span> sr_dat1<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>Category,</span>
<span id="cb3-27">           <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">title =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Time"</span>),</span>
<span id="cb3-28">           <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accesibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb3-29">             <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb3-30">             <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">description =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Time from December 2010 to September 2019"</span>,</span>
<span id="cb3-31">             <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">range =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"December 2010 to September 2019"</span></span>
<span id="cb3-32">             )</span>
<span id="cb3-33">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb3-34">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_yAxis</span>(</span>
<span id="cb3-35">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">title =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Percentage usage"</span>),</span>
<span id="cb3-36">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">description =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Percentage usage"</span>)</span>
<span id="cb3-37">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb3-38">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_legend</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">symbolWidth =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb3-39">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_plotOptions</span>(</span>
<span id="cb3-40">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">spline =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb3-41">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb3-42">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb3-43">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">keyboardNavigation =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>)</span>
<span id="cb3-44">      )</span>
<span id="cb3-45">    )</span>
<span id="cb3-46">  )</span></code></pre></div></div>
</details>
</div>
<p>Now we need to add data! The following code is not very parsimonious. I add each screen reader as its own series (which is why I kept the data in its original format, with each screen reader represented by a column). This allows me to get <em>dual encoding</em> by manually specifying <a href="https://api.highcharts.com/highcharts/series.spline.dashStyle"><code>dashStyle</code></a> and <a href="https://api.highcharts.com/highcharts/series.spline.marker.symbol"><code>marker.symbol</code></a> for each group in addition to colour.</p>
<p>I also try to give a description for the x-axis range again. This was another feature I wasn’t able to get working manually, but which works well when the range is numeric (which you’ll see in the second version of the chart).</p>
<div class="cell page-columns page-full" data-layout-align="center">
<details open="" class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb4-1">hc_sr_setup <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-2">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_xAxis</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">categories =</span> sr_dat1<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>Category,</span>
<span id="cb4-3">           <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">title =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Time"</span>),</span>
<span id="cb4-4">           <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accesibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-5">             <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb4-6">             <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">description =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Time from December 2010 to September 2019"</span>,</span>
<span id="cb4-7">             <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">range =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"December 2010 to September 2019"</span></span>
<span id="cb4-8">           ),</span>
<span id="cb4-9">           <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dateTimeLabelFormats =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-10">             <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">month =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">main =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"%b %Y"</span>)</span>
<span id="cb4-11">           )</span>
<span id="cb4-12">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-13">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_series</span>(</span>
<span id="cb4-14">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> sr_dat1<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>NVDA,</span>
<span id="cb4-15">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"NVDA"</span>,</span>
<span id="cb4-16">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#0b7383"</span>,</span>
<span id="cb4-17">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>),</span>
<span id="cb4-18">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">marker =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">symbol =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"circle"</span>)</span>
<span id="cb4-19">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-20">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_series</span>(</span>
<span id="cb4-21">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> sr_dat1<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>JAWS,</span>
<span id="cb4-22">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"JAWS"</span>,</span>
<span id="cb4-23">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#4372da"</span>,</span>
<span id="cb4-24">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dashStyle =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ShortDashDot"</span>,</span>
<span id="cb4-25">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>),</span>
<span id="cb4-26">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">marker =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">symbol =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"diamond"</span>)</span>
<span id="cb4-27">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-28">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_series</span>(</span>
<span id="cb4-29">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> sr_dat1<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>VoiceOver,</span>
<span id="cb4-30">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"VoiceOver"</span>,</span>
<span id="cb4-31">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#222222"</span>,</span>
<span id="cb4-32">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dashStyle =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ShortDot"</span>,</span>
<span id="cb4-33">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>),</span>
<span id="cb4-34">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">marker =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">symbol =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"square"</span>)</span>
<span id="cb4-35">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-36">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_series</span>(</span>
<span id="cb4-37">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> sr_dat1<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>Narrator,</span>
<span id="cb4-38">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Narrator"</span>,</span>
<span id="cb4-39">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#76767A"</span>,</span>
<span id="cb4-40">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dashStyle =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Dash"</span>,</span>
<span id="cb4-41">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>),</span>
<span id="cb4-42">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">marker =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">symbol =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"triangle"</span>)</span>
<span id="cb4-43">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-44">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_series</span>(</span>
<span id="cb4-45">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> sr_dat1<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">`</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">ZoomText/Fusion</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">`</span>,</span>
<span id="cb4-46">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ZoomText/Fusion"</span>,</span>
<span id="cb4-47">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#3D239E"</span>,</span>
<span id="cb4-48">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dashStyle =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ShortDot"</span>,</span>
<span id="cb4-49">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>),</span>
<span id="cb4-50">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">marker =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">symbol =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"triangle-down"</span>)</span>
<span id="cb4-51">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-52">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_series</span>(</span>
<span id="cb4-53">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> sr_dat1<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>Other,</span>
<span id="cb4-54">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Other"</span>, </span>
<span id="cb4-55">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">color =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"#6B26F0"</span>,</span>
<span id="cb4-56">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">dashStyle =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"ShortDash"</span>,</span>
<span id="cb4-57">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>),</span>
<span id="cb4-58">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">marker =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">symbol =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"circle"</span>)</span>
<span id="cb4-59">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-60">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_exporting</span>(</span>
<span id="cb4-61">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb4-62">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb4-63">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span></span>
<span id="cb4-64">    )</span>
<span id="cb4-65">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb4-66">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_tooltip</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">valueSuffix =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"%"</span>)</span></code></pre></div></div>
</details>
<div class="cell-output-display column-body-outset">
<div class="highchart html-widget html-fill-item" id="htmlwidget-5ca8a5776f663185cf50" style="width:100%;height:464px;"></div>
<script type="application/json" data-for="htmlwidget-5ca8a5776f663185cf50">{"x":{"hc_opts":{"chart":{"reflow":true,"type":"spline","accessibility":{"enabled":true,"keyboardNavigation":{"enabled":true},"linkedDescription":"Line chart demonstrating some accessibility features of Highcharts. \n      The chart displays the most commonly used screen readers in surveys taken by WebAIM from December 2010 to September 2019. \n      JAWS was the most used screen reader until 2019, when NVDA took over.\n      VoiceOver is the third most used screen reader, followed by Narrator.\n      ZoomText/Fusion had a surge in 2015, but usage is otherwise low.\n      The overall use of other screen readers has declined drastically the past few years."},"dateTimeLabelFormats":{"month":{"main":"%b %Y"}}},"title":{"text":"Most common desktop screen readers"},"yAxis":{"title":{"text":"Percentage usage"},"accessibility":{"description":"Percentage usage"}},"credits":{"enabled":false},"exporting":{"enabled":true,"accessibility":{"enabled":true}},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0},"treemap":{"layoutAlgorithm":"squarified"},"spline":{"accessibility":{"enabled":true,"keyboardNavigation":{"enabled":true}}}},"subtitle":{"text":"Source: WebAIM."},"caption":{"text":"Line chart demonstrating some accessibility features of Highcharts. The chart displays the most commonly used screen readers in surveys taken by WebAIM from December 2010 to September 2019. JAWS was the most used screen reader until 2019, when NVDA took over. VoiceOver is the third most used screen reader, followed by Narrator. ZoomText/Fusion had a surge in 2015, but usage is otherwise low. The overall use of other screen readers has declined drastically the past few years."},"xAxis":{"categories":["Dec 2010","May 2012","Jan 2014","July 2015","Oct 2017","Sep 2019"],"title":{"text":"Time"},"accesibility":{"enabled":true,"description":"Time from December 2010 to September 2019","range":"December 2010 to September 2019"},"dateTimeLabelFormats":{"month":{"main":"%b %Y"}}},"legend":{"symbolWidth":40},"series":[{"data":[34.8,43,51.2,41.4,64.90000000000001,72.40000000000001],"name":"NVDA","color":"#0b7383","label":{"enabled":true},"marker":{"symbol":"circle"}},{"data":[69.59999999999999,63.7,63.9,43.7,66,61.7],"name":"JAWS","color":"#4372da","dashStyle":"ShortDashDot","label":{"enabled":true},"marker":{"symbol":"diamond"}},{"data":[20.2,30.7,36.8,30.9,39.6,47.1],"name":"VoiceOver","color":"#222222","dashStyle":"ShortDot","label":{"enabled":true},"marker":{"symbol":"square"}},{"data":[null,null,null,null,21.4,30.3],"name":"Narrator","color":"#76767A","dashStyle":"Dash","label":{"enabled":true},"marker":{"symbol":"triangle"}},{"data":[6.1,6.8,5.3,27.5,6,5.5],"name":"ZoomText/Fusion","color":"#3D239E","dashStyle":"ShortDot","label":{"enabled":true},"marker":{"symbol":"triangle-down"}},{"data":[42.6,51.5,54.2,45.8,20.2,15.4],"name":"Other","color":"#6B26F0","dashStyle":"ShortDash","label":{"enabled":true},"marker":{"symbol":"circle"}}],"tooltip":{"valueSuffix":"%"}},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadCSV":"Download CSV","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","downloadXLS":"Download XLS","drillUpText":"◁ Back to {series.name}","exitFullscreen":"Exit from full screen","exportData":{"annotationHeader":"Annotations","categoryDatetimeHeader":"DateTime","categoryHeader":"Category"},"hideData":"Hide data table","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbolMagnitude":1000,"numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"shortWeekdays":["Sat","Sun","Mon","Tue","Wed","Thu","Fri"],"thousandsSep":" ","viewData":"View data table","viewFullscreen":"View in full screen","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
</div>
</div>
</section>
<section id="line-chart-simpler-edition" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="line-chart-simpler-edition">Line chart: simpler edition</h2>
<p>The {higcharter} package was designed with a syntax meant to be “intuitive” to R users, in particular those familiar with <a href="https://ggplot2.tidyverse.org/">{ggplot2}</a>. For example, rather than making each screen reader its own series, each group <em>could</em> be defined in the <a href="https://jkunst.com/highcharter/reference/hcaes.html"><code>hcaes()</code></a> argument, which:</p>
<blockquote class="blockquote">
<p>Define[s] aesthetic mappings. Similar in spirit to <code>ggplot2::aes</code> <span class="citation" data-cites="kunst_2021">(Kunst 2021)</span>.</p>
</blockquote>
<p>The downside of doing things this way is that you do <em>not</em> get the dual encoding for the splines (i.e.&nbsp;different line styles <em>and</em> different colours). The shapes for the points are different, you just don’t get to specify them manually (which isn’t a very big deal).</p>
<p>In order to use <code>screen_reader</code> as a grouping variable, I’ll have to reshape the data a bit. Since we’re mixing things up here, I also create a <code>year</code> variable, which means that Highcharts will be able to automatically generate a <a href="https://api.highcharts.com/highcharts/xAxis.accessibility.rangeDescription"><code>rangeDescription</code></a> (since it’s numeric).</p>
<div class="cell">
<details open="" class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb5-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># replace July with proper abbreviation</span></span>
<span id="cb5-2">raw_dat[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>,<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>] <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Jul 2015"</span></span>
<span id="cb5-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># turn into "tidy" data format for categories</span></span>
<span id="cb5-4">sr_dat2 <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> raw_dat <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb5-5">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">separate</span>(Category, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">into =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"month"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"year"</span>)) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb5-6">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">select</span>(<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">-</span>month) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb5-7">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pivot_longer</span>(<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!</span>year, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">names_to =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"screen_reader"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">values_to =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"pct_usage"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb5-8">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">mutate</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">year =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">parse_number</span>(year)) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb5-9">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">drop_na</span>()</span></code></pre></div></div>
</details>
</div>
<p>The resulting data is longer (appropriate, since we used the <code>pivot_longer()</code> function), and looks like this:</p>
<div class="cell page-columns page-full">
<div class="cell-output-display column-body-outset">
<div data-pagedtable="false">
  <script data-pagedtable-source="" type="application/json">
{"columns":[{"label":["year"],"name":[1],"type":["dbl"],"align":["right"]},{"label":["screen_reader"],"name":[2],"type":["chr"],"align":["left"]},{"label":["pct_usage"],"name":[3],"type":["dbl"],"align":["right"]}],"data":[{"1":"2010","2":"NVDA","3":"34.8"},{"1":"2010","2":"JAWS","3":"69.6"},{"1":"2010","2":"VoiceOver","3":"20.2"},{"1":"2010","2":"ZoomText/Fusion","3":"6.1"},{"1":"2010","2":"Other","3":"42.6"},{"1":"2012","2":"NVDA","3":"43.0"},{"1":"2012","2":"JAWS","3":"63.7"},{"1":"2012","2":"VoiceOver","3":"30.7"},{"1":"2012","2":"ZoomText/Fusion","3":"6.8"},{"1":"2012","2":"Other","3":"51.5"},{"1":"2014","2":"NVDA","3":"51.2"},{"1":"2014","2":"JAWS","3":"63.9"},{"1":"2014","2":"VoiceOver","3":"36.8"},{"1":"2014","2":"ZoomText/Fusion","3":"5.3"},{"1":"2014","2":"Other","3":"54.2"},{"1":"2015","2":"NVDA","3":"41.4"},{"1":"2015","2":"JAWS","3":"43.7"},{"1":"2015","2":"VoiceOver","3":"30.9"},{"1":"2015","2":"ZoomText/Fusion","3":"27.5"},{"1":"2015","2":"Other","3":"45.8"},{"1":"2017","2":"NVDA","3":"64.9"},{"1":"2017","2":"JAWS","3":"66.0"},{"1":"2017","2":"VoiceOver","3":"39.6"},{"1":"2017","2":"Narrator","3":"21.4"},{"1":"2017","2":"ZoomText/Fusion","3":"6.0"},{"1":"2017","2":"Other","3":"20.2"},{"1":"2019","2":"NVDA","3":"72.4"},{"1":"2019","2":"JAWS","3":"61.7"},{"1":"2019","2":"VoiceOver","3":"47.1"},{"1":"2019","2":"Narrator","3":"30.3"},{"1":"2019","2":"ZoomText/Fusion","3":"5.5"},{"1":"2019","2":"Other","3":"15.4"}],"options":{"columns":{"min":{},"max":[10]},"rows":{"min":[6],"max":[6]},"pages":{}}}
  </script>
</div>
</div>
</div>
<p>Whereas before I used <a href="https://jkunst.com/highcharter/reference/highchart.html"><code>highchart()</code></a> to set up the chart before adding data, this time I’ll send the data into <a href="https://jkunst.com/highcharter/reference/hchart.html"><code>hchart()</code></a> from the start.</p>
<div class="cell page-columns page-full" data-layout-align="center">
<details open="" class="code-fold">
<summary>Code</summary>
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb6-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hchart</span>(</span>
<span id="cb6-2">  sr_dat2,</span>
<span id="cb6-3">  <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"spline"</span>,</span>
<span id="cb6-4">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hcaes</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">x =</span> year, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">y =</span> pct_usage, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">group =</span> screen_reader),</span>
<span id="cb6-5">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb6-6">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb6-7">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">keyboardNavigation =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>),</span>
<span id="cb6-8">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">linkedDescription =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Line chart demonstrating some accessibility features of Highcharts. The chart displays the most commonly used screen readers in surveys taken by WebAIM from December 2010 to September 2019. JAWS was the most used screen reader until 2019, when NVDA took over. VoiceOver is the third most used screen reader, followed by Narrator. ZoomText/Fusion had a surge in 2015, but usage is otherwise low. The overall use of other screen readers has declined drastically the past few years."</span></span>
<span id="cb6-9">  ),</span>
<span id="cb6-10">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">exporting =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb6-11">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb6-12">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>)</span>
<span id="cb6-13">  )</span>
<span id="cb6-14">) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-15">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_title</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Most common desktop screen readers"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-16">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_subtitle</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Source: WebAIM."</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-17">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_caption</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Line chart demonstrating some accessibility features of Highcharts. The chart displays the most commonly used screen readers in surveys taken by WebAIM from December 2010 to September 2019. JAWS was the most used screen reader until 2019, when NVDA took over. VoiceOver is the third most used screen reader, followed by Narrator. ZoomText/Fusion had a surge in 2015, but usage is otherwise low. The overall use of other screen readers has declined drastically the past few years."</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-18">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_xAxis</span>(</span>
<span id="cb6-19">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">title =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Time"</span>),</span>
<span id="cb6-20">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accesibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb6-21">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb6-22">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">description =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Time from December 2010 to September 2019"</span>),</span>
<span id="cb6-23">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">rangeDescription =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"2010 to 2019"</span></span>
<span id="cb6-24">    )</span>
<span id="cb6-25">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-26">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_yAxis</span>(</span>
<span id="cb6-27">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">title =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Percentage usage"</span>),</span>
<span id="cb6-28">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">description =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Percentage usage"</span>)</span>
<span id="cb6-29">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-30">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_exporting</span>(</span>
<span id="cb6-31">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb6-32">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb6-33">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span></span>
<span id="cb6-34">    )</span>
<span id="cb6-35">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-36">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_tooltip</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">valueSuffix =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"%"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-37">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_legend</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">symbolWidth =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">40</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-38">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_colors</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#0b7383'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#6B26F0'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#76767A'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#4372da'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#222222'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'#3D239E'</span>)) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-39">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/accessibility.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-40">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/exporting.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-41">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/export-data.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-42">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/series-label.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span></span>
<span id="cb6-43">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_plotOptions</span>(</span>
<span id="cb6-44">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">series =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb6-45">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">label =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>)</span>
<span id="cb6-46">    )</span>
<span id="cb6-47">  )</span></code></pre></div></div>
</details>
<div class="cell-output-display column-body-outset">
<div class="highchart html-widget html-fill-item" id="htmlwidget-93944f71f7580a64efe9" style="width:100%;height:464px;"></div>
<script type="application/json" data-for="htmlwidget-93944f71f7580a64efe9">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Most common desktop screen readers"},"yAxis":{"title":{"text":"Percentage usage"},"type":"linear","accessibility":{"description":"Percentage usage"}},"credits":{"enabled":false},"exporting":{"enabled":true,"accessibility":{"enabled":true}},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":true},"turboThreshold":0,"showInLegend":true},"treemap":{"layoutAlgorithm":"squarified"},"scatter":{"marker":{"symbol":"circle"}}},"series":[{"name":"JAWS","data":[{"year":2010,"screen_reader":"JAWS","pct_usage":69.59999999999999,"x":2010,"y":69.59999999999999},{"year":2012,"screen_reader":"JAWS","pct_usage":63.7,"x":2012,"y":63.7},{"year":2014,"screen_reader":"JAWS","pct_usage":63.9,"x":2014,"y":63.9},{"year":2015,"screen_reader":"JAWS","pct_usage":43.7,"x":2015,"y":43.7},{"year":2017,"screen_reader":"JAWS","pct_usage":66,"x":2017,"y":66},{"year":2019,"screen_reader":"JAWS","pct_usage":61.7,"x":2019,"y":61.7}],"type":"spline","accessibility":{"enabled":true,"keyboardNavigation":{"enabled":true},"linkedDescription":"Line chart demonstrating some accessibility features of Highcharts. The chart displays the most commonly used screen readers in surveys taken by WebAIM from December 2010 to September 2019. JAWS was the most used screen reader until 2019, when NVDA took over. VoiceOver is the third most used screen reader, followed by Narrator. ZoomText/Fusion had a surge in 2015, but usage is otherwise low. The overall use of other screen readers has declined drastically the past few years."},"exporting":{"enabled":true,"accessibility":{"enabled":true}}},{"name":"NVDA","data":[{"year":2010,"screen_reader":"NVDA","pct_usage":34.8,"x":2010,"y":34.8},{"year":2012,"screen_reader":"NVDA","pct_usage":43,"x":2012,"y":43},{"year":2014,"screen_reader":"NVDA","pct_usage":51.2,"x":2014,"y":51.2},{"year":2015,"screen_reader":"NVDA","pct_usage":41.4,"x":2015,"y":41.4},{"year":2017,"screen_reader":"NVDA","pct_usage":64.90000000000001,"x":2017,"y":64.90000000000001},{"year":2019,"screen_reader":"NVDA","pct_usage":72.40000000000001,"x":2019,"y":72.40000000000001}],"type":"spline","accessibility":{"enabled":true,"keyboardNavigation":{"enabled":true},"linkedDescription":"Line chart demonstrating some accessibility features of Highcharts. The chart displays the most commonly used screen readers in surveys taken by WebAIM from December 2010 to September 2019. JAWS was the most used screen reader until 2019, when NVDA took over. VoiceOver is the third most used screen reader, followed by Narrator. ZoomText/Fusion had a surge in 2015, but usage is otherwise low. The overall use of other screen readers has declined drastically the past few years."},"exporting":{"enabled":true,"accessibility":{"enabled":true}}},{"name":"Narrator","data":[{"year":2017,"screen_reader":"Narrator","pct_usage":21.4,"x":2017,"y":21.4},{"year":2019,"screen_reader":"Narrator","pct_usage":30.3,"x":2019,"y":30.3}],"type":"spline","accessibility":{"enabled":true,"keyboardNavigation":{"enabled":true},"linkedDescription":"Line chart demonstrating some accessibility features of Highcharts. The chart displays the most commonly used screen readers in surveys taken by WebAIM from December 2010 to September 2019. JAWS was the most used screen reader until 2019, when NVDA took over. VoiceOver is the third most used screen reader, followed by Narrator. ZoomText/Fusion had a surge in 2015, but usage is otherwise low. The overall use of other screen readers has declined drastically the past few years."},"exporting":{"enabled":true,"accessibility":{"enabled":true}}},{"name":"Other","data":[{"year":2010,"screen_reader":"Other","pct_usage":42.6,"x":2010,"y":42.6},{"year":2012,"screen_reader":"Other","pct_usage":51.5,"x":2012,"y":51.5},{"year":2014,"screen_reader":"Other","pct_usage":54.2,"x":2014,"y":54.2},{"year":2015,"screen_reader":"Other","pct_usage":45.8,"x":2015,"y":45.8},{"year":2017,"screen_reader":"Other","pct_usage":20.2,"x":2017,"y":20.2},{"year":2019,"screen_reader":"Other","pct_usage":15.4,"x":2019,"y":15.4}],"type":"spline","accessibility":{"enabled":true,"keyboardNavigation":{"enabled":true},"linkedDescription":"Line chart demonstrating some accessibility features of Highcharts. The chart displays the most commonly used screen readers in surveys taken by WebAIM from December 2010 to September 2019. JAWS was the most used screen reader until 2019, when NVDA took over. VoiceOver is the third most used screen reader, followed by Narrator. ZoomText/Fusion had a surge in 2015, but usage is otherwise low. The overall use of other screen readers has declined drastically the past few years."},"exporting":{"enabled":true,"accessibility":{"enabled":true}}},{"name":"VoiceOver","data":[{"year":2010,"screen_reader":"VoiceOver","pct_usage":20.2,"x":2010,"y":20.2},{"year":2012,"screen_reader":"VoiceOver","pct_usage":30.7,"x":2012,"y":30.7},{"year":2014,"screen_reader":"VoiceOver","pct_usage":36.8,"x":2014,"y":36.8},{"year":2015,"screen_reader":"VoiceOver","pct_usage":30.9,"x":2015,"y":30.9},{"year":2017,"screen_reader":"VoiceOver","pct_usage":39.6,"x":2017,"y":39.6},{"year":2019,"screen_reader":"VoiceOver","pct_usage":47.1,"x":2019,"y":47.1}],"type":"spline","accessibility":{"enabled":true,"keyboardNavigation":{"enabled":true},"linkedDescription":"Line chart demonstrating some accessibility features of Highcharts. The chart displays the most commonly used screen readers in surveys taken by WebAIM from December 2010 to September 2019. JAWS was the most used screen reader until 2019, when NVDA took over. VoiceOver is the third most used screen reader, followed by Narrator. ZoomText/Fusion had a surge in 2015, but usage is otherwise low. The overall use of other screen readers has declined drastically the past few years."},"exporting":{"enabled":true,"accessibility":{"enabled":true}}},{"name":"ZoomText/Fusion","data":[{"year":2010,"screen_reader":"ZoomText/Fusion","pct_usage":6.1,"x":2010,"y":6.1},{"year":2012,"screen_reader":"ZoomText/Fusion","pct_usage":6.8,"x":2012,"y":6.8},{"year":2014,"screen_reader":"ZoomText/Fusion","pct_usage":5.3,"x":2014,"y":5.3},{"year":2015,"screen_reader":"ZoomText/Fusion","pct_usage":27.5,"x":2015,"y":27.5},{"year":2017,"screen_reader":"ZoomText/Fusion","pct_usage":6,"x":2017,"y":6},{"year":2019,"screen_reader":"ZoomText/Fusion","pct_usage":5.5,"x":2019,"y":5.5}],"type":"spline","accessibility":{"enabled":true,"keyboardNavigation":{"enabled":true},"linkedDescription":"Line chart demonstrating some accessibility features of Highcharts. The chart displays the most commonly used screen readers in surveys taken by WebAIM from December 2010 to September 2019. JAWS was the most used screen reader until 2019, when NVDA took over. VoiceOver is the third most used screen reader, followed by Narrator. ZoomText/Fusion had a surge in 2015, but usage is otherwise low. The overall use of other screen readers has declined drastically the past few years."},"exporting":{"enabled":true,"accessibility":{"enabled":true}}}],"xAxis":{"type":"linear","title":{"text":"Time"},"accesibility":{"enabled":true,"description":{"text":"Time from December 2010 to September 2019"},"rangeDescription":"2010 to 2019"}},"subtitle":{"text":"Source: WebAIM."},"caption":{"text":"Line chart demonstrating some accessibility features of Highcharts. The chart displays the most commonly used screen readers in surveys taken by WebAIM from December 2010 to September 2019. JAWS was the most used screen reader until 2019, when NVDA took over. VoiceOver is the third most used screen reader, followed by Narrator. ZoomText/Fusion had a surge in 2015, but usage is otherwise low. The overall use of other screen readers has declined drastically the past few years."},"tooltip":{"valueSuffix":"%"},"legend":{"symbolWidth":40},"colors":["#0b7383","#6B26F0","#76767A","#4372da","#222222","#3D239E"]},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadCSV":"Download CSV","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","downloadXLS":"Download XLS","drillUpText":"◁ Back to {series.name}","exitFullscreen":"Exit from full screen","exportData":{"annotationHeader":"Annotations","categoryDatetimeHeader":"DateTime","categoryHeader":"Category"},"hideData":"Hide data table","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbolMagnitude":1000,"numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"shortWeekdays":["Sat","Sun","Mon","Tue","Wed","Thu","Fri"],"thousandsSep":" ","viewData":"View data table","viewFullscreen":"View in full screen","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
</div>
</div>
<p>As you can see, the charts are quite similar, and the aesthetics are defined in a way that would definitely be familiar to a ggplot2 user: <code>hcaes(x = year, y = pct_usage, group = screen_reader)</code>.</p>
<p>Incidentally, if you view the chart as a data table (<em>View data table</em> is the last option in the export menu at the top right corner), the format is the same as it was for the original (<em>i.e.</em> the output data doesn’t look long).</p>
</section>
<section id="fin" class="level2">
<h2 class="anchored" data-anchor-id="fin">Fin</h2>
<p>Because I’ve made these charts over time, you’re likely to spot differences in syntax in addition to those I already pointed out. There are also some redundancies, which reflect my ongoing battle to get certain accessibility features working when manually defined. Any corrections and suggestions are welcome!</p>
<p><a href="../../blog/2021-11_highcharts-accessibility-module-with-highcharter-part-3/index.html" aria-label="Highcharts accessibility module with highcharter part 3" title="Highcharts accessibility module with highcharter part 3">Next time</a> we’ll take a look at the second Highcharts accessible demo chart, a <a href="https://www.highcharts.com/demo/accessible-pie">pie chart that uses pattern fills</a>.</p>



</section>


<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-kunst_2021" class="csl-entry">
Kunst, Joshua. 2021. <em>Highcharter: A Wrapper for the ’Highcharts’ Library</em>. <a href="https://jkunst.com/highcharter">https://jkunst.com/highcharter</a>.
</div>
</div></section><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Footnotes</h2>

<ol>
<li id="fn1"><p>Various iterations/attempts are captured for posterity in an <a href="https://www.htmlwidgets.org/">R script here</a>.↩︎</p></li>
<li id="fn2"><p>We’ll go over this feature in more in a <a href="../../blog/2021-11_accessible-highcharter-part-4/index.html#the-hidden-screen-reader-div" aria-label="Accessible highcharter part 4" title="Accessible highcharter part 4">later post</a>, but you can take a look at it by using your browser’s developer tools to see the generated HTML.↩︎</p></li>
</ol>
</section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en_us">CC BY-SA 4.0</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2021,
  author = {Averick, Mara},
  title = {\{Higcharter\} and the {Highcharts} Accessibility Module:
    {Part} 2},
  date = {2021-11-12},
  url = {https://dataand.me/blog/2021-11_higcharter-and-the-highcharts-accessibility-module-part-2/},
  doi = {10.59350/gfad8-v9y85},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2021" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2021. <span>“{Higcharter} and the Highcharts
Accessibility Module: Part 2.”</span> November 12, 2021. <a href="https://doi.org/10.59350/gfad8-v9y85">https://doi.org/10.59350/gfad8-v9y85</a>.
</div></div></section></div> ]]></description>
  <category>R</category>
  <category>data visualization</category>
  <category>accessibility</category>
  <category>highcharter</category>
  <category>Highcharts</category>
  <guid>https://dataand.me/blog/2021-11_higcharter-and-the-highcharts-accessibility-module-part-2/</guid>
  <pubDate>Fri, 12 Nov 2021 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/blog/2021-11_higcharter-and-the-highcharts-accessibility-module-part-2/highcharter_highcharts_most-common-desktop-screen-readers-min.png" medium="image" type="image/png" height="103" width="144"/>
</item>
<item>
  <title>Adventures with the Highcharts accessibility module: Part 1</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/blog/2021-11_adventures-with-the-highcharts-accessibility-module-part-1/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<p>Over the past few weeks I’ve been experimenting with the accessibility module from Highcharts using the {highcharter} package by <a href="https://jkunst.com/">Joshua Kunst</a>. <a href="https://www.highcharts.com/blog/products/highcharts/"><strong>Highcharts</strong></a> is an SVG-based library for making interactive charts for the web. <a href="https://jkunst.com/highcharter/"><strong>{highcharter}</strong></a> is an R package that wraps the <a href="https://api.highcharts.com/highcharts/">Highcharts JavaScript library</a> and its modules <span class="citation" data-cites="kunst_2021">(Kunst 2021)</span>.</p>
<p>One of the things I like about {highcharter} is how it really mirrors the native API (which you can learn more about in its vignette on the topic, <a href="https://jkunst.com/highcharter/articles/highchartsjs-api-basics.html">JavaScript API basics</a>). Because they’re so closely tied together, all of the Highcharts documentation, in effect, becomes {highcharter} documentation. So, my “experiments” have largely consisted of converting examples from the former into the latter.</p>
<p>In this post, we’ll give a broad overview of the accessibility module, motivating examples, and make a basic, working example with keyboard navigation enabled.</p>
<section id="highcharts-accessibility" class="level2">
<h2 class="anchored" data-anchor-id="highcharts-accessibility">Highcharts ∩ accessibility</h2>
<p>Highcharts has fairly extensive <a href="https://www.highcharts.com/accessibility/">accessibility features</a>, and has engaged in some interesting <a href="https://www.highcharts.com/blog/article/collaborations/">collaborations</a> and <a href="https://www.elsevier.com/connect/making-charts-accessible-for-people-with-visual-impairments">research</a> on making data visualizations accessible, especially for those with visual impairments <span class="citation" data-cites="bert_2018">(Bert and Hayes 2018)</span>.</p>
<p>The <a href="https://www.highcharts.com/docs/accessibility/accessibility-module">Highcharts accessibility module</a> enables a number of features—most notably usability through <a href="https://www.highcharts.com/docs/accessibility/accessibility-module-feature-overview#keyboard-navigation">keyboard navigation</a> and <a href="https://www.highcharts.com/docs/accessibility/accessibility-module-feature-overview#screen-readers">screen reader technologies</a>. Though not part of the accessibility <em>module</em>, their <a href="https://www.highcharts.com/demo#accessible-charts">accessible demo charts</a> also make use of <a href="https://www.highcharts.com/docs/accessibility/patterns-and-contrast">patterns and dash styles</a> to improve contrast for those with colour blindness.</p>
</section>
<section id="r-accessibility-resources-and-motivating-examples" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="r-accessibility-resources-and-motivating-examples">R accessibility resources and motivating examples</h2>
<p>Silvia Canelón recently posted <a href="https://silvia.rbind.io/blog/2021-curated-compilations/01-data-viz-a11y/">Resources for Data Viz Accessibility</a>:</p>
<blockquote class="blockquote">
<p>A selection of general and R-specific resources on how and why to make accessible data visualizations <span class="citation" data-cites="canelon_2021">(Canelón 2021)</span>.</p>
</blockquote>
<aside>
I highly recommend taking a look at the <a href="https://silvia.rbind.io/talk/2021-05-04-data-viz-accessibility/">presentation</a> she gave with Dr.&nbsp;Elizabeth Hare at <a href="https://csvconf.com/">csv,conf,v6</a> <span class="citation" data-cites="canelon_hare_2021">(Canelón and Hare 2021)</span>.
</aside>
<p>I noticed that, at the time (it had been last updated on 2021-10-14), it suggested that the accessibility module didn’t work with {highcharter}, and linked to a couple of GitHub issues in its repo (specifically <a href="https://github.com/jbkunst/highcharter/issues/707">#707</a>, and <a href="https://github.com/jbkunst/highcharter/issues/719">#719</a>) where unsuccessful in getting accessibility features to work through {highcharter}.</p>
<p>Having worked with {highcharter} a bit in the past, and knowing that <em>“if you can do it in Highcharts, you can do it with {highcharter}”</em> usually holds true, I thought I’d give it a whirl.</p>
<aside>
I also vaguely remembered that figuring out the 1:1 relationship between Highcharts and {highcharter} took a while last time around.
</aside>
</section>
<section id="guiding-principles" class="level2">
<h2 class="anchored" data-anchor-id="guiding-principles">Guiding principles</h2>
<p>There are a couple of principles I try to follow when figuring out coding “problems”—both of which are probably just ersatz versions of Jenny Bryan’s <a href="https://reprex.tidyverse.org/articles/reprex-dos-and-donts.html"><em>reprex do’s and don’ts</em></a>.</p>
<ol type="1">
<li><p><strong>Isolate your variables.</strong> Like many of the interactive (usually JavaScript-based) charting packages in R, {highcharter} works with <a href="https://shiny.rstudio.com/">{shiny}</a><sup>1</sup>. However, you can also use {highcharter} without shiny (e.g.&nbsp;in an R Markdown document like this one) and still get a lovely, interactive visualization in the form of an <a href="https://www.htmlwidgets.org/">htmlwidget</a>. Since my goal was to see if I could get the accessibility module to work with {highcharter}, I didn’t want to introduce shiny into the equation as an “extraneous” variable.</p></li>
<li><p><strong>Follow a working example.</strong> Between the <a href="https://jkunst.com/highcharter/">{highcharter} site</a> and the <a href="https://www.highcharts.com/demo">Highcharts demos</a> (all of which have options to edit in <a href="https://codepen.io/trending">CodePen</a> and <a href="https://jsfiddle.net/">JSFiddle</a>), there is no shortage of working examples available <em>with code</em>! Though I know very little about JavaScript, the aforementioned resemblance between the Highcharts JS API and {highcharter} syntax make reading the “foreign” source code incredibly helpful <sup>2</sup>.</p></li>
</ol>
</section>
<section id="getting-started" class="level1">
<h1>Getting started…</h1>
<p>As I came to discover, the first example in Highcharts’ <a href="https://www.highcharts.com/docs/accessibility/accessibility-module#getting-started-with-accessibility">Getting started with accessibility</a> documentation (an <a href="https://www.highcharts.com/demo/accessible-line">accessible line chart</a>) is actually somewhat complex from an R user’s standpoint. However, my plan was to mimic the examples from the Highcharts docs. So, it’s where I began.</p>
<p>Over in the land of {highcharter} documentation, I gave the <a href="https://jkunst.com/highcharter/articles/modules.html">Modules &amp; plugins vignette</a> a careful reading, since I’d be making use of at least one module (plus a few more, as I came to discover).</p>
<p>Because this missive has already gotten a bit long, I’m going to save the full line-chart example for a later post. However, something mentioned at the beginning of the <em>Getting started</em> docs turned out to be crucial to solving the mystery of <a href="https://github.com/jbkunst/highcharter/issues/707">Issue #707</a>—the inclusion of the <a href="https://www.highcharts.com/docs/export-module/export-module-overview">exporting and the export-data modules</a>.</p>
<section id="keyboard-navigation" class="level2">
<h2 class="anchored" data-anchor-id="keyboard-navigation">Keyboard navigation</h2>
<p>There’s much more to accessibility than keyboard navigation.<sup>3</sup> But it <em>is</em> a nice feature, <em>and</em> it was the ask of the aforementioned issue (which turns out to be relatively concise example, and is what I’ll show you below).</p>
<p>The original poster (<a href="https://github.com/jenfly">@jenfly</a>) does a nice, precise job of describing the desired keyboard navigation seen in the <a href="https://codepen.io/jenfly/pen/ZEeWyPO">native Highcharts API example on CodePen</a>:</p>
<blockquote class="blockquote">
<p>when I use the Tab key in the Codepen output, the focus ring goes first to the “something focusable” link, then to the first bar in the chart, where I can use the right arrow to navigate through the bars (allowing a screen reader to read each one, for example), and if I press tab again, it goes to the legend, then to the context menu button, and finally to the generic “Button” I included at the bottom of the page <span class="citation" data-cites="walker_2021">(Walker 2021)</span>.</p>
</blockquote>
<p>As with all things code, there’s more than one way to get the same thing done—I most definitely have not fully sussed out how much the order in which you put functions makes a difference. However, the following elements of my code are key (if you will) to getting the above behavior working.</p>
<ol type="1">
<li><p>Include <em>all</em> of the modules (accessibility, exporting, and exporting-data) used in the example with <a href="https://jkunst.com/highcharter/reference/hc_add_dependency.html"><code>hc_add_dependency()</code></a>. Even though using the <a href="https://jkunst.com/highcharter/reference/hc_exporting.html"><code>hc_exporting()</code></a> function brings the exporting module along, the explicit reference seems to make the next bit possible.</p></li>
<li><p>Expressly enable accessibility for exporting. <em>Yes</em>, exporting has its <a href="https://api.highcharts.com/highcharts/exporting.accessibility.enabled">own accessibility option</a> in the JavaScript API, and you need to enable this option <em>in addition</em> to <a href="https://api.highcharts.com/highcharts/accessibility.keyboardNavigation">enabling keyboard navigation</a> for the chart as a whole to be able to tab over to the exporting menu.</p></li>
</ol>
<section id="working-example" class="level3">
<h3 class="anchored" data-anchor-id="working-example">Working example</h3>
<p>So, with those two keys in mind, here is a the fruits chart with keyboard navigation enabled:</p>
<div class="cell">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># library(highcharter)</span></span>
<span id="cb1-2">data <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">data.frame</span>(</span>
<span id="cb1-3">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">fruit =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"apple"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"banana"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"orange"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"pear"</span>),</span>
<span id="cb1-4">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">count =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span>)</span>
<span id="cb1-5">    )</span>
<span id="cb1-6"></span>
<span id="cb1-7"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">highchart</span>() <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb1-8">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/accessibility.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb1-9">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/exporting.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb1-10">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_dependency</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"modules/export-data.js"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb1-11">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_title</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">text =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Fruits"</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb1-12">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_xAxis</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">categories =</span> data<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>fruit) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb1-13">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_add_series</span>(</span>
<span id="cb1-14">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> data<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>count,</span>
<span id="cb1-15">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">type =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"column"</span>,</span>
<span id="cb1-16">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">name =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Count"</span></span>
<span id="cb1-17">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb1-18">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_exporting</span>(</span>
<span id="cb1-19">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb1-20">    <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-21">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span></span>
<span id="cb1-22">    )</span>
<span id="cb1-23">  ) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|&gt;</span> </span>
<span id="cb1-24">    <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">hc_plotOptions</span>(</span>
<span id="cb1-25">      <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">accessibility =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(</span>
<span id="cb1-26">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>,</span>
<span id="cb1-27">        <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">keyboardNavigation =</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">list</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">enabled =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>)</span>
<span id="cb1-28">    )</span>
<span id="cb1-29">  )</span></code></pre></div></div>
<div class="cell-output-display">
<div class="highchart html-widget html-fill-item" id="htmlwidget-35f379eeba4b961b2049" style="width:100%;height:464px;"></div>
<script type="application/json" data-for="htmlwidget-35f379eeba4b961b2049">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Fruits"},"yAxis":{"title":{"text":null}},"credits":{"enabled":false},"exporting":{"enabled":true,"accessibility":{"enabled":true}},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0},"treemap":{"layoutAlgorithm":"squarified"},"accessibility":{"enabled":true,"keyboardNavigation":{"enabled":true}}},"xAxis":{"categories":["apple","banana","orange","pear"]},"series":[{"data":[2,3,5,4],"type":"column","name":"Count"}]},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadCSV":"Download CSV","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","downloadXLS":"Download XLS","drillUpText":"◁ Back to {series.name}","exitFullscreen":"Exit from full screen","exportData":{"annotationHeader":"Annotations","categoryDatetimeHeader":"DateTime","categoryHeader":"Category"},"hideData":"Hide data table","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbolMagnitude":1000,"numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"shortWeekdays":["Sat","Sun","Mon","Tue","Wed","Thu","Fri"],"thousandsSep":" ","viewData":"View data table","viewFullscreen":"View in full screen","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
</div>
</div>
<p>I’ve also re-created <a href="https://rpubs.com/maraaverick/highcharter-fruits-example">the Fruits example on its own</a> (with <a href="https://github.com/batpigandme/accessible-highcharter/blob/main/Rmd/fruits-example-issue707.Rmd">source code available here</a>), so you won’t have to tab through the other links in this article to see it in action.</p>
</section>
</section>
</section>
<section id="fin" class="level1">
<h1>Fin</h1>
<p>We’ve just scratched the surface of what can be done with the Highcharts accessibility module. <a href="../../blog/2021-11_higcharter-and-the-highcharts-accessibility-module-part-2/index.html" aria-label="highcharter and the Highcharts accessibility module part 2" title="highcharter and the Highcharts accessibility module part 2">Next time</a> we’ll take a step-by-step look at recreating Highcharts’ accessible line chart demo.</p>



</section>


<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-bert_2018" class="csl-entry">
Bert, Alison, and Lisa Marie Hayes. 2018. <span>“Making Charts Accessible for People with Visual Impairments: <span>A</span> Collaboration Between <span>Elsevier</span> and <span>Highcharts</span> Sets a New Standard for Chart Accessibility.”</span> <em>Elsevier Connect</em>. <a href="https://www.elsevier.com/connect/making-charts-accessible-for-people-with-visual-impairments">https://www.elsevier.com/connect/making-charts-accessible-for-people-with-visual-impairments</a>.
</div>
<div id="ref-canelon_2021" class="csl-entry">
Canelón, Silvia. 2021. <span>“Resources for <span>Data</span> <span>Viz</span> <span>Accessibility</span>.”</span> <a href="https://silvia.rbind.io/blog/2021-curated-compilations/01-data-viz-a11y/">https://silvia.rbind.io/blog/2021-curated-compilations/01-data-viz-a11y/</a>.
</div>
<div id="ref-canelon_hare_2021" class="csl-entry">
Canelón, Silvia, and Elizabeth Hare. 2021. <span>“Revealing <span>Room</span> for <span>Improvement</span> in <span>Accessibility</span> Within a <span>Social</span> <span>Media</span> <span>Data</span> <span>Visualization</span> <span>Learning</span> <span>Community</span>.”</span> <a href="https://silvia.rbind.io/talk/2021-05-04-data-viz-accessibility/">https://silvia.rbind.io/talk/2021-05-04-data-viz-accessibility/</a>.
</div>
<div id="ref-kunst_2021" class="csl-entry">
Kunst, Joshua. 2021. <em>Highcharter: A Wrapper for the ’Highcharts’ Library</em>. <a href="https://jkunst.com/highcharter">https://jkunst.com/highcharter</a>.
</div>
<div id="ref-walker_2021" class="csl-entry">
Walker, Jennifer. 2021. <em>Highcharter</em>. <a href="https://github.com/jbkunst/highcharter/issues/707#issue-891688128" class="uri">https://github.com/jbkunst/highcharter/issues/707#issue-891688128</a>; GitHub.
</div>
</div></section><section id="footnotes" class="footnotes footnotes-end-of-document"><h2 class="anchored quarto-appendix-heading">Footnotes</h2>

<ol>
<li id="fn1"><p>See the <a href="https://jkunst.com/highcharter/articles/shiny.html">highcharter Shiny examples</a> vignette for details.↩︎</p></li>
<li id="fn2"><p>I also copied these examples to my machine as stand-alone applications to ensure I could make them work outside of the online editors↩︎</p></li>
<li id="fn3"><p>In fact, I wouldn’t necessarily call the following example “accessible” <em>per se</em>, since it doesn’t make use of some of the features to subsequently in this series.↩︎</p></li>
</ol>
</section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en_us">CC BY-SA 4.0</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2021,
  author = {Averick, Mara},
  title = {Adventures with the {Highcharts} Accessibility Module: {Part}
    1},
  date = {2021-11-10},
  url = {https://dataand.me/blog/2021-11_adventures-with-the-highcharts-accessibility-module-part-1/},
  doi = {10.59350/ts5f7-q3f89},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2021" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2021. <span>“Adventures with the Highcharts Accessibility
Module: Part 1.”</span> November 10, 2021. <a href="https://doi.org/10.59350/ts5f7-q3f89">https://doi.org/10.59350/ts5f7-q3f89</a>.
</div></div></section></div> ]]></description>
  <category>R</category>
  <category>data visualization</category>
  <category>accessibility</category>
  <category>highcharter</category>
  <category>Highcharts</category>
  <guid>https://dataand.me/blog/2021-11_adventures-with-the-highcharts-accessibility-module-part-1/</guid>
  <pubDate>Wed, 10 Nov 2021 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/blog/2021-11_adventures-with-the-highcharts-accessibility-module-part-1/highcharter_fruits_w_keyboard_navigation-min.png" medium="image" type="image/png" height="88" width="144"/>
</item>
<item>
  <title>Notes on re-licensing</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/notes/2021-09_notes-on-re-licensing/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<p>These are my (somewhat unhinged, and decidedly incomplete) notes taken while researching the re-licensing process. For a more succinct (and, hopefully, clearer) summary of what actually occurred, see <a href="https://www.tidyverse.org/blog/2021/12/relicensing-packages/">Re-licensing packages: a retrospective</a> on the tidyverse blog.</p>
<section id="disclaimer" class="level2">
<h2 class="anchored" data-anchor-id="disclaimer">Disclaimer</h2>
<p>I am not a lawyer, and this is <a href="https://notlegaladvice.law/"><strong>not legal advice</strong></a>. In fact, much of what follows has to do with <em>perceived</em> legal implications, as even lawyers can only speculate on several of the matters at hand, since actual judicial rulings on cases involving open-source licenses are sparse (the cost-benefit analysis rarely results in taking these things to court).</p>
<p>Furthermore, this isn’t advice as to what license(s) you should use for <em>your</em> R packages. Rather, it is an attempt to clarify the <a href="https://github.com/tidyverse/ggplot2/issues/4236">why</a> of our recent, systematic re-licensing of several r-lib and tidyverse packages to use the <a href="https://opensource.org/licenses/MIT">MIT license</a>.</p>
</section>
<section id="intro" class="level2">
<h2 class="anchored" data-anchor-id="intro">Intro</h2>
<blockquote class="blockquote">
<p>The bottom line is that users are not free to use the software in any way that they might like; if users do not heed the requirements placed on the use of OSS, they might find themselves embroiled in an action claiming copyright infringement <span class="citation" data-cites="Montague2011">(Erp Montague 2011)</span>.</p>
</blockquote>
</section>
<section id="terminology" class="level2">
<h2 class="anchored" data-anchor-id="terminology">Terminology</h2>
<section id="derivative-works" class="level4">
<h4 class="anchored" data-anchor-id="derivative-works">Derivative works</h4>
<blockquote class="blockquote">
<p>a work based upon one or more preexisting works (<a href="https://www.law.cornell.edu/uscode/text/17/101">17 U.S.C. § 101 - Definitions</a>; see also Darth Vader Scale of Derivative Works in <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 231)</span> and shown later in these notes Figure&nbsp;1).</p>
</blockquote>
</section>
<section id="collective-works" class="level4">
<h4 class="anchored" data-anchor-id="collective-works">Collective works</h4>
<blockquote class="blockquote">
<p>a work, such as a periodical issue, anthology, or encyclopedia, in which a number of contributions, constituting separate and independent works in themselves, are assembled into a collective whole (<a href="https://www.law.cornell.edu/uscode/text/17/101">17 U.S.C. § 101 - Definitions</a>).</p>
</blockquote>
</section>
<section id="functional-language" class="level4">
<h4 class="anchored" data-anchor-id="functional-language">Functional language</h4>
<blockquote class="blockquote">
<p>any idea, procedure, process, system, method of operation, concept, principle, or discovery (<a href="https://www.law.cornell.edu/uscode/text/17/102">17 U.S.C. § 102(b)</a>).</p>
</blockquote>
<p>Copyright protection does not extend to functional language.</p>
</section>
<section id="de-minimis-changes" class="level4">
<h4 class="anchored" data-anchor-id="de-minimis-changes"><em>De minimis</em> changes</h4>
<blockquote class="blockquote">
<p>changes that are so minimal that the changed work should be considered identical to the original work <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 97)</span>.</p>
</blockquote>
</section>
</section>
<section id="copyright-basics" class="level2">
<h2 class="anchored" data-anchor-id="copyright-basics">Copyright basics</h2>
<p>While patent law covers <em>function</em>, copyright law covers <em>expression</em> <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 72)</span>. Everything that’s expressed is automatically copyrighted at the moment of creation. I am now the holder of the copyright to this sentence.</p>
<p>Actually, as of August 2020, the U.S. Copyright Office’s new rule, <a href="https://www.copyright.gov/grtx/"><em>Group Registration of Short Online Literary Works</em></a>, means that you can even submit a batch of works of “<em>50 but no more than 17,500 words</em>” (say a bunch of blog posts, or social media content) and have the Office register them all at once.<br>
See: <a href="https://www.govinfo.gov/content/pkg/FR-2020-06-22/pdf/2020-12041.pdf">Group Registration of Short Online Literary Works</a>, 85 Fed. Reg. 37,341–37,347 (June 22, 2020) (Revising 37 C.F.R. § 201–202).</p>
<p>As described by Andrew M. St.&nbsp;Laurent in <em>Understanding Open Source and Free Software Licensing</em>:</p>
<blockquote class="blockquote">
<p>Under the laws of the United States (and of European countries, through the Berne Convention, and of members of the World Trade Organization through the WTO Agreement on Trade-Related Aspects of Intellectual Property Rights), <strong>copyright is automatically attached to every novel expression of an idea, whether through text, sounds, or imagery</strong>. For example, the words in this paragraph are protected by copyright as soon as they are written. This also applies to diary entries, letters, song lyrics, and drawings, even if they are only done “off the cuff,” in the most casual of circumstances <span class="citation" data-cites="Laurent2004">(2004)</span> [emphasis added].</p>
</blockquote>
<section id="rights-granted" class="level3">
<h3 class="anchored" data-anchor-id="rights-granted">Rights granted</h3>
<p>Pursuant to <a href="https://law.justia.com/codes/us/2018/title-17/chapter-1/sec-106/">17 U.S.C. § 106</a>, <strong><em>Exclusive rights in copyrighted works</em></strong>, the owner of a copyright has the exclusive rights to do or authorize the following:</p>
<ol type="1">
<li><strong>Reproduce</strong> the copyrighted work.<br>
</li>
<li><strong>Adapt</strong>/prepare derivative works based on the copyrighted work.<br>
</li>
<li><strong>Distribute</strong> copies of the copyrighted work.<br>
</li>
<li><strong>Perform</strong> the copyrighted work.<br>
</li>
<li><strong>Display</strong> the copyrighted work publicly.</li>
</ol>
<p>The rights concerning <strong><em>derivative work</em></strong></p>
<blockquote class="blockquote">
<p>For a mixed work to qualify as a derivative work, the new portion must have enough originality to qualify as a copyrightable work itself; adding <em>de minimis</em> or purely functional expressions to a copyrighted work does not create a derivative work. Similarly, copying <em>de minimis</em> or purely functional expressions from an otherwise copyrighted work does not create a derivative work. For example, copying most of a “Hello World” program into your own “Goodbye Cruel World” program would not make your “Goodbye” code a derivative work of the “Hello” code, even though there was substantial literal copying between the two programs <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 98)</span>.</p>
</blockquote>
<blockquote class="blockquote">
<p>Non-literal copying is governed by the abstraction-filtration-comparison test (<em>Ibid</em>.).</p>
</blockquote>
</section>
<section id="fair-use" class="level3">
<h3 class="anchored" data-anchor-id="fair-use">Fair use</h3>
<blockquote class="blockquote">
<p>In general, fair use allows the copying, distribution, and use of copyrighted material, without permission, for transformative or important purposes <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 100)</span>.</p>
</blockquote>
<section id="four-principles-of-fair-use" class="level4">
<h4 class="anchored" data-anchor-id="four-principles-of-fair-use">Four principles of fair use</h4>
<blockquote class="blockquote">
<p>From The Copyright Act of 1976, four principles for determining fair use:</p>
<ul>
<li>The purpose and character of the use, including whether such use is of commercial nature or is for non-profit educational purposes<br>
</li>
<li>The nature of the copyrighted work<br>
</li>
<li>The amount and substantiality of the portion used in relation to the copyrighted work as a whole; and<br>
</li>
<li>The effect of the use upon the potential market for or value of the copyrighted work <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 100)</span>.</li>
</ul>
</blockquote>
</section>
</section>
</section>
<section id="contracts-and-licenses" class="level2">
<h2 class="anchored" data-anchor-id="contracts-and-licenses">Contracts and Licenses</h2>
<p>In Samuel Williston’s <em>A Treatise on the Law of Contracts</em> (first published between 1920 and 1922 in five volumes, Williston on Contracts is pretty much the definitive reference), a contract is defined thusly:</p>
<blockquote class="blockquote">
<p>A <strong><em>contract</em></strong> is a promise, or a set of promises, for breach of which the law gives a remedy, or the performance of which the law in some way recognizes as a duty <span class="citation" data-cites="Williston">(Williston 1958, 1:1–2)</span>.</p>
</blockquote>
<p>Basically, it’s an agreement enforceable by law (though, again, this is a gross oversimplification).</p>
<p>Intellectual property is <em>shared</em> through contracts and licenses.</p>
<blockquote class="blockquote">
<p>Contracts and licenses are the means by which people let their intellectual property out in a controlled way <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 135)</span>.</p>
</blockquote>
<p>Licenses are a type of contract (a subclass, if you will, with certain attributes):</p>
<blockquote class="blockquote">
<p>When dealing with intellectual property, we make agreements about how that IP can be used. These agreements, called <em>licenses</em> in this context, are <em>contracts</em> <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 139)</span>.</p>
</blockquote>
<p>A license is an agreement in which a licensee is given permission to use the property by the property holder:</p>
<blockquote class="blockquote">
<p>A license can be thought of as permission to use someone else’s property. In a contract context, <strong><em>a license is an agreement in which one of the terms of the agreement is permission by the property holder to use the property</em></strong> <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 135)</span>.</p>
</blockquote>
<blockquote class="blockquote">
<p>IP holders can make money from their intellectual property in two ways: they can sell all the rights to the property (an <em>assignment</em>) or grant limited rights to the property (a <em>license</em>) <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 146)</span>.</p>
</blockquote>
<section id="how-an-ip-contract-becomes-a-license" class="level3">
<h3 class="anchored" data-anchor-id="how-an-ip-contract-becomes-a-license">How an IP contract becomes a license</h3>
<p>A <em>license</em> is distinguished from common contracts in that it includes specific terms for one’s use of another person’s IP:</p>
<ol type="1">
<li>Grant of the license<br>
</li>
<li>Limitations on the scope of use<br>
</li>
<li>The reservation of rights</li>
</ol>
</section>
<section id="three-effects-of-license-on-ip" class="level3">
<h3 class="anchored" data-anchor-id="three-effects-of-license-on-ip">Three effects of license on IP</h3>
<blockquote class="blockquote">
<ul>
<li>It gives people permission to use someone else’s intellectual property.<br>
</li>
<li>It allows intellectual property holders to put bounds and conditions on the use of their intellectual property. The most common of these conditions is “pay money,” but other restrictions are also allowed. For example, many software licenses have restrictions on where and how the software is used and against reverse engineering.<br>
</li>
<li>It allows intellectual property holders to exercise their property rights if the bounds and conditions on the license are not met <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 135)</span>.</li>
</ul>
</blockquote>
<p>All use of IP is <em>conditional</em> on the scope of the granted permission (the license). If use is outside of that scope, it’s an infringement on IP rights.<br>
In terms of legal implications, IP enforcement is almost always dealt with at the federal level:</p>
<blockquote class="blockquote">
<p>Ordinary contracts are typically handled in state court, under state laws. <em>Intellectual property</em> enforcement, however, is almost exclusively dealt with at the federal level, under federal law. Because there are significant advantages for intellectual property holders in the federal courts, the ability to invoke federal intellectual property law can itself be an advantage <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 136)</span>.</p>
</blockquote>
<p>Because The <a href="https://www.fsf.org/">Free Software Foundation</a> (FSF) maintains that the GPL is <em>not</em> a contract (and contract law is a lot to unpack), we will not go into great detail here.</p>
</section>
<section id="unenforceable-contracts" class="level3">
<h3 class="anchored" data-anchor-id="unenforceable-contracts">Unenforceable contracts</h3>
<p>From Black’s Legal Dictionary (9th edition, abridged):</p>
<blockquote class="blockquote">
<p><strong><em>unenforceable contract</em></strong>. A valid contract that, because of some technical defect, cannot be fully enforced; a contract that has some legal consequences but that may not be enforced in an action for damages or specific performance in the face of certain defenses, such as the statute of frauds <span class="citation" data-cites="Blacks2010">(Garner 2010, 374)</span>.</p>
</blockquote>
<p>Related:</p>
<blockquote class="blockquote">
<p>One of the features of contract law is that any ambiguity in the license is construed against the writer <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 148)</span>.</p>
</blockquote>
</section>
</section>
<section id="intellectual-property-ip" class="level2">
<h2 class="anchored" data-anchor-id="intellectual-property-ip">Intellectual Property (IP)</h2>
<section id="ip-audits" class="level3">
<h3 class="anchored" data-anchor-id="ip-audits">IP audits</h3>
<blockquote class="blockquote">
<p>An <strong>IP audit</strong> also may include the identification of rights that a company licenses to and from third parties. Information should be obtained directly from company personnel through in-person interviews and questionnaires, as well as from reviewing documents, such as relevant contracts, patent and trademark filings, and laboratory notebooks <span class="citation" data-cites="Kohel2020">(Kohel 2020)</span>.</p>
</blockquote>
<blockquote class="blockquote">
<p>After the intellectual property is identified and relevant information is collected, a report is generated that sets out the following basic information:</p>
<ul>
<li>the owner of each item of intellectual property;<br>
</li>
<li>the remaining life of each item of intellectual property;<br>
</li>
<li>a description of whether and how the intellectual property is being used, including any potential infringements and misuses by the company and third parties; and<br>
</li>
<li>the evaluation of any defects and recommended remedial action <span class="citation" data-cites="Kohel2020">(Kohel 2020)</span>.</li>
</ul>
</blockquote>
</section>
<section id="trade-secrets" class="level3">
<h3 class="anchored" data-anchor-id="trade-secrets">Trade secrets</h3>
<p>Defend Trade Secrets Act (DTSA), codified at <a href="https://law.justia.com/codes/us/2018/title-18/part-i/chapter-90/">18 U.S.C. §1831-1839</a></p>
<p><a href="https://www.wipo.int/edocs/lexdocs/laws/en/us/us034en.pdf">Uniform Trade Secrets Act with 1985 Amendments</a></p>
<blockquote class="blockquote">
<p><strong>Uniform Trade Secrets Act (UTSA)</strong> A model law drafted by the National Conference of Commissioners on Uniform State Laws that codifies the basic principles of common law trade secret protection. The UTSA (in modified or unmodified form) has been enacted by 49 states (the exception is New York), the District of Columbia, and the US Virgin Islands (<a href="https://content.next.westlaw.com/8-503-0516">Practical Law Glossary</a>, 2020).</p>
</blockquote>
<p>Uniform Trade Secrets Act, §.1.(4) (1985); 18 U.S.C. 41839(3)</p>
</section>
</section>
<section id="licenses" class="level1 page-columns page-full">
<h1>Licenses</h1>
<section id="open-source" class="level2">
<h2 class="anchored" data-anchor-id="open-source">Open Source</h2>
<blockquote class="blockquote">
<p>The term “open source” refers only to how code is distributed and consumed. It says nothing about how code is produced. “Open source” projects have nothing more in common with one another than “companies” do. All companies, by definition, produce something of value that is exchanged for money, but we don’t assume that every company has the same business model <span class="citation" data-cites="Eghbal2020">(Eghbal 2020)</span>.</p>
</blockquote>
</section>
<section id="permissive" class="level2">
<h2 class="anchored" data-anchor-id="permissive">Permissive</h2>
<section id="mit-license" class="level3">
<h3 class="anchored" data-anchor-id="mit-license">MIT license</h3>
<ul>
<li><a href="https://writing.kemitchell.com/2016/09/21/MIT-License-Line-by-Line.html">The MIT License, Line by Line: 171 words every programmer should understand</a> by Kyle E. Mitchell <span class="citation" data-cites="MITLineByLine2016">(2016)</span></li>
</ul>
<blockquote class="blockquote">
<p>While the MIT license is credited with making the distribution of open source code frictionless, its “set it and forget it” approach has also been criticized for driving the wedge between open source code and its ideological origins <span class="citation" data-cites="Eghbal2020">(Eghbal 2020)</span>.</p>
</blockquote>
</section>
</section>
<section id="copyleft" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="copyleft">Copyleft</h2>
<p>From Kyle E. Mitchell’s <em>How to Speak Copyleft</em> <span class="citation" data-cites="SpeakCopyleft2018">(2018)</span>:</p>
<blockquote class="blockquote">
<p>To implement a copyleft rule, a drafter must make four independent <em>design decisions</em>:</p>
<ol type="1">
<li><strong><em>Trigger</em></strong>: When must licensees share other work?<br>
</li>
<li><strong><em>Reach</em></strong>: What other work must licensees share?<br>
</li>
<li><strong><em>Licensing</em></strong>: On what terms must licensees share that work?<br>
</li>
<li><strong><em>Distribution</em></strong>: How must licensees share source for that work?</li>
</ol>
</blockquote>
<p>Several licenses, such as the GPL variants, contain an obligation for reciprocity; <em>you can use this, but only if whatever you make using this is also available under this same license</em>. This is a gross oversimplification, and the <em>scope</em> of the reciprocal obligation varies across licenses (and is often vaguely worded in the license itself). As Lawrence Rosen describes in <em>Open Source Licensing: Software Freedom and Intellectual Property Law</em> <span class="citation" data-cites="Rosen2004">(2004)</span>:</p>
<blockquote class="blockquote">
<p>Licenses like the GPL contain vague provisions about derivative and collective works; some licensors prefer that ambiguity because it results in more software licensee contributions licensed under the GPL.</p>
</blockquote>
<p>From the Free Software Foundation’s <a href="https://www.gnu.org/licenses/copyleft.html"><em>What is Copyleft?</em></a> <span class="citation" data-cites="Copyleft">(2018)</span>:</p>
<blockquote class="blockquote">
<p>To copyleft a program, we first state that it is copyrighted; then we add distribution terms, which are a legal instrument that gives everyone the rights to use, modify, and redistribute the program’s code, or any program derived from it, but only if the distribution terms are unchanged.</p>
</blockquote>
<p>Though this sounds simple enough, ambiguity tends to make corporate folks (or at least their lawyers) nervous. And, when it comes to code, there are added layers of complexity, many of which have yet to be ruled on in a court of law.</p>
<p>In the ongoing case of <em>Oracle v. Google</em>, both plaintiff and defendant have issued motions for “<em>judgment as matter of law</em>” (“<em>JMOL</em>”) both successfully and unsuccessfully for: fair use (denied), the “rangeCheck” computer routine (denied), and eight decompiled security files (granted–see <em>Oracle Am., Inc.&nbsp;v. Google Inc.</em>, No.&nbsp;C 10-3561, 2012 U.S. Dist. (N.D. Cal. May 11, 2012) (“<a href="https://www.wired.com/wp-content/uploads/blogs/wiredenterprise/wp-content/uploads//2012/05/Judge-Response-to-Oracle-JMOL-Ruling.pdf"><em>Order Granting JMOL on Decompiled Files</em></a>”)).</p>
<p>Throughout the case parties have distinguished “declaring code” and “implementing code” (see <a href="https://scholar.google.com/scholar_case?case=15197092051369647665&amp;hl=en&amp;as_sdt=2006#p1349"><em>Oracle America, Inc.&nbsp;v. Google Inc.</em>, 750 F. 3d 1339 - Court of Appeals, Federal Circuit 2014</a>), and as oral arguments have been presented to the Supreme Court, the copyrightability of an Application Programming Interface (API) remains undecided (see <a href="https://www.supremecourt.gov/oral_arguments/argument_transcripts/2020/18-956_2dp3.pdf">Transcript of Oral Argument</a> <em>Google LLC v. Oracle America, Inc.</em>, U.S. (2020) (No.&nbsp;18-956) (Argued October 7, 2020)).</p>
<p>Kyle E. Mitchell has several posts highlighting important bits, including <a href="https://writing.kemitchell.com/2020/10/12/Oracle-Google-Oral.html">Oracle v. Google Oral Argument</a>, and <a href="https://writing.kemitchell.com/2020/10/12/Oracle-Google-Metaphors.html">Mix Many Metaphors</a> in which he catalogs the <em>many</em> analogies used by Supreme Court justices and arguing lawyers alike <span class="citation" data-cites="OracleVGoogle2020 Metaphors2020">(2020b, 2020a)</span>. Wikipedia also does a pretty bang-up job of summarising the now eight-year-long legal battle on their <a href="https://en.wikipedia.org/w/index.php?title=Google_LLC_v._Oracle_America,_Inc.&amp;oldid=987579326"><em>Google LLC v. Oracle America, Inc.</em></a> <span class="citation" data-cites="wiki:GvO">(2020c)</span>.</p>
<section id="viruses-and-freedoms" class="level4">
<h4 class="anchored" data-anchor-id="viruses-and-freedoms">Viruses and Freedoms</h4>
<blockquote class="blockquote">
<p>The first thing any lawyer learns about open source is that there are two kinds of open source licenses: <strong>“viral”</strong> and <strong>“nonviral.”</strong></p>
<p>When lawyers use the term “viral,” they are referring to a license condition that requires the licensee to redistribute source code in <em>outbound licenses</em> only on the same terms as the <em>inbound license</em> <span class="citation" data-cites="Meeker2008">(Meeker 2008, 11)</span>.</p>
</blockquote>
<p>“Reciprocal” means two different things in law and FOSS:</p>
<blockquote class="blockquote">
<p>For a more accurate term, I recommend “hereditary,” because the terms of the license initially applied to the software are “inherited” by all subsequent licensees of the same code, subsets of it, or variations of it <span class="citation" data-cites="Meeker2008">(Meeker 2008, 13)</span>.</p>
</blockquote>
</section>
<section id="gpl" class="level3 page-columns page-full">
<h3 class="anchored" data-anchor-id="gpl">GPL</h3>
<blockquote class="blockquote">
<p>This key part of the second paragraph of the GPL is the most important provision of the license. <strong><em>Derivative works must be licensed under the GPL and be subject to all of its restrictions.</em></strong> Unlike works licensed under the MIT or the BSD License, works derivative of work licensed under the GPL (or the original work itself) may not be made proprietary or otherwise limited in their distribution. If a programmer is looking to create proprietary works, the entire universe of GPL-licensed software is closed off to her. Indeed, as described in Chapter 6, the inclusion of any GPL-licensed code in purportedly proprietary software could prevent the creator of that software from enforcing any of the rights otherwise available under copyright: any person could distribute, sell, or modify that software, in disregard of any rights that would otherwise be granted the creator under the copyright laws <span class="citation" data-cites="Laurent2004">(Laurent 2004, 49)</span> [emphasis added].</p>
</blockquote>
<section id="the-darth-vader-scale-of-derivative-works" class="level4 page-columns page-full">
<h4 class="anchored" data-anchor-id="the-darth-vader-scale-of-derivative-works">The Darth Vader Scale of Derivative Works</h4>
<div class="callout callout-style-simple callout-important callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
<span class="screen-reader-only">Important</span>Important
</div>
</div>
<div class="callout-body-container callout-body">
<p>Note that The Darth Vader Scale of Derivative Works (Figure&nbsp;1) is Lindberg’s interpretation of <strong><em>the FSF’s position</em></strong> on the applicability of the GPL.</p>
</div>
</div>
<div class="page-columns page-full"><blockquote class="blockquote">
<p>To understand the FSF’s position on the applicability of the GPL, it is useful to view the interaction between programs on a scale from “mere aggregation” of differently licensed work to wholesale incorporation of code into a modified GPL-licensed binary. Figure 12-1<sup>1</sup> summarizes the FSF’s view of the situation; anything more than “mere aggregation” moves a user toward violating the GPL <span class="citation" data-cites="Lindberg2008">(Lindberg 2008, 231)</span>.</p>
</blockquote><div class="no-row-height column-margin column-container"><div id="fn1"><p><sup>1</sup>&nbsp;Figure 12-1 references the figure as it appears in Lindberg’s book <span class="citation" data-cites="Lindberg2008">(2008)</span>. Here, it is reproduced as Figure&nbsp;1.</p></div></div></div>
<div id="fig-vader-scale" class="quarto-float quarto-figure quarto-figure-center anchored" alt="The Darth Vader Scale of Derivative Works: Young Anakin (circa Episode 1) is mere aggregation, older (but still young-ish) Anakin (Circa Episode 2) is plug-ins and dynamic linking, older still (circa Episode 3) is static linking, and full-blown Darth Vader is incorporation. Figure from Lindberg 2008.">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-vader-scale-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://dataand.me/notes/2021-09_notes-on-re-licensing/lindberg-darth-vader-derivative-works.png" class="img-fluid figure-img" alt="The Darth Vader Scale of Derivative Works: Young Anakin (circa Episode 1) is mere aggregation, older (but still young-ish) Anakin (Circa Episode 2) is plug-ins and dynamic linking, older still (circa Episode 3) is static linking, and full-blown Darth Vader is incorporation. Figure from Lindberg 2008.">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-vader-scale-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: The Darth Vader Scale of Derivative Works – Young Anakin (Episode 1) is mere aggregation, older (Episode 2) Anakin is plug-ins and dynamic linking, older still (Episode 3) is static linking, and full-blown Darth Vader is incorporation.
</figcaption>
</figure>
</div>
</section>
</section>
</section>
<section id="books" class="level2">
<h2 class="anchored" data-anchor-id="books">Books</h2>
<ul>
<li><strong><em>Open Source Licensing: Software Freedom and Intellectual Property Law</em></strong> by Lawrence Rosen <span class="citation" data-cites="Rosen2004">(2004)</span>. Available from Rosen free online at <a href="http://www.rosenlaw.com/oslbook.htm" class="uri">http://www.rosenlaw.com/oslbook.htm</a>.<br>
</li>
<li><strong><em>Understanding Open Source and Free Software Licensing</em></strong> by Andrew M. St.&nbsp;Laurent <span class="citation" data-cites="Laurent2004">(2004)</span>. Free online <a href="https://people.debian.org/~dktrkranz/legal/Understanding%20Open%20Source%20and%20Free%20Software%20Licensing.pdf">here</a>, but not sure if this is a legitimate source.<br>
</li>
<li><strong><em>Intellectual Property and Open Source: A Practical Guide to Protecting Code</em></strong> by Van Lindberg <span class="citation" data-cites="Lindberg2008">(2008)</span>.<br>
</li>
<li><strong><em>The Open Source Alternative: Understanding Risks and Leveraging Opportunities</em></strong> by Heather J. Meeker <span class="citation" data-cites="Meeker2008">(2008)</span>.<br>
</li>
<li><strong><em>How Open Source Ate Software: Understand the Open Source Movement and So Much More</em></strong> by Gordon Haff <span class="citation" data-cites="Haff2018">(2018)</span>.<br>
</li>
<li><strong><em>Working in Public: The Making and Maintenance of Open Source Software</em></strong> by Nadia Eghbal <span class="citation" data-cites="Eghbal2020">(2020)</span>.</li>
</ul>
</section>
<section id="cases" class="level2 page-columns page-full">
<h2 class="anchored" data-anchor-id="cases">Cases</h2>
<section id="harper-row-v.-nation-enterprises-471-u.s.-539-1985" class="level3">
<h3 class="anchored" data-anchor-id="harper-row-v.-nation-enterprises-471-u.s.-539-1985"><a href="https://supreme.justia.com/cases/federal/us/471/539/"><em>Harper &amp; Row v. Nation Enterprises</em>, 471 U.S. 539 (1985)</a></h3>
<p>From: <a href="https://supreme.justia.com/cases/federal/us/471/539/">Justia Opinion Summary and Annotations</a></p>
<blockquote class="blockquote">
<p><strong>Primary Holding</strong><br>
A copyright holder has the statutory right to control the first public distribution of an authorized version of the protected material.</p>
</blockquote>
<p>Chicago style citation for full opinion:</p>
<p>O’Connor, Sandra Day, and Supreme Court Of The United States. <em>U.S. Reports: Harper &amp; Row v. Nation Enterprises</em>, 471 U.S. 539. 1984. Periodical. https://www.loc.gov/item/usrep471539/.</p>
</section>
<section id="computer-associates-international-inc.-v.-altai-inc.-982-f.2d-693-2d-cir.-1992" class="level3">
<h3 class="anchored" data-anchor-id="computer-associates-international-inc.-v.-altai-inc.-982-f.2d-693-2d-cir.-1992"><a href="https://www.bitlaw.com/source/cases/copyright/altai.html"><em>Computer Associates International, Inc.&nbsp;v. Altai, Inc.</em>, 982 F.2d 693 (2d Cir. 1992)</a></h3>
<blockquote class="blockquote">
<p>In this case, the Second Circuit adopted the “abstraction-filtration-comparison” three part test to analyze non-literal infringement claims in computer software. Utilizing this process, the Court found that in this instance, there was no copyrightable expression copied, so there is no copyright infringement.</p>
</blockquote>
<p><a href="https://en.wikipedia.org/wiki/Abstraction-Filtration-Comparison_test"><strong>Abstraction-Filtration-Comparison test</strong></a> <span class="citation" data-cites="afcTest">(Wikipedia contributors 2020a)</span></p>
<blockquote class="blockquote">
<p>The <strong>Abstraction-Filtration-Comparison test</strong> (AFC) is a method of identifying substantial similarity for the purposes of applying copyright law. In particular, the <strong>AFC test</strong> is used to determine whether non-literal elements of a computer program have been copied by comparing the protectable elements of two programs.</p>
</blockquote>
</section>
<section id="baker-v.-selden-101-u.s.-99-1879" class="level3">
<h3 class="anchored" data-anchor-id="baker-v.-selden-101-u.s.-99-1879"><a href="https://supreme.justia.com/cases/federal/us/101/99/"><em>Baker v. Selden</em>, 101 U.S. 99 (1879)</a></h3>
<p>Widely cited as the source for the <a href="https://en.wikipedia.org/wiki/Idea%E2%80%93expression_distinction"><strong>idea-expression dichotomy</strong></a></p>
<blockquote class="blockquote">
<p>The principal holding of Baker v. Selden is codified in §102(b) of the Copyright Act of 1976. Baker is still heavily cited today, with more than 130 decisions citing it from 1984–2004 <span class="citation" data-cites="BakerVSelden">(Wikipedia contributors 2020b)</span>.</p>
</blockquote>
<p>Library of Congress record:<br>
Bradley, Joseph P, and Supreme Court Of The United States. <em>U.S. Reports: Baker v. Selden</em>, 101 U.S. 99. 1879. Periodical. https://www.loc.gov/item/usrep101099/.</p>
<p><a href="https://www.law.cornell.edu/uscode/text/17/102">17 U.S. Code § 102 - Subject matter of copyright: In general</a></p>
<blockquote class="blockquote">
<p>In no case does copyright protection for an original work of authorship extend to any idea, procedure, process, system, method of operation, concept, principle, or discovery, regardless of the form in which it is described, explained, illustrated, or embodied in such work (17 U.S.C §102(b)).</p>
</blockquote>
</section>
<section id="mazer-v.-stein-347-u.s.-201-1954" class="level3">
<h3 class="anchored" data-anchor-id="mazer-v.-stein-347-u.s.-201-1954"><a href="https://www.loc.gov/item/usrep347201/"><em>Mazer v. Stein</em>, 347 U.S. 201 (1954)</a></h3>
<p>Reed, Stanley Forman, and Supreme Court Of The United States. <em>U.S. Reports: Mazer v. Stein</em>, 347 U.S. 201. 1954. Periodical. https://www.loc.gov/item/usrep347201/.</p>
<blockquote class="blockquote">
<p>“Unlike a patent, a copyright gives no exclusive right to the art disclosed; protection is given only to the expression of the idea-not the idea itself” (at 217).</p>
</blockquote>
</section>
<section id="andersen-et-al-v.-monsoon-multimedia-inc.-07-cv-8205-s.d.n.y.-sept.-19-2007.2" class="level3">
<h3 class="anchored" data-anchor-id="andersen-et-al-v.-monsoon-multimedia-inc.-07-cv-8205-s.d.n.y.-sept.-19-2007.2"><a href="https://dockets.justia.com/docket/new-york/nysdce/1:2007cv08205/313303"><em>Andersen et al v. Monsoon Multimedia, Inc.</em> 07-CV-8205 (S.D.N.Y. Sept.&nbsp;19, 2007).</a><sup>2</sup></h3>
<p>In September of 2007, the Plaintiffs, Erik Andersen and Rob Landley sued the Defendant, Monsoon Multimedia, Inc., in what was the first U.S. lawsuit filed to enforce the General Public License version 2 (GPLv2) <span class="citation" data-cites="Gatto2007a">(Gatto 2007a)</span>.</p>
<p>The Plaintiffs filed <a href="https://www.softwarefreedom.org/news/2007/sep/20/busybox/complaint.pdf">claims</a> of copyright infringement, pursuant to <a href="https://law.justia.com/codes/us/2018/title-17/chapter-5/sec-501/">17 U.S.C. § 501</a> and <a href="https://law.justia.com/codes/us/2018/title-28/part-iv/chapter-85/sec-1331/">28 U.S.C. §§1331</a> and <a href="https://law.justia.com/codes/us/2018/title-28/part-iv/chapter-85/sec-1338/">1338(a)</a>.</p>
<p>The case ultimately settled, leaving questions unanswered per the legal status of the GPL <span class="citation" data-cites="Gatto2007b">(Gatto 2007b)</span>. Though the Free Software Foundation is adamant that the GPL is <em>not</em> a contract, the status of the license (or contract) determines:</p>
<blockquote class="blockquote">
<p>the legal basis for pursuing violators (copyright infringement vs.&nbsp;breach of contract) and the remedies (injunction vs.&nbsp;monetary damages) available <span class="citation" data-cites="Gatto2007a">(Gatto 2007a, 1)</span>.</p>
</blockquote>
</section>
<div class="no-row-height column-margin column-container"><div id="fn2"><p><sup>2</sup>&nbsp;The initial complaint has been made available via the <a href="https://www.softwarefreedom.org/">Software Freedom Law Center, Inc.</a> by Daniel B. Ravicher (attorney for the Plaintiffs) <a href="https://www.softwarefreedom.org/news/2007/sep/20/busybox/complaint.pdf" aria-label="Andersen et Monsoon initial complaint.">here</a>.</p></div></div><section id="jacobsen-v.-katzer-535-f.3d-1373---court-of-appeals-fed.-cir.-2008." class="level3">
<h3 class="anchored" data-anchor-id="jacobsen-v.-katzer-535-f.3d-1373---court-of-appeals-fed.-cir.-2008."><a href="https://scholar.google.com/scholar_case?case=17776182574171214893&amp;hl=en&amp;as_sdt=6&amp;as_vis=1&amp;oi=scholarr"><em>Jacobsen v. Katzer</em> 535 F.3d 1373 - Court of Appeals (Fed. Cir. 2008).</a></h3>
<p>Landmark Federal Circuit opinion, holding that open source licenses are enforceable under <em>state contract law</em> and <em>federal copyright law</em>.</p>
<p>See: Azzi, R. Michael, <a href="https://illinoislawreview.org/wp-content/ilr-content/articles/2010/4/Azzi.pdf"><em>CPR: How Jacobsen v. Katzer Resuscitated the Open Source Movement</em></a>, 2010 U. Ill. L. Rev.&nbsp;1,271–1,302 (2010).</p>
<blockquote class="blockquote">
<p>The <em>Jacobsen</em> decision confirms previous speculation that a violation of an open source software license exposes a company to more than a breach of contract claim, but also to a claim of copyright infringement, and potentially, an injunction in addition to damages <span class="citation" data-cites="Coch2008">(Coch, Moss, and Roberts 2008)</span>.</p>
</blockquote>
</section>
<section id="artifex-software-inc.-v.-hancom-inc.-case-no.16-cv-06982-jsc-n.d.-cal.-sep.-12-2017" class="level3">
<h3 class="anchored" data-anchor-id="artifex-software-inc.-v.-hancom-inc.-case-no.16-cv-06982-jsc-n.d.-cal.-sep.-12-2017"><a href="https://casetext.com/case/artifex-software-inc-v-hancom-inc">Artifex Software, Inc.&nbsp;v. Hancom, Inc., Case No.16-cv-06982-JSC (N.D. Cal. Sep.&nbsp;12, 2017)</a></h3>
<blockquote class="blockquote">
<p>allowed breach of contract claims for GPL violations in connection with the use of open source software. As the decision shows, reliance on arguments that the GPL is not a contract or that corresponding contract claims are preempted by copyright law may prove misplaced. Accordingly, businesses should carefully consider contract law implications when licensing and using GPL-governed code (<a href="https://www.dglaw.com/images_user/newsalerts/Litigation_IP_Breach_of_Contract_Claims.pdf">Davis and Gilbert</a> 2017).</p>
</blockquote>
<blockquote class="blockquote">
<p><em>Artifex</em> shows that courts may be willing to allow dual theories of recovery–breach of contract and infringement–for GPL violations (<em>Id</em>).</p>
</blockquote>
</section>
<section id="cokinetic-systems-corp.-v.-panasonic-avionics-corporation-no.-117-cv-01527-s.d.n.y.-2018" class="level3">
<h3 class="anchored" data-anchor-id="cokinetic-systems-corp.-v.-panasonic-avionics-corporation-no.-117-cv-01527-s.d.n.y.-2018"><a href="https://www.courtlistener.com/docket/4612791/cokinetic-systems-corp-v-panasonic-avionics-corporation/"><em>CoKinetic Systems, Corp.&nbsp;v. Panasonic Avionics Corporation</em>, No.&nbsp;1:17-cv-01527, (S.D.N.Y. 2018)</a></h3>
<p>This case did not reach a ruling. It was terminated on January 19, 2018 after CoKinetic submitted <a href="https://www.courtlistener.com/docket/4612791/37/cokinetic-systems-corp-v-panasonic-avionics-corporation/">a letter</a> to the court saying that an out-of-court settlement had been reached with Panasonic Avionics.</p>
<p>Summary facts of the case from <a href="https://www.globalpatentfiling.com/blog/legal-issues-and-compliance-pertaining-open-source-software">Legal Issues And Compliance Pertaining To Open Source Software</a> by Adhishree Jadhav for <a href="https://www.globalpatentfiling.com/">Global Patent Filing</a> <span class="citation" data-cites="GPF2018">(2018)</span>:</p>
<blockquote class="blockquote">
<ul>
<li>CoKinetic Systems Corporation filed a suit against Panasonic Avionics in the New York Federal Court seeking damages of around $100 million.<br>
</li>
<li>The major claim of the petitioner was that the respondent has intentionally violated the GPLv2 open source licensing requirements, in addition to a lot of other actions aimed at monopolizing the market for in-flight entertainment software and media services.<br>
</li>
<li>Panasonic refused to distribute the source code (OSS) and thus prevented its competitors from being able to build the software for in-flight entertainment services.<br>
</li>
<li>By this unlawful act, CoKinetic alleges that the respondent has infringed the copyrights of a number of software developers that have contributed to Linux (the source code of which Panasonic refused to share).<br>
</li>
<li>CoKinetic notified the court in an 11 January letter that the dispute with Panasonic Avionics had been settled.</li>
</ul>
</blockquote>
<p>So, what’s the point of this? Well, chances are that if two large corporations ultimately couldn’t duke this out in court using Antitrust law (specifically The Clayton Antitrust Act, codified in <a href="https://law.justia.com/codes/us/2018/title-15/chapter-1/sec-12/">15 U.S.C. §§ 12-27</a>), then it’s unlikely you’d succeed either.</p>
<p>According to the Thompson Reuters Practical Law Glossary <a href="https://content.next.westlaw.com/1-383-6474?__lrTS=20200924023403830">definition</a>:</p>
<blockquote class="blockquote">
<p><strong>The Clayton Act</strong> provides for civil penalties that are enforced by the Federal Trade Commission (FTC) and the Antitrust Division of the Department of Justice (DOJ). Private parties are also permitted to sue for damages, including punitive damages, and injunctive relief if they are injured by conduct prohibited by this Act.</p>
</blockquote>
<p>The fact that antitrust law allows parties to sue for <strong>punitive damages</strong> as well as injunctive relief makes it one of the few approaches that could result in substantial financial compensation.</p>



</section>
</section>
</section>


<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-Coch2008" class="csl-entry">
Coch, Nicholas L., Kevin M. Moss, and Ashley B. Roberts. 2008. <span>“Open Source Licensing: Caution and Considerations in Light of Jacobsen <span class="nocase">v.</span> Katzer.”</span> <em>Kramer Levin Intellectual Property Alert</em>. <a href="https://s3.amazonaws.com/documents.lexology.com/2aac408c-a6a7-4fdf-a359-9c4efd39f8b1.pdf">https://s3.amazonaws.com/documents.lexology.com/2aac408c-a6a7-4fdf-a359-9c4efd39f8b1.pdf</a>.
</div>
<div id="ref-Eghbal2020" class="csl-entry">
Eghbal, Nadia. 2020. <em>Working in Public: The Making and Maintenance of Open Source Software</em>. Stripe Press.
</div>
<div id="ref-Montague2011" class="csl-entry">
Erp Montague, Joanne van. 2011. <span>“Copyright Issues with Open Source Software.”</span> In, 18. <a href="https://www.dwt.com/files/uploads/documents/Presentations/11-11_Montague_OSSpaper.pdf">https://www.dwt.com/files/uploads/documents/Presentations/11-11_Montague_OSSpaper.pdf</a>.
</div>
<div id="ref-Copyleft" class="csl-entry">
Free Software Foundation. 2018. <span>“What Is Copyleft?”</span> <em>GNU Operating System</em>. <a href="https://www.gnu.org/licenses/copyleft.html">https://www.gnu.org/licenses/copyleft.html</a>.
</div>
<div id="ref-Blacks2010" class="csl-entry">
Garner, Bryan A. 2010. <em>Black’s <span>Law</span> <span>Dictionary</span>, <span>Abridged</span></em>. 9th edition. West.
</div>
<div id="ref-Gatto2007a" class="csl-entry">
Gatto, James G. 2007a. <span>“First <span>U.S.</span> Lawsuit Filed to Enforce the General Public License.”</span> <em>Pillsbury Winthrop Shaw Pittman <span>LLP</span> Client Alert</em>. <a href="https://s3.amazonaws.com/documents.lexology.com/d5f4c3fe-1e86-4333-9a91-f7d65b4151c8.pdf">https://s3.amazonaws.com/documents.lexology.com/d5f4c3fe-1e86-4333-9a91-f7d65b4151c8.pdf</a>.
</div>
<div id="ref-Gatto2007b" class="csl-entry">
———. 2007b. <span>“<span>GPL</span> Enforcement Lawsuit Settles–Underscores the Importance of Open Source Compliance Measures.”</span> <em>Pillsbury Winthrop Shaw Pittman <span>LLP</span> Client Alert</em>. <a href="https://s3.amazonaws.com/documents.lexology.com/2041c261-3e0b-4d6b-bb9b-09998dd5d02f.pdf">https://s3.amazonaws.com/documents.lexology.com/2041c261-3e0b-4d6b-bb9b-09998dd5d02f.pdf</a>.
</div>
<div id="ref-Haff2018" class="csl-entry">
Haff, Gordon. 2018. <em>How Open Source Ate Software: Understand the Open Source Movement and so Much More</em>. 1st ed. USA: Apress. <a href="https://doi.org/10.1007/978-1-4842-3894-3">https://doi.org/10.1007/978-1-4842-3894-3</a>.
</div>
<div id="ref-GPF2018" class="csl-entry">
Jadhav, Adhishree. 2018. <span>“Legal Issues and Compliance Pertaining to Open Source Software.”</span> <em>Global Patent Filing</em>. <a href="https://www.globalpatentfiling.com/blog/legal-issues-and-compliance-pertaining-open-source-software">https://www.globalpatentfiling.com/blog/legal-issues-and-compliance-pertaining-open-source-software</a>.
</div>
<div id="ref-Kohel2020" class="csl-entry">
Kohel, Matthew D. 2020. <span>“Proactive Protection: Intellectual Property Audits.”</span> <em>Goodell DeVries</em>. <a href="https://www.gdldlaw.com/blog/proactive-protection-intellectual-property-audits">https://www.gdldlaw.com/blog/proactive-protection-intellectual-property-audits</a>.
</div>
<div id="ref-Laurent2004" class="csl-entry">
Laurent, Andrew M. St. 2004. <em>Understanding Open Source and Free Software Licensing</em>. O’Reilly.
</div>
<div id="ref-Lindberg2008" class="csl-entry">
Lindberg, Van. 2008. <em>Intellectual Property and Open Source: A Practical Guide to Protecting Code</em>. First. O’Reilly.
</div>
<div id="ref-Meeker2008" class="csl-entry">
Meeker, Heather J. 2008. <em>The Open Source Alternative: Understanding Risks and Leveraging Opportunities</em>. Wiley <span>&amp;</span> Sons.
</div>
<div id="ref-MITLineByLine2016" class="csl-entry">
Mitchell, Kyle E. 2016. <span>“The MIT License, Line by Line: 171 Words Every Programmer Should Understand.”</span> <em><span>/<span>d</span>ev/<span>l</span>awyer</span></em>. <a href="https://writing.kemitchell.com/2016/09/21/MIT-License-Line-by-Line.html">https://writing.kemitchell.com/2016/09/21/MIT-License-Line-by-Line.html</a>.
</div>
<div id="ref-SpeakCopyleft2018" class="csl-entry">
———. 2018. <span>“How to Speak Copyleft: The Missing Vocabulary of Copyleft Design.”</span> <em><span>/<span>d</span>ev/<span>l</span>awyer</span></em>. <a href="https://writing.kemitchell.com/2018/10/24/How-to-Speak-Copyleft.html">https://writing.kemitchell.com/2018/10/24/How-to-Speak-Copyleft.html</a>.
</div>
<div id="ref-Metaphors2020" class="csl-entry">
———. 2020a. <span>“Mix Many Metaphors: Analogies Galore in Oracle v. Google Oral Argument.”</span> <em><span>/<span>d</span>ev/<span>l</span>awyer</span></em>. <a href="https://writing.kemitchell.com/2020/10/12/Oracle-Google-Metaphors.html">https://writing.kemitchell.com/2020/10/12/Oracle-Google-Metaphors.html</a>.
</div>
<div id="ref-OracleVGoogle2020" class="csl-entry">
———. 2020b. <span>“Oracle <span class="nocase">v.</span> Google Oral Argument: Major League Copyright Lawyering at Bat.”</span> <em><span>/<span>d</span>ev/<span>l</span>awyer</span></em>. <a href="https://writing.kemitchell.com/2020/10/12/Oracle-Google-Oral.html">https://writing.kemitchell.com/2020/10/12/Oracle-Google-Oral.html</a>.
</div>
<div id="ref-Rosen2004" class="csl-entry">
Rosen, Lawrence. 2004. <em>Open Source Licensing: Software Freedom and Intellectual Property Law</em>. USA: Prentice Hall PTR.
</div>
<div id="ref-afcTest" class="csl-entry">
Wikipedia contributors. 2020a. <span>“Abstraction-Filtration-Comparison Test — <span>Wikipedia</span><span>,</span> the Free Encyclopedia.”</span> <a href="https://en.wikipedia.org/w/index.php?title=Abstraction-Filtration-Comparison_test&amp;oldid=941334453">https://en.wikipedia.org/w/index.php?title=Abstraction-Filtration-Comparison_test&amp;oldid=941334453</a>.
</div>
<div id="ref-BakerVSelden" class="csl-entry">
———. 2020b. <span>“Baker <span class="nocase">v.</span> Selden — <span>Wikipedia</span><span>,</span> the Free Encyclopedia.”</span> <a href="https://en.wikipedia.org/w/index.php?title=Baker_v._Selden&amp;oldid=953803652">https://en.wikipedia.org/w/index.php?title=Baker_v._Selden&amp;oldid=953803652</a>.
</div>
<div id="ref-wiki:GvO" class="csl-entry">
———. 2020c. <span>“Google <span>LLC</span> <span class="nocase">v.</span> Oracle America, Inc. — <span>Wikipedia</span><span>,</span> the Free Encyclopedia.”</span> <a href="https://en.wikipedia.org/w/index.php?title=Google_LLC_v._Oracle_America,_Inc.&amp;oldid=987579326">https://en.wikipedia.org/w/index.php?title=Google_LLC_v._Oracle_America,_Inc.&amp;oldid=987579326</a>.
</div>
<div id="ref-Williston" class="csl-entry">
Williston, Samuel. 1958. <em>A Treatise on the Law of Contracts</em>. Edited by Walter H. E. Jaeger. 3rd ed. Vol. 1. Baker, Voorhis.
</div>
</div></section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/SA/deed.en_us">CC BY SA</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2021,
  author = {Averick, Mara and Averick, Mara},
  title = {Notes on Re-Licensing},
  date = {2021-09-23},
  url = {https://dataand.me/notes/2021-09_notes-on-re-licensing/},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2021" class="csl-entry quarto-appendix-citeas">
Averick, Mara, and Mara Averick. 2021. <span>“Notes on
Re-Licensing.”</span> September 23, 2021. <a href="https://dataand.me/notes/2021-09_notes-on-re-licensing/">https://dataand.me/notes/2021-09_notes-on-re-licensing/</a>.
</div></div></section></div> ]]></description>
  <category>notes</category>
  <category>open source</category>
  <guid>https://dataand.me/notes/2021-09_notes-on-re-licensing/</guid>
  <pubDate>Thu, 23 Sep 2021 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/notes/2021-09_notes-on-re-licensing/lindberg-darth-vader-derivative-works.png" medium="image" type="image/png" height="80" width="144"/>
</item>
<item>
  <title>What’s new in dbplyr 2.0.0?</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/talks/2020-12_whats-new-in-dbplyr-2/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<section id="about" class="level2">
<h2 class="anchored" data-anchor-id="about">About</h2>
<p><a href="https://dbplyr.tidyverse.org/">dbplyr</a> is the database back end for the popular <a href="https://dplyr.tidyverse.org/">dplyr</a> package. It allows you to use remote database tables as if they are in-memory data frames by translating dplyr code into SQL. This lightning talk covers some of the new features rolled out in the <a href="https://www.tidyverse.org/blog/2020/11/dbplyr-2-0-0/">dbplyr 2.0.0 release</a>, including: compatibility with dplyr 1.0.0, improved SQL translation, and better extensibility through the new <a href="https://dbplyr.tidyverse.org/articles/backend-2.html">dbplyr backend API</a>.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/8d83ba4b93264f7fb4f8cd7a301b3d2c" title="What's new in dbplyr 2.0.0? — GBUG 2020" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777"></iframe>
<p>Full-resolution slides and example code can be found in the <a href="https://github.com/batpigandme/gbug-lightning">talk’s GitHub repo</a>.</p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-dplyr-1-0" class="csl-entry">
Wickham, Hadley, Romain François, Lionel Henry, Kirill Müller, and Davis Vaughan. 2020. <em><span class="nocase">dplyr</span>: A grammar of data manipulation</em>. <a href="https://dplyr.tidyverse.org">https://dplyr.tidyverse.org</a>.
</div>
<div id="ref-dbplyr-2-0" class="csl-entry">
Wickham, Hadley, Maximilian Girlich, and Edgar Ruiz. 2020. <em><span class="nocase">dbplyr</span>: A ’<span class="nocase">dplyr</span>’ back end for databases</em>. <a href="https://dbplyr.tidyverse.org/">https://dbplyr.tidyverse.org/</a>.
</div>
</div></section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/SA/deed.en_us">CC BY SA</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2020,
  author = {Averick, Mara},
  title = {What’s New in Dbplyr 2.0.0?},
  date = {2020-12-15},
  url = {https://dataand.me/talks/2020-12_whats-new-in-dbplyr-2/},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2020" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2020. <span>“What’s new in dbplyr 2.0.0?”</span> December
15, 2020. <a href="https://dataand.me/talks/2020-12_whats-new-in-dbplyr-2/">https://dataand.me/talks/2020-12_whats-new-in-dbplyr-2/</a>.
</div></div></section></div> ]]></description>
  <category>talks</category>
  <category>R</category>
  <category>tidyverse</category>
  <category>dbplyr</category>
  <guid>https://dataand.me/talks/2020-12_whats-new-in-dbplyr-2/</guid>
  <pubDate>Tue, 15 Dec 2020 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/talks/images/new-in-dbplyr2-gbug-lightning-cover-slide-min.png" medium="image" type="image/png" height="82" width="144"/>
</item>
<item>
  <title>Storytelling with R</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/talks/2019-03_storytelling-with-r/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<div class="status">
<div class="icon-container">
<p><i class="bi bi-github"></i></p>
</div>
<div class="status-body">
<p>All source code for the website, and the slide PDFs can be found in the <a href="https://github.com/batpigandme/northeastern-2019">talk’s GitHub repository</a>.</p>
</div>
</div>
<section id="interactive-website" class="level2">
<h2 class="anchored" data-anchor-id="interactive-website"><a href="https://inspiring-babbage-762512.netlify.app/storytelling">Interactive Website</a></h2>
<p>Webpage, <a href="https://inspiring-babbage-762512.netlify.app/storytelling">Upping your storytelling game…with help from tools that other people already made</a>, features R source code and output for exploratory data analysis, data visualization, and presentation. It features R packages including: <a href="https://docs.ropensci.org/skimr/">skimr</a> <span class="citation" data-cites="skimr">(Waring et al. 2022)</span>, <a href="https://ggplot2.tidyverse.org/">ggplot2</a> <span class="citation" data-cites="ggplot2">(Wickham 2016)</span>, <a href="https://hrbrmstr.github.io/hrbrthemes/">hrbrthemes</a> <span class="citation" data-cites="hrbrthemes">(Rudis 2020)</span>, <a href="https://yutannihilation.github.io/gghighlight/index.html">gghighlight</a> <span class="citation" data-cites="gghighlight">(Yutani 2023)</span>, <a href="https://ggrepel.slowkow.com/">ggrepel</a> <span class="citation" data-cites="ggrepel">(Slowikowski 2024)</span>, <a href="https://gt.rstudio.com/">gt</a> <span class="citation" data-cites="gt">(Iannone et al. 2024)</span>, <a href="https://asbcllc.com/nbastatR/index.html">nbastatR</a> <span class="citation" data-cites="nbastatR">(Bresler 2023)</span>, <a href="https://jkunst.com/highcharter/index.html">highcharter</a> <span class="citation" data-cites="highcharter">(Kunst 2024)</span>, and <a href="https://github.com/AliciaSchep/gglabeller">gglabeller</a> <span class="citation" data-cites="gglabeller">(Schep 2022)</span>.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://dataand.me/talks/images/storytelling-w-r-site-screenshot-min.png" class="preview-image img-fluid figure-img" alt="Screenshot from Upping your storytelling game page shows some R code and a scatterplot of offensive vs. defensive box plus-minus with points labeled using gghighlight and ggrepel packages."></p>
<figcaption>Screenshot from Upping your storytelling game.</figcaption>
</figure>
</div>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides"><a href="https://github.com/batpigandme/northeastern-2019/blob/master/northeastern_R_digital_storytelling.pdf">Slides</a></h2>
<p>PDF of slides.</p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-nbastatR" class="csl-entry">
Bresler, Alex. 2023. <em><span class="nocase">nbastatR</span>: R’s interface to <span>NBA</span> data</em>. <a href="https://github.com/abresler/nbastatR">https://github.com/abresler/nbastatR</a>.
</div>
<div id="ref-gt" class="csl-entry">
Iannone, Richard, Joe Cheng, Barret Schloerke, Ellis Hughes, Alexandra Lauer, and JooYoung Seo. 2024. <em><span class="nocase">gt</span>: Easily create presentation-ready display tables</em>. <a href="https://CRAN.R-project.org/package=gt">https://CRAN.R-project.org/package=gt</a>.
</div>
<div id="ref-highcharter" class="csl-entry">
Kunst, Joshua. 2024. <em><span class="nocase">highcharter</span>: A wrapper for the ’highcharts’ library</em>.
</div>
<div id="ref-hrbrthemes" class="csl-entry">
Rudis, Bob. 2020. <em><span class="nocase">hrbrthemes</span>: Additional themes, theme components and utilities for <span class="nocase">’ggplot2’</span></em>. <a href="http://github.com/hrbrmstr/hrbrthemes">http://github.com/hrbrmstr/hrbrthemes</a>.
</div>
<div id="ref-gglabeller" class="csl-entry">
Schep, Alicia. 2022. <em><span class="nocase">gglabeller</span>: Shiny gadget for labelling points in ggplots</em>.
</div>
<div id="ref-ggrepel" class="csl-entry">
Slowikowski, Kamil. 2024. <em><span class="nocase">ggrepel</span>: Automatically position non-overlapping text labels with <span class="nocase">’ggplot2’</span></em>. <a href="https://CRAN.R-project.org/package=ggrepel">https://CRAN.R-project.org/package=ggrepel</a>.
</div>
<div id="ref-skimr" class="csl-entry">
Waring, Elin, Michael Quinn, Amelia McNamara, Eduardo Arino de la Rubia, Hao Zhu, and Shannon Ellis. 2022. <em><span class="nocase">skimr</span>: Compact and flexible summaries of data</em>. <a href="https://CRAN.R-project.org/package=skimr">https://CRAN.R-project.org/package=skimr</a>.
</div>
<div id="ref-ggplot2" class="csl-entry">
Wickham, Hadley. 2016. <em><span class="nocase">ggplot2</span>: Elegant graphics for data analysis</em>. Springer-Verlag New York. <a href="https://ggplot2.tidyverse.org">https://ggplot2.tidyverse.org</a>.
</div>
<div id="ref-gghighlight" class="csl-entry">
Yutani, Hiroaki. 2023. <em><span class="nocase">gghighlight</span>: Highlight lines and points in <span class="nocase">’ggplot2’</span></em>. <a href="https://CRAN.R-project.org/package=gghighlight">https://CRAN.R-project.org/package=gghighlight</a>.
</div>
</div></section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/SA/deed.en_us">CC BY SA</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2019,
  author = {Averick, Mara},
  title = {Storytelling with {R}},
  date = {2019-03-28},
  url = {https://dataand.me/talks/2019-03_storytelling-with-r/},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2019" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2019. <span>“Storytelling with R.”</span> March 28, 2019.
<a href="https://dataand.me/talks/2019-03_storytelling-with-r/">https://dataand.me/talks/2019-03_storytelling-with-r/</a>.
</div></div></section></div> ]]></description>
  <category>talks</category>
  <category>R</category>
  <category>data visualization</category>
  <category>ggplot2</category>
  <guid>https://dataand.me/talks/2019-03_storytelling-with-r/</guid>
  <pubDate>Thu, 28 Mar 2019 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Sustainers of the tidyverse — H2O World</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/talks/2019-02_sustainers-of-the-tidyverse-h2o-world/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<section id="about" class="level2">
<h2 class="anchored" data-anchor-id="about">About</h2>
<p>If a piece of open-source software is to survive its own success, it must have a healthy community of active contributors. The <a href="https://www.tidyverse.org/">tidyverse</a>, a collection of R packages for data science with a shared underlying design philosophy, has become popular in no small part because of its usability among those who do not consider themselves to be “programmers.” However, this active base of non-developer users has been a fruitful source of contributions as we’ve sought to highlight aspects of contributing to open source beyond committing lines of code. This talk covers the technical tools, virtual spaces, and social norms that have enabled and empowered community contributions.</p>
</section>
<section id="video" class="level2">
<h2 class="anchored" data-anchor-id="video">Video</h2>
<div class="video-container">
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/2k4koLq8w1w?si=cSQZ4Mux0xok3DkW" title="Video player for Mara Averick, RStudio - Sustainers of the tidyverse - H2O World" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>
</div>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/6d4b45e86cda4d6ca7e68c8a4d5d78f9" title="Sustainers of the tidyverse – H2O World SF 2019" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777"></iframe>
<p>The full-resolution slides as well as links to additional resources can be found in the <a href="https://github.com/batpigandme/h2o-world-2019">talk’s GitHub repo</a>.</p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-casalnuovo2015a" class="csl-entry">
Casalnuovo, Casey, Bogdan Vasilescu, Premkumar Devanbu, and Vladimir Filkov. 2015. <span>“Developer onboarding in <span>GitHub</span>: The role of prior social links and language experience.”</span> In <em>Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering</em>, 817–28. <span>ESEC</span>/<span>FSE</span> 2015. New York, NY, USA: Association for Computing Machinery. <a href="https://doi.org/10.1145/2786805.2786854">https://doi.org/10.1145/2786805.2786854</a>.
</div>
<div id="ref-dallolio2011" class="csl-entry">
Dall’Olio, Giovanni M., Jacopo Marino, Michael Schubert, Kevin L. Keys, Melanie I. Stefan, Colin S. Gillespie, Pierre Poulain, et al. 2011. <span>“Ten <span>Simple Rules</span> for <span>Getting Help</span> from <span>Online Scientific Communities</span>.”</span> <em>PLOS Computational Biology</em> 7 (9): e1002202. <a href="https://doi.org/10.1371/journal.pcbi.1002202">https://doi.org/10.1371/journal.pcbi.1002202</a>.
</div>
<div id="ref-ford2018" class="csl-entry">
Ford, Denae, Kristina Lustig, Jeremy Banks, Chris Parnin, and North Carolina. 2018. <span>“"<span>We Don</span>’t <span>Do That Here</span>": <span>How Collaborative Editing</span> with <span>Mentors Improves Engagement</span> in <span>Social Q</span> &amp; <span>A Communities</span>.”</span> In <em><span>CHI</span> 2018</em>. Montreal, QC, Canada: ACM. <a href="https://doi.org/10.1145/3173574.3174182">https://doi.org/10.1145/3173574.3174182</a>.
</div>
<div id="ref-ford2016" class="csl-entry">
Ford, Denae, Justin Smith, Philip J. Guo, and Chris Parnin. 2016. <span>“Paradise unplugged: Identifying barriers for female participation on stack overflow.”</span> In <em>Proceedings of the 2016 24th <span>ACM SIGSOFT</span> International Symposium on Foundations of Software Engineering</em>, 846–57. <span>FSE</span> 2016. New York, NY, USA: Association for Computing Machinery. <a href="https://doi.org/10.1145/2950290.2950331">https://doi.org/10.1145/2950290.2950331</a>.
</div>
<div id="ref-hawthorn2012" class="csl-entry">
Hawthorn, Leslie. 2012. <span>“You’ll <span>Eventually Know Everything They</span>’ve <span>Forgotten</span>.”</span> In <em>Open <span>Advice</span>: <span>FOSS</span>: <span>What We Wish We Had Known When We Started2</span></em>, edited by Lydia Pintscher, 29–32. <a href="http://www.open-advice.org/">http://www.open-advice.org/</a>.
</div>
<div id="ref-macieira2012" class="csl-entry">
Macieira, Thiago. 2012. <span>“The <span>Art</span> of <span>Problem Solving</span>.”</span> In <em>Open <span>Advice</span>: <span>FOSS</span>: <span>What We Wish We Had Known When We Started</span></em>, edited by Lydia Pintscher, 55–61. <a href="http://www.open-advice.org/">http://www.open-advice.org/</a>.
</div>
<div id="ref-nickolls2017" class="csl-entry">
Nickolls, Ben. 2017. <span>“Sustain - <span>A</span> one day conversation for open source software sustainers: <span>The</span> report.”</span> Edited by Robert Gibb. GitHub HQ (SF): Sustain OSS. <a href="https://sustainoss.org/assets/pdf/SustainOSS-west-2017-report.pdf">https://sustainoss.org/assets/pdf/SustainOSS-west-2017-report.pdf</a>.
</div>
<div id="ref-pintscher2012" class="csl-entry">
Pintscher, Lydia, ed. 2012. <em>Open <span>Advice</span>: <span>FOSS</span>: <span>What We Wish We Had Known When We Started</span></em>. <a href="http://www.open-advice.org/">http://www.open-advice.org/</a>.
</div>
<div id="ref-ross2017a" class="csl-entry">
Ross, Noam, Scott Chamberlain, Karthik Ram, and Maëlle Salmon. 2017. <span>“How <span class="nocase">rOpenSci</span> uses <span>Code Review</span> to <span>Promote Reproducible Science</span>.”</span> <em>rOpenSci</em>, September. <a href="https://doi.org/10.59350/bqjqp-2be69">https://doi.org/10.59350/bqjqp-2be69</a>.
</div>
<div id="ref-thieme2018" class="csl-entry">
Thieme, Nick. 2018. <span>“R <span>Generation</span>.”</span> <em>Significance</em> 15 (4): 14–19. <a href="https://doi.org/10.1111/j.1740-9713.2018.01169.x">https://doi.org/10.1111/j.1740-9713.2018.01169.x</a>.
</div>
<div id="ref-traweek1988" class="csl-entry">
Traweek, Sharon. 1988. <em>Beamtimes and <span>Lifetimes</span>: <span>The World</span> of <span>High Energy Physics</span></em>. Cambridge, MA: Harvard University Press.
</div>
<div id="ref-wilson2018" class="csl-entry">
Wilson, Greg. 2018. <span>“Abstraction and <span>Comprehension</span>.”</span> The Third Bit. November 3, 2018. <a href="https://third-bit.com/2018/11/03/abstraction-comprehension/">https://third-bit.com/2018/11/03/abstraction-comprehension/</a>.
</div>
</div></section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/SA/deed.en_us">CC BY SA</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2019,
  author = {Averick, Mara},
  title = {Sustainers of the Tidyverse — {H2O} {World}},
  date = {2019-02-09},
  url = {https://dataand.me/talks/2019-02_sustainers-of-the-tidyverse-h2o-world/},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2019" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2019. <span>“Sustainers of the tidyverse — H2O
World.”</span> February 9, 2019. <a href="https://dataand.me/talks/2019-02_sustainers-of-the-tidyverse-h2o-world/">https://dataand.me/talks/2019-02_sustainers-of-the-tidyverse-h2o-world/</a>.
</div></div></section></div> ]]></description>
  <category>talks</category>
  <category>video</category>
  <category>R</category>
  <category>tidyverse</category>
  <category>open source</category>
  <category>sci-comm</category>
  <guid>https://dataand.me/talks/2019-02_sustainers-of-the-tidyverse-h2o-world/</guid>
  <pubDate>Sat, 09 Feb 2019 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/talks/images/sustainers-of-the-tidyverse-h2o-sf-cover-slide-min.png" medium="image" type="image/png" height="82" width="144"/>
</item>
<item>
  <title>MLOSS 2018: Sustainable communities</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/talks/2018-12_mloss-2018/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<section id="about-the-workshop" class="level2">
<h2 class="anchored" data-anchor-id="about-the-workshop">About the workshop</h2>
<p>As described in the <a href="https://2018.mloss.org/">MLOSS 2018</a> CfP:</p>
<blockquote class="blockquote">
<p>Machine learning open source software (MLOSS) is one of the cornerstones of open science and reproducible research. Once a niche area for ML research, MLOSS today has gathered significant momentum, fostered both by scientific community, and more recently by corporate organizations. The past mloss.org workshops, from NIPS’06 to ICML’15, successfully brought together researchers and developers from both fields, to exchange experiences and lessons learnt, to encourage interoperability between people and projects, and to demonstrate software to users in the ML community.</p>
<p>Continuing the tradition in 2018, this year’s workshop that is a mix of invited speakers (<a href="https://numfocus.org/">NumFOCUS</a>, <a href="https://www.tidyverse.org/">tidyverse</a>, <a href="https://www.openml.org/">openML</a>, <a href="https://gpflow.readthedocs.io/en/latest/">GPFlow</a>, <a href="http://eigen.tuxfamily.org/">Eigen3</a>), contributed talks/demos, and discussion/activity sessions. This year’s headline aims to give an insight of the challenges faced by projects as they seek long-term sustainability, with a particular focus on community building and preservation, and diverse teams.</p>
</blockquote>
<p>Indeed, the workshop, talks, and discussion, included speakers and participants focused on an array of programming languages from different scientific communities, and was an amazing peer-to-peer exchange of techniques and lessons learned for driving community engagement and sustainability.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<p>Slides from my presentation (embedded, below), can also be found with working links in <a href="https://github.com/batpigandme/mloss-2018?tab=readme-ov-file">their GitHub repo</a>, as well as selected resources from both the talk and the panel discussion that followed.</p>
<iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/a338fa4760944115bf19685fa6f83941" title="Sustainers of the tidyverse – MLOSS 2018" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777"></iframe>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-casalnuovo2015a" class="csl-entry">
Casalnuovo, Casey, Bogdan Vasilescu, Premkumar Devanbu, and Vladimir Filkov. 2015. <span>“Developer onboarding in <span>GitHub</span>: The role of prior social links and language experience.”</span> In <em>Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering</em>, 817–28. <span>ESEC</span>/<span>FSE</span> 2015. New York, NY, USA: Association for Computing Machinery. <a href="https://doi.org/10.1145/2786805.2786854">https://doi.org/10.1145/2786805.2786854</a>.
</div>
<div id="ref-dallolio2011" class="csl-entry">
Dall’Olio, Giovanni M., Jacopo Marino, Michael Schubert, Kevin L. Keys, Melanie I. Stefan, Colin S. Gillespie, Pierre Poulain, et al. 2011. <span>“Ten <span>Simple Rules</span> for <span>Getting Help</span> from <span>Online Scientific Communities</span>.”</span> <em>PLOS Computational Biology</em> 7 (9): e1002202. <a href="https://doi.org/10.1371/journal.pcbi.1002202">https://doi.org/10.1371/journal.pcbi.1002202</a>.
</div>
<div id="ref-ford2018" class="csl-entry">
Ford, Denae, Kristina Lustig, Jeremy Banks, Chris Parnin, and North Carolina. 2018. <span>“"<span>We Don</span>’t <span>Do That Here</span>": <span>How Collaborative Editing</span> with <span>Mentors Improves Engagement</span> in <span>Social Q</span> &amp; <span>A Communities</span>.”</span> In <em><span>CHI</span> 2018</em>. Montreal, QC, Canada: ACM. <a href="https://doi.org/10.1145/3173574.3174182">https://doi.org/10.1145/3173574.3174182</a>.
</div>
<div id="ref-ford2016" class="csl-entry">
Ford, Denae, Justin Smith, Philip J. Guo, and Chris Parnin. 2016. <span>“Paradise unplugged: Identifying barriers for female participation on stack overflow.”</span> In <em>Proceedings of the 2016 24th <span>ACM SIGSOFT</span> International Symposium on Foundations of Software Engineering</em>, 846–57. <span>FSE</span> 2016. New York, NY, USA: Association for Computing Machinery. <a href="https://doi.org/10.1145/2950290.2950331">https://doi.org/10.1145/2950290.2950331</a>.
</div>
<div id="ref-hawthorn2012" class="csl-entry">
Hawthorn, Leslie. 2012. <span>“You’ll <span>Eventually Know Everything They</span>’ve <span>Forgotten</span>.”</span> In <em>Open <span>Advice</span>: <span>FOSS</span>: <span>What We Wish We Had Known When We Started2</span></em>, edited by Lydia Pintscher, 29–32. <a href="http://www.open-advice.org/">http://www.open-advice.org/</a>.
</div>
<div id="ref-macieira2012" class="csl-entry">
Macieira, Thiago. 2012. <span>“The <span>Art</span> of <span>Problem Solving</span>.”</span> In <em>Open <span>Advice</span>: <span>FOSS</span>: <span>What We Wish We Had Known When We Started</span></em>, edited by Lydia Pintscher, 55–61. <a href="http://www.open-advice.org/">http://www.open-advice.org/</a>.
</div>
<div id="ref-nickolls2017" class="csl-entry">
Nickolls, Ben. 2017. <span>“Sustain - <span>A</span> one day conversation for open source software sustainers: <span>The</span> report.”</span> Edited by Robert Gibb. GitHub HQ (SF): Sustain OSS. <a href="https://sustainoss.org/assets/pdf/SustainOSS-west-2017-report.pdf">https://sustainoss.org/assets/pdf/SustainOSS-west-2017-report.pdf</a>.
</div>
<div id="ref-pintscher2012" class="csl-entry">
Pintscher, Lydia, ed. 2012. <em>Open <span>Advice</span>: <span>FOSS</span>: <span>What We Wish We Had Known When We Started</span></em>. <a href="http://www.open-advice.org/">http://www.open-advice.org/</a>.
</div>
<div id="ref-ross2017a" class="csl-entry">
Ross, Noam, Scott Chamberlain, Karthik Ram, and Maëlle Salmon. 2017. <span>“How <span class="nocase">rOpenSci</span> uses <span>Code Review</span> to <span>Promote Reproducible Science</span>.”</span> <em>rOpenSci</em>, September. <a href="https://doi.org/10.59350/bqjqp-2be69">https://doi.org/10.59350/bqjqp-2be69</a>.
</div>
<div id="ref-thieme2018" class="csl-entry">
Thieme, Nick. 2018. <span>“R <span>Generation</span>.”</span> <em>Significance</em> 15 (4): 14–19. <a href="https://doi.org/10.1111/j.1740-9713.2018.01169.x">https://doi.org/10.1111/j.1740-9713.2018.01169.x</a>.
</div>
<div id="ref-traweek1988" class="csl-entry">
Traweek, Sharon. 1988. <em>Beamtimes and <span>Lifetimes</span>: <span>The World</span> of <span>High Energy Physics</span></em>. Cambridge, MA: Harvard University Press.
</div>
<div id="ref-wilson2018" class="csl-entry">
Wilson, Greg. 2018. <span>“Abstraction and <span>Comprehension</span>.”</span> The Third Bit. November 3, 2018. <a href="https://third-bit.com/2018/11/03/abstraction-comprehension/">https://third-bit.com/2018/11/03/abstraction-comprehension/</a>.
</div>
</div></section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/SA/deed.en_us">CC BY SA</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2018,
  author = {Averick, Mara},
  title = {MLOSS 2018: {Sustainable} Communities},
  date = {2018-12-08},
  url = {https://dataand.me/talks/2018-12_mloss-2018/},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2018" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2018. <span>“MLOSS 2018: Sustainable communities.”</span>
December 8, 2018. <a href="https://dataand.me/talks/2018-12_mloss-2018/">https://dataand.me/talks/2018-12_mloss-2018/</a>.
</div></div></section></div> ]]></description>
  <category>talks</category>
  <category>R</category>
  <category>tidyverse</category>
  <category>open source</category>
  <category>sci-comm</category>
  <guid>https://dataand.me/talks/2018-12_mloss-2018/</guid>
  <pubDate>Sat, 08 Dec 2018 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/talks/images/sustainers-of-the-tidyverse-mloss-cover-slide-min.png" medium="image" type="image/png" height="82" width="144"/>
</item>
<item>
  <title>How I Found Your Answer — DC R 2018</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/talks/2018-11_how-i-found-your-answer-dcr/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<section id="video" class="level2">
<h2 class="anchored" data-anchor-id="video">Video</h2>
<div class="video-container">
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/AD2Bnjru6g0?si=g5Cl9Bi5nuJiAmJi" title="Video player for Mara Averick - How I Found Your Answer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>
</div>
<p>Want to see more R talks? Lander Analytics made a playlist of all of the videos from the <a href="https://youtube.com/playlist?list=PLlzRFZmxVl9RLs_CRM2-zTc-G2nw7r9t9&amp;si=VxNj66NWG6AvQvQO">2018 DC R Conference</a>.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/a61256541a8646679b28f998cca821b6" title="How I found your answer - DC R 2018" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777"></iframe>
<p>Full resolution slides can be found in the <a href="https://github.com/batpigandme/dcr">talk’s GitHub repo</a>.</p>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/SA/deed.en_us">CC BY SA</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2018,
  author = {Averick, Mara},
  title = {How {I} {Found} {Your} {Answer} — {DC} {R} 2018},
  date = {2018-11-09},
  url = {https://dataand.me/talks/2018-11_how-i-found-your-answer-dcr/},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2018" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2018. <span>“How I Found Your Answer — DC R 2018.”</span>
November 9, 2018. <a href="https://dataand.me/talks/2018-11_how-i-found-your-answer-dcr/">https://dataand.me/talks/2018-11_how-i-found-your-answer-dcr/</a>.
</div></div></section></div> ]]></description>
  <category>talks</category>
  <category>video</category>
  <category>R</category>
  <category>sci-comm</category>
  <guid>https://dataand.me/talks/2018-11_how-i-found-your-answer-dcr/</guid>
  <pubDate>Fri, 09 Nov 2018 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/talks/images/how-i-found-your-answer-dcr-cover-slide-min.png" medium="image" type="image/png" height="82" width="144"/>
</item>
<item>
  <title>Phrasing — NYR 2018</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/talks/2018-04_phrasing-nyr/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<p>The <a href="https://www.rstats.nyc/">New York R Conference</a> is, without a doubt, one of my favorites. Not only do you get to learn from other R users and developers, but, if you speak, you even get to choose your own entrance music!</p>
<p>If you missed NYR 2018, Lander Analytics has a <a href="https://www.youtube.com/watch?v=xLRINqaL5yk&amp;list=PLlzRFZmxVl9T9JDYGF6fUJtJ0qa_B2BVp">playlist of all of the talks</a> available. You can check out the video (and slides) from my talk, <em>Phrasing: Communicating data science through GIFs, tweets, and classic misdirection</em> below.</p>
<section id="abstract" class="level2">
<h2 class="anchored" data-anchor-id="abstract">Abstract</h2>
<p>Equal parts history and mystery, noted <em>data sciolist</em>, Mara Averick, will take you on a whirlwind tour through the lighter side of learning and communicating (data) science. From the 19th-century pages of Science Gossip to modern-day social media, you’ll find out how the nature of scientific communities has and hasn’t changed over the past 200 years, and discover how “learning out loud” can help you navigate an ever-increasing amount of information, or (at the very least) keep you entertained while so doing.</p>
</section>
<section id="video" class="level2">
<h2 class="anchored" data-anchor-id="video">Video</h2>
<div class="video-container">
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/zSpURCKW11c?si=Sh1XW77mHy_lpnzC" title="Video player for Mara Averick - Phrasing: Communicating Data Science Through Tweets, Gifs, and Classic Misdirection" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>
</div>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/12f9cd6bd38741aca93b56450a79ea87" title="Phrasing – New York R Conference Edition" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777"></iframe>
<p>The slides are also available as a PDF with working links in <a href="https://github.com/batpigandme/phrasing">their GitHub repo</a>.</p>


</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/SA/deed.en_us">CC BY SA</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2018,
  author = {Averick, Mara},
  title = {Phrasing — {NYR} 2018},
  date = {2018-04-21},
  url = {https://dataand.me/talks/2018-04_phrasing-nyr/},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2018" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2018. <span>“Phrasing — NYR 2018.”</span> April 21, 2018.
<a href="https://dataand.me/talks/2018-04_phrasing-nyr/">https://dataand.me/talks/2018-04_phrasing-nyr/</a>.
</div></div></section></div> ]]></description>
  <category>talks</category>
  <category>video</category>
  <category>R</category>
  <category>sci-comm</category>
  <guid>https://dataand.me/talks/2018-04_phrasing-nyr/</guid>
  <pubDate>Sat, 21 Apr 2018 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/talks/images/phrasing-nyr-cover-slide-min.png" medium="image" type="image/png" height="82" width="144"/>
</item>
<item>
  <title>Contributing to the tidyverse</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/talks/2018-02_contributing-to-the-tidyverse/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<section id="about" class="level2">
<h2 class="anchored" data-anchor-id="about">About</h2>
<p>Contributing to open-source software can make you a better programmer, increase your visibility in the community, and help you shape and improve the tools you use every day. This talk will cover the strategies and mechanics of making contributions to “mature” open-source projects, and focus on the tidyverse in particular. From minor changes, to major features, we’ll walk through some of the collaborative dynamics and technical elements to expect, and discuss strategies to make contributing maximally rewarding for you <em>and</em> project maintainers.</p>
</section>
<section id="video" class="level2">
<h2 class="anchored" data-anchor-id="video">Video</h2>
<p><a href="https://posit.co/resources/videos/contributing-to-tidyverse-packages/?wvideo=hql83pkat4"><img src="https://embed-ssl.wistia.com/deliveries/7b2bbe51d1d72538296ccd7afce1b1a1e07e286e.jpg?image_play_button_size=2x&amp;image_crop_resized=960x540&amp;image_play_button=1&amp;image_play_button_color=4287c7e0" width="560" height="315" alt="Picture of woman standing behind podium giving a talk. Thumbnail from video."></a></p><p><a href="https://posit.co/resources/videos/contributing-to-tidyverse-packages/?wvideo=hql83pkat4">Contributing to Tidyverse packages - Posit</a></p>
<p>For videos from the rest of the conference, visit <a href="https://www.rstudio.com/resources/rstudioconf-2018/">rstudio::conf(2018) talks</a>.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/ce26c18c45774ab79bfa9482122c993b" title="contributing to the tidyverse" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777"></iframe>
<p>Slides in PDF format with working links can be found at <a href="http://bit.ly/tverse-contrib" class="uri">http://bit.ly/tverse-contrib</a>.</p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-hawthorn2012" class="csl-entry">
Hawthorn, Leslie. 2012. <span>“You’ll <span>Eventually Know Everything They</span>’ve <span>Forgotten</span>.”</span> In <em>Open <span>Advice</span>: <span>FOSS</span>: <span>What We Wish We Had Known When We Started2</span></em>, edited by Lydia Pintscher, 29–32. <a href="http://www.open-advice.org/">http://www.open-advice.org/</a>.
</div>
<div id="ref-macieira2012" class="csl-entry">
Macieira, Thiago. 2012. <span>“The <span>Art</span> of <span>Problem Solving</span>.”</span> In <em>Open <span>Advice</span>: <span>FOSS</span>: <span>What We Wish We Had Known When We Started</span></em>, edited by Lydia Pintscher, 55–61. <a href="http://www.open-advice.org/">http://www.open-advice.org/</a>.
</div>
<div id="ref-nickolls2017" class="csl-entry">
Nickolls, Ben. 2017. <span>“Sustain - <span>A</span> one day conversation for open source software sustainers: <span>The</span> report.”</span> Edited by Robert Gibb. GitHub HQ (SF): Sustain OSS. <a href="https://sustainoss.org/assets/pdf/SustainOSS-west-2017-report.pdf">https://sustainoss.org/assets/pdf/SustainOSS-west-2017-report.pdf</a>.
</div>
<div id="ref-norman2002" class="csl-entry">
Norman, Donald A. 2002. <em>The <span>Design</span> of <span>Everyday Things</span></em>. Reprint. New York, NY, USA: Basic Books, Inc.
</div>
</div></section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/SA/deed.en_us">CC BY SA</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2018,
  author = {Averick, Mara},
  title = {Contributing to the Tidyverse},
  date = {2018-02-03},
  url = {https://dataand.me/talks/2018-02_contributing-to-the-tidyverse/},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2018" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2018. <span>“Contributing to the tidyverse.”</span>
February 3, 2018. <a href="https://dataand.me/talks/2018-02_contributing-to-the-tidyverse/">https://dataand.me/talks/2018-02_contributing-to-the-tidyverse/</a>.
</div></div></section></div> ]]></description>
  <category>talks</category>
  <category>video</category>
  <category>R</category>
  <category>open source</category>
  <category>tidyverse</category>
  <guid>https://dataand.me/talks/2018-02_contributing-to-the-tidyverse/</guid>
  <pubDate>Sat, 03 Feb 2018 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/talks/images/contributing-to-the-tidyverse-rsutidoconf2018-cover-slide-min.png" medium="image" type="image/png" height="82" width="144"/>
</item>
<item>
  <title>Phrasing: Communicating data science through tweets, gifs, and classic misdirection</title>
  <dc:creator>Mara Averick</dc:creator>
  <link>https://dataand.me/talks/2018-02_phrasing-rstudioconf/</link>
  <description><![CDATA[ 
<script type="text/javascript">
  document.addEventListener("DOMContentLoaded", () => {
    // Add skip link to the page
    let element = document.getElementById("quarto-header");
    let skiplink =
      '<a id="skiplink" class="visually-hidden-focusable" href="#quarto-document-content">Skip to main content</a>';
    element.insertAdjacentHTML("beforebegin", skiplink);
  });
</script>

<!-- modified from source: https://github.com/gadenbuie/garrickadenbuie-com/blob/main/_partials/title-block-link-buttons/title-block.html -->
<!-- <header id="title-block-header" class="quarto-title-block default"> <div class="quarto-title">  -->
<!-- <div class="quarto-title page-columns page-full featured-image p-4" style="background-image: url(featured.png), url(featured.jpg), url(../featured.jpg);"> -->



<section id="about" class="level2">
<h2 class="anchored" data-anchor-id="about">About</h2>
<p>Equal parts history and mystery, noted <em>data sciolist</em>, Mara Averick, will take you on a whirlwind tour through the lighter side of learning and communicating (data) science. From the 19th-century pages of <em>Science Gossip</em> to modern-day social media, you’ll find out how the nature of scientific communities has and <em>hasn’t</em> changed over the past 200 years, and discover how “learning out loud” can help you navigate an ever-increasing amount of information, or (at the very least) keep you entertained while so doing.</p>
</section>
<section id="video" class="level2">
<h2 class="anchored" data-anchor-id="video">Video</h2>
<p><a href="https://posit.co/resources/videos/phrasing-communicating-data-science-through-tweets-gifs-and-classic-misdirection/?wvideo=k3cecab8qd"><img src="https://embed-ssl.wistia.com/deliveries/58f9a030d593bb991fa76bf1df906f8af6e59b7a.jpg?image_play_button_size=2x&amp;image_crop_resized=960x540&amp;image_play_button=1&amp;image_play_button_color=4287c7e0" alt="Sweating cartoon woman on the left. The right reads Mara Averick, Tidyverse Dev Advocate, RStudio, with a venn diagram beneath it." width="560" height="315"></a></p><p><a href="https://posit.co/resources/videos/phrasing-communicating-data-science-through-tweets-gifs-and-classic-misdirection/?wvideo=k3cecab8qd">Phrasing: Communicating data science through tweets, gifs, and classic misdirection - Posit</a></p>
<p>For videos from the rest of the conference, visit <a href="https://www.rstudio.com/resources/rstudioconf-2018/">rstudio::conf(2018) talks</a>.</p>
</section>
<section id="slides" class="level2">
<h2 class="anchored" data-anchor-id="slides">Slides</h2>
<iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/5fe92ba32c164382abaf23879fa35eea" title="Phrasing: communicating data science through gifs, tweets, &amp; classic misdirection" allowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.1) 0px 5px 40px; width: 100%; height: auto; aspect-ratio: 560 / 315;" data-ratio="1.7777777777777777"></iframe>
<p>Slides in PDF format with working links can be found at <a href="http://bit.ly/phrasing-ds" class="uri">http://bit.ly/phrasing-ds</a>.</p>



</section>

<a onclick="window.scrollTo(0, 0); return false;" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a><div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">References</h2><div id="refs" class="references csl-bib-body hanging-indent" data-entry-spacing="0">
<div id="ref-pintscher2012" class="csl-entry">
Pintscher, Lydia, ed. 2012. <em>Open <span>Advice</span>: <span>FOSS</span>: <span>What We Wish We Had Known When We Started</span></em>. <a href="http://www.open-advice.org/">http://www.open-advice.org/</a>.
</div>
<div id="ref-ross2017a" class="csl-entry">
Ross, Noam, Scott Chamberlain, Karthik Ram, and Maëlle Salmon. 2017. <span>“How <span class="nocase">rOpenSci</span> uses <span>Code Review</span> to <span>Promote Reproducible Science</span>.”</span> <em>rOpenSci</em>, September. <a href="https://doi.org/10.59350/bqjqp-2be69">https://doi.org/10.59350/bqjqp-2be69</a>.
</div>
</div></section><section class="quarto-appendix-contents" id="quarto-reuse"><h2 class="anchored quarto-appendix-heading">Reuse</h2><div class="quarto-appendix-contents"><div><a rel="license" href="https://creativecommons.org/licenses/by/SA/deed.en_us">CC BY SA</a></div></div></section><section class="quarto-appendix-contents" id="quarto-citation"><h2 class="anchored quarto-appendix-heading">Citation</h2><div><div class="quarto-appendix-secondary-label">BibTeX citation:</div><pre class="sourceCode code-with-copy quarto-appendix-bibtex"><code class="sourceCode bibtex">@online{averick2018,
  author = {Averick, Mara},
  title = {Phrasing: {Communicating} Data Science Through Tweets, Gifs,
    and Classic Misdirection},
  date = {2018-02-02},
  url = {https://dataand.me/talks/2018-02_phrasing-rstudioconf/},
  langid = {en-US}
}
</code></pre><div class="quarto-appendix-secondary-label">For attribution, please cite this work as:</div><div id="ref-averick2018" class="csl-entry quarto-appendix-citeas">
Averick, Mara. 2018. <span>“Phrasing: Communicating data science through
tweets, gifs, and classic misdirection.”</span> February 2, 2018. <a href="https://dataand.me/talks/2018-02_phrasing-rstudioconf/">https://dataand.me/talks/2018-02_phrasing-rstudioconf/</a>.
</div></div></section></div> ]]></description>
  <category>talks</category>
  <category>video</category>
  <category>R</category>
  <category>sci-comm</category>
  <guid>https://dataand.me/talks/2018-02_phrasing-rstudioconf/</guid>
  <pubDate>Fri, 02 Feb 2018 00:00:00 GMT</pubDate>
  <media:content url="https://dataand.me/talks/images/phrasing-rstudioconf2018-cover-slide-min.png" medium="image" type="image/png" height="82" width="144"/>
</item>
</channel>
</rss>
