<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
h1
        {mso-style-priority:9;
        mso-style-link:"Heading 1 Char";
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:25.5pt;
        font-family:"Times New Roman","serif";
        font-weight:bold;}
h2
        {mso-style-priority:9;
        mso-style-link:"Heading 2 Char";
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:22.5pt;
        font-family:"Times New Roman","serif";
        font-weight:bold;}
h3
        {mso-style-priority:9;
        mso-style-link:"Heading 3 Char";
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:18.0pt;
        font-family:"Times New Roman","serif";
        font-weight:bold;}
h4
        {mso-style-priority:9;
        mso-style-link:"Heading 4 Char";
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:13.5pt;
        font-family:"Times New Roman","serif";
        font-weight:bold;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.Heading1Char
        {mso-style-name:"Heading 1 Char";
        mso-style-priority:9;
        mso-style-link:"Heading 1";
        font-family:"Times New Roman","serif";
        mso-fareast-language:EN-NZ;
        font-weight:bold;}
span.Heading2Char
        {mso-style-name:"Heading 2 Char";
        mso-style-priority:9;
        mso-style-link:"Heading 2";
        font-family:"Times New Roman","serif";
        mso-fareast-language:EN-NZ;
        font-weight:bold;}
span.Heading3Char
        {mso-style-name:"Heading 3 Char";
        mso-style-priority:9;
        mso-style-link:"Heading 3";
        font-family:"Times New Roman","serif";
        mso-fareast-language:EN-NZ;
        font-weight:bold;}
span.Heading4Char
        {mso-style-name:"Heading 4 Char";
        mso-style-priority:9;
        mso-style-link:"Heading 4";
        font-family:"Times New Roman","serif";
        mso-fareast-language:EN-NZ;
        font-weight:bold;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";
        mso-fareast-language:EN-NZ;}
p.caption, li.caption, div.caption
        {mso-style-name:caption;
        mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.EmailStyle26
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.keyword
        {mso-style-name:keyword;}
span.paren
        {mso-style-name:paren;}
span.identifier
        {mso-style-name:identifier;}
span.operator
        {mso-style-name:operator;}
span.string
        {mso-style-name:string;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:359746954;
        mso-list-template-ids:-1198372266;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1
        {mso-list-id:462043905;
        mso-list-template-ids:-1250936926;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2
        {mso-list-id:627712007;
        mso-list-template-ids:-1093761216;}
@list l2:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l2:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3
        {mso-list-id:1608000308;
        mso-list-template-ids:1617724856;}
@list l3:level1
        {mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level2
        {mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level3
        {mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level4
        {mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level5
        {mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level6
        {mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level7
        {mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level8
        {mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level9
        {mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l4
        {mso-list-id:2113939620;
        mso-list-template-ids:-856637994;}
@list l4:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l4:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-NZ" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi all,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here are my notes from the talk I will give this afternoon in Brussels.<o:p></o:p></p>
<p class="MsoNormal">The latest GitHub version of BrailleR is required, and the link to the results won’t be active for anyone so you would need to run the code examples to get it all going.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<h1><span style="font-size:28.5pt">Interactive graphs for blind and print disabled people<o:p></o:p></span></h1>
<h4><em>A. Jonathan R. Godfrey<sup>1</sup>, Paul Murrell<sup>2</sup>, and Volker Sorge<sup>3</sup></em><o:p></o:p></h4>
<ol start="1" type="1">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo1">
Institute of Fundamental Sciences, Massey University, New Zealand<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo1">
Department of Statistics, University of Auckland, New Zealand<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo1">
Department of Computer Science, University of Birmingham, United Kingdom<o:p></o:p></li></ol>
<p><strong>Keywords</strong>: accessibility, exploration, interactivity<o:p></o:p></p>
<h2>Introduction<o:p></o:p></h2>
<p><em><b>Descriptions of graphs using long text strings are difficult for blind people and others with print disabilities to process; they lack the interactivity necessary to understand the content and presentation of even the simplest statistical graphs.
</b></em><o:p></o:p></p>
<p>My work on the BrailleR package started about five years ago.<o:p></o:p></p>
<pre><span class="keyword">library</span><span class="paren">(</span><span class="identifier">BrailleR</span><span class="paren">)</span><o:p></o:p></pre>
<p>My stock standard example:<o:p></o:p></p>
<pre><span class="keyword">attach</span><span class="paren">(</span><span class="identifier">airquality</span><span class="paren">)</span><code><o:p></o:p></code></pre>
<pre><span class="identifier">MyHist</span><code> </code><span class="operator"><-</span><code> </code><span class="identifier">hist</span><span class="paren">(</span><span class="identifier">Ozone</span><code>, </code><span class="identifier">xlab</span><span class="operator">=</span><span class="string">"Ozone (ppb)"</span><span class="paren">)</span><o:p></o:p></pre>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="caption">The histogram <o:p></o:p></p>
<pre><span class="identifier">VI</span><span class="paren">(</span><span class="identifier">MyHist</span><span class="paren">)</span><o:p></o:p></pre>
<pre><code>This is a histogram, with the title: Histogram of Ozone<o:p></o:p></code></pre>
<pre><code>"Ozone" is marked on the x-axis.<o:p></o:p></code></pre>
<pre><code>Tick marks for the x-axis are at: 0, 50, 100, and 150 <o:p></o:p></code></pre>
<pre><code>There are a total of 116 elements for this variable.<o:p></o:p></code></pre>
<pre><code>Tick marks for the y-axis are at: 0, 10, 20, and 30 <o:p></o:p></code></pre>
<pre><code>It has 9 bins with equal widths, starting at 0 and ending at 180 .<o:p></o:p></code></pre>
<pre><code>The mids and counts for the bins are:<o:p></o:p></code></pre>
<pre><code>mid = 10  count = 37 <o:p></o:p></code></pre>
<pre><code>mid = 30  count = 34 <o:p></o:p></code></pre>
<pre><code>mid = 50  count = 14 <o:p></o:p></code></pre>
<pre><code>mid = 70  count = 15 <o:p></o:p></code></pre>
<pre><code>mid = 90  count = 9 <o:p></o:p></code></pre>
<pre><code>mid = 110  count = 4 <o:p></o:p></code></pre>
<pre><code>mid = 130  count = 2 <o:p></o:p></code></pre>
<pre><code>mid = 150  count = 0 <o:p></o:p></code></pre>
<pre><code>mid = 170  count = 1</code><o:p></o:p></pre>
<pre><span class="keyword">detach</span><span class="paren">(</span><span class="identifier">airquality</span><span class="paren">)</span><o:p></o:p></pre>
<p>N.B. the <code><span style="font-size:10.0pt">hist()</span></code> function is included in BrailleR to do a few extra little jobs that collect the necessary bits and pieces that form the plot. It still calls the base R
<code><span style="font-size:10.0pt">graphics::hist()</span></code> function.<o:p></o:p></p>
<pre><span class="identifier">BrailleR</span><span class="operator">::</span><span class="identifier">hist</span><o:p></o:p></pre>
<pre><code>function (x, ...) <o:p></o:p></code></pre>
<pre><code>{<o:p></o:p></code></pre>
<pre><code>    MC <- match.call(expand.dots = TRUE)<o:p></o:p></code></pre>
<pre><code>    MC[[1L]] <- quote(graphics::hist)<o:p></o:p></code></pre>
<pre><code>    Out <- eval(MC, parent.frame())<o:p></o:p></code></pre>
<pre><code>    if (length(MC$main) > 0) <o:p></o:p></code></pre>
<pre><code>        Out$main = as.character(MC$main)<o:p></o:p></code></pre>
<pre><code>    if (length(MC$sub) > 0) <o:p></o:p></code></pre>
<pre><code>        Out$sub = as.character(MC$sub)<o:p></o:p></code></pre>
<pre><code>    if (length(MC$xlab) > 0) <o:p></o:p></code></pre>
<pre><code>        Out$xlab = as.character(MC$xlab)<o:p></o:p></code></pre>
<pre><code>    if (length(MC$ylab) > 0) <o:p></o:p></code></pre>
<pre><code>        Out$ylab = as.character(MC$ylab)<o:p></o:p></code></pre>
<pre><code>    Out = Augment(Out)<o:p></o:p></code></pre>
<pre><code>    return(invisible(Out))<o:p></o:p></code></pre>
<pre><code>}<o:p></o:p></code></pre>
<pre><code><environment: namespace:BrailleR></code><o:p></o:p></pre>
<p><em><b>Until very recently, R has been the only statistical software that has any capacity for offering the print disabled community any hope of support with respect to accessing graphs.</b></em><o:p></o:p></p>
<p>SAS launched its tool called the graphics accelerator in March this year. It purports to be able to handle any graph found on the web that was generated by SAS. The user clicks on the SAS graph and opens it in a new webpage with the accelerator wrapped around
 the graph. It is undoubtedly a major step change in the world of access to graphs for blind and other print disabled people.<o:p></o:p></p>
<p>You can look on YouTube for a demo video introduced by a blind SAS employee (Ed Somers).<o:p></o:p></p>
<p>I would argue that its main focus is to support blind people viewing the work of others, but there is scope for it to assist print disabled SAS users.<o:p></o:p></p>
<p>In 2016, another tool was released for MS Excel users wishing to create and explore graphs. It is delivered to end users as an add-on for the open source screen reading software known as NVDA. Many blind people use this software, but it is only a solution
 for Windows users. Similar attempts to create tools for the commercial screen reader known as JAWS have come and gone without as much success.<o:p></o:p></p>
<p>My personal focus has always been to improve the educational and employment prospects of blind people. In an information age, there is an expectation that people will process information presented in a variety of forms, and to a lesser degree, be able to
 create that same content. I want a solution that is:<o:p></o:p></p>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2">
independent of the user’s preferred operating system,<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2">
independent of the user’s choice of screen reading software,<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2">
easy to use,<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2">
not reliant on an internet connection.<o:p></o:p></li></ul>
<p><em><b>We have levered off the ability to create text descriptions of graphs and the ability to create interactive web content for chemical diagrams to offer a new user experience.</b></em><o:p></o:p></p>
<p>In February 2016, I was in the audience for a keynote presentation by Volker Sorge on his work to create accessible chemical diagrams. That solution had an interface that was:<o:p></o:p></p>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo3">
based on a web page interaction (via a server),<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo3">
good for all screen readers, and<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo3">
good for all operating systems,<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo3">
but beyond my (very) basic knowledge of chemistry.<o:p></o:p></li></ul>
<p>I set about finding out how I could do work with Volker and what I’d need to get from
<em>R</em> to make it all happen. I ended up spending two days with Volker when we visited a blind computer scientist in Dublin during December. Our host (Donal Fitzpatrick) deserves a mention for his ability to get me to start speaking the right language to
 survive my encounter with computer scientists.<o:p></o:p></p>
<h2>The building blocks<o:p></o:p></h2>
<p><em><b>We will present the necessary tools that (1) produce the desired graph in the correct form of a scalable vector graphic (SVG) file, (2) create a supporting XML structure for exploration of the SVG, and (3) the javascript library to support these files
 being mounted on the web.</b></em><o:p></o:p></p>
<h3>Scalable vector graphics (SVG)<o:p></o:p></h3>
<p>SVG is a very powerful means of presenting graphs produced in <em>R</em>, but not all SVGs are equal!<o:p></o:p></p>
<p>There is a standard for SVG developed by the World -Wide Web Consortium (W3C). Unfortunately, not all SVGs created in
<em>R</em> meet this standard <code><span style="font-size:10.0pt">svg()</span></code>; while others meet the letter of the standard, but arguably do not meet the intent of the standard; while still more do meet the intent of the standard `<code><span style="font-size:10.0pt">ggsave()</span></code>,
 but do not create the SVG content we need. Enter Paul Murrell.<o:p></o:p></p>
<p>The gridSVG package and other supporting packages create the hierarchical structure that provides the semantics we need to be able to add content to the graph, or to extract the details of the rendered graph needed in our post-processing described below.<o:p></o:p></p>
<p>The result is a file that is longer than other SVG, but it is much richer.<o:p></o:p></p>
<p>To make the SVG of a graph created using the graphics package e.g. <code><span style="font-size:10.0pt">boxplot()</span></code>,
<code><span style="font-size:10.0pt">hist()</span></code>, <code><span style="font-size:10.0pt">plot()</span></code> means use of Paul’s gridGraphics package to convert a base graphic to an identical image built using the grid system.<o:p></o:p></p>
<p>Paul also had to perform some non-invasive surgery on the gridSVG package to make some of our examples work.<o:p></o:p></p>
<h3>XML<o:p></o:p></h3>
<p>BrailleR will build an XML file to sit alongside the SVG for the graph.<o:p></o:p></p>
<p>We build a hierarchical structure for the user to “walk” for their exploration. Each node can have one parent, children, and siblings, walked using the up, down and left/right arrow keys respectively. Pressing the up arrow key several times takes the user
 back to the head node.<o:p></o:p></p>
<p>Each node has two different text strings attached to it that are the feedback you will soon see and hear. Scope exists for altering the text for braille displays but this is not yet fully implemented. This text builds on the text given earlier.<o:p></o:p></p>
<p>This tree structure works for most statistical graphs, but future development will look at other data displays that do not lend themselves to the current hierarchy, such as Venn diagrams and directed networks.<o:p></o:p></p>
<h3>javascript?<o:p></o:p></h3>
<p>The .js file is shipped with the current release of the BrailleR package. It controls the information and consequences of key presses when viewing the graph in a web browser.<o:p></o:p></p>
<p>It is not open source, but as part of any webpage it is open access.<o:p></o:p></p>
<h3>gluing it all together<o:p></o:p></h3>
<p>The three components (SVG, XML, and js) are then combined into an HTML file for viewing. Viewing is done interactively if the R session is interactive.<o:p></o:p></p>
<h2>Playtime<o:p></o:p></h2>
<p><em><b>Demonstration of how a blind user can explore the graph by “walking” a tree-like structure will be given. A key enhancement is the ability to explore the content at different levels of understanding; the user chooses to hear either the bare basic
 factual description or a more descriptive layer of feedback that can offer the user insight.</b></em><o:p></o:p></p>
<p>The additional work is fairly small:<o:p></o:p></p>
<pre><span class="keyword">attach</span><span class="paren">(</span><span class="identifier">airquality</span><span class="paren">)</span><code><o:p></o:p></code></pre>
<pre><span class="identifier">MakeAccessibleSVG</span><span class="paren">(</span><span class="identifier">MyHist</span><code> </code><span class="operator"><-</span><code> </code><span class="identifier">hist</span><span class="paren">(</span><span class="identifier">Ozone</span><code>, </code><span class="identifier">xlab</span><span class="operator">=</span><span class="string">"Ozone (ppb)"</span><span class="paren">)</span><code>, </code><span class="identifier">file</span><span class="operator">=</span><span class="string">"OzoneHist"</span><span class="paren">)</span><code><o:p></o:p></code></pre>
<pre><span class="keyword">detach</span><span class="paren">(</span><span class="identifier">airquality</span><span class="paren">)</span><o:p></o:p></pre>
<p><a href="file:///C:\Users\ajgodfre\Documents\Research\BrailleR\papers\UseR2017\OzoneHist.html">and let’s see what happens!</a><o:p></o:p></p>
<h2>Problems<o:p></o:p></h2>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo4">
social and educational exclusion/limitation — the <strong><span style="font-family:"Calibri","sans-serif"">lived experience</span></strong> of
<em><span style="font-family:"Calibri","sans-serif"">some</span></em> disabled people. Unfortunately, many blind people have not been given the same education as their sighted peers. One of my initial testers told me that she really liked the idea of what I
 was doing, but “what is a histogram anyway?”<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo4">
browser support for SVG; IE does not support SVG, Firefox does.<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo4">
browser experiences for screen reading software. Many combinations with varying quality of experience.<o:p></o:p></li></ul>
<h2>The work ahead<o:p></o:p></h2>
<p>We need to:<o:p></o:p></p>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo5">
get more user feedback. Workshops in The Netherlands (this weekend) and Florida (next week) with blind people are coming up.<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo5">
add content to each graph such as font and placement of text.<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo5">
work on more graph types. See my GitHub ajrgodfrey/BrailleR for a list of initiatives needing your help.<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo5">
see what can be done with graphs created using ggplot. A project student will work with Paul on this in the coming semester.<o:p></o:p></li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><ends><o:p></o:p></p>
<p class="MsoNormal">Jonathan<o:p></o:p></p>
</div>
</body>
</html>