<div dir="ltr"><div>Tune,<br><br>If you are already working in the jupyter notebook and doing javascript, then you should look into utilizing jupyter widgets, which I think is javascript based and should integrate well with matplotlib. Jupyter widgets aren't covered in my book, though, and they are a bit of a moving target, API-wise.<br><br></div>Ben Root<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 28, 2017 at 12:01 PM,  <span dir="ltr"><<a href="mailto:tune.kamae@gmail.com" target="_blank">tune.kamae@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div link="blue" vlink="purple" lang="JA"><div class="m_4672690985777571099WordSection1"><p class="MsoNormal"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US">Ben and other developers<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US">I confirmed that the interactive Matplotlib has most basic functions I need. I wrote a simple javascript to speak English or Japanese and also to recognize voice like x-axis, y-axis, line-1 etc. I haven’t written code to make beep sounds changing volume and tone.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US">With my limited knowledge, I couldn’t figure out mixing javascript with python in a same Jupyter cell. So I have been thinking to use the execjs package and define functions for TTS and voice recognition.  Then I can call these functions from python.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US">Once I understand these basic strategy I would like to find a coding pro and ask to make a prototype package. <u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US">Meantime I am exploring some way to voice Jupyter Notebook. The easiest way for me is to convert the notebook to an html in which links are made to individual cells. If there is a way to set Jupyter ignore <a href …>, my scheme may work.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US">Thank you for assistance.<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US">Tune Kamae<u></u><u></u></span></p><p class="MsoNormal"><a name="m_4672690985777571099__MailEndCompose"><span style="font-size:11.0pt;font-family:游ゴシック" lang="EN-US"><u></u> <u></u></span></a></p><span></span><p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="EN-US">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif" lang="EN-US"> Benjamin Root [mailto:<a href="mailto:ben.v.root@gmail.com" target="_blank">ben.v.root@gmail.com</a>] <br><b>Sent:</b> Thursday, September 28, 2017 1:39 AM<br><b>To:</b> Thomas Caswell <<a href="mailto:tcaswell@gmail.com" target="_blank">tcaswell@gmail.com</a>><br><b>Cc:</b> Jody Klymak <<a href="mailto:jklymak@uvic.ca" target="_blank">jklymak@uvic.ca</a>>; Tune Kamae <<a href="mailto:tune.kamae@gmail.com" target="_blank">tune.kamae@gmail.com</a>>; <a href="mailto:matplotlib-devel@python.org" target="_blank">matplotlib-devel@python.org</a><br><b>Subject:</b> Re: [Matplotlib-devel] Producing plots with objects<u></u><u></u></span></p><div><div class="h5"><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><div><div><div><div><div><div><p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">Tune,<u></u><u></u></span></p></div><p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">That sounds like a fantastic project, and I absolutely *love* the idea! As a low-vision person myself, I understand the need for such applications. The last time I did anything like this for other visually-impaired students, I used foam pads and a mixture of sand and glue to teach students the shape of the letters of the alphabet by tracing their fingers along the rough parts of the foam pad. Luckily, the alphabet doesn't change, so I can just have a single set of them. But for mathematical formulas, you would certainly need something dynamic to help with exploration of the many kinds of mathematical formulas.<u></u><u></u></span></p></div><p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">The basic idea here would be a program that would have a some plotted curve (fetched from the object returned by the call to `plt.plot()`), and a callback function attached to the 'button_press' event (assuming that is what a touchscreen reports screen touches as). In the callback function, you would have the x/y coordinates of the press event, and you would have the curve as a stored object (either as a global or some such). You would then calculate the distance between the x/y of the event, and the curve, and then activate a tone (I would assume python has some sort of sound-playing package somewhere). You can then deactivate the tone on the 'button_release' event (a second callback). There is also a 'mouse_move' event, if I remember correctly, so you can update the tone as the finger drags along the screen.<u></u><u></u></span></p></div><p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">Let me know if you have more questions!<u></u><u></u></span></p></div><p class="MsoNormal"><span lang="EN-US">Cheers!<u></u><u></u></span></p></div><p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">Ben Root<u></u><u></u></span></p><div><div><div><div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p></div></div></div></div></div><div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><div><p class="MsoNormal"><span lang="EN-US">On Wed, Sep 27, 2017 at 1:11 AM, Thomas Caswell <<a href="mailto:tcaswell@gmail.com" target="_blank">tcaswell@gmail.com</a>> wrote:<u></u><u></u></span></p><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0mm 0mm 0mm 6.0pt;margin-left:4.8pt;margin-right:0mm"><div><p class="MsoNormal"><span lang="EN-US">Ben Root wrote a book on interactive figures <a href="https://www.amazon.com/Interactive-Applications-using-Matplotlib-Benjamin/dp/1783988843" target="_blank">https://www.amazon.com/<wbr>Interactive-Applications-<wbr>using-Matplotlib-Benjamin/dp/<wbr>1783988843</a><u></u><u></u></span></p><div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span lang="EN-US">Also see the 03 tutorial on picking in <a href="https://github.com/tacaswell/interactive_mpl_tutorial" target="_blank">https://github.com/<wbr>tacaswell/interactive_mpl_<wbr>tutorial</a><u></u><u></u></span></p></div><div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span lang="EN-US">Tom<u></u><u></u></span></p></div></div><div><div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><div><div><p class="MsoNormal"><span lang="EN-US">On Tue, Sep 26, 2017 at 2:16 PM Jody Klymak <<a href="mailto:jklymak@uvic.ca" target="_blank">jklymak@uvic.ca</a>> wrote:<u></u><u></u></span></p></div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0mm 0mm 0mm 6.0pt;margin-left:4.8pt;margin-right:0mm"><div><div><div><p><span style="font-family:"Arial",sans-serif" lang="EN-US">Sure you can do this, plus or minus the Windows 10 interaction which I know nothing about. Once you figure to how to plot what you want, have a look at:<u></u><u></u></span></p><p><span style="font-family:"Arial",sans-serif" lang="EN-US"><a href="https://matplotlib.org/users/event_handling.html" target="_blank">https://matplotlib.org/users/<wbr>event_handling.html</a><u></u><u></u></span></p><p><span style="font-family:"Arial",sans-serif" lang="EN-US">to see how to make the plot respond to </span><code><span lang="EN-US">button_press_event</span></code><span style="font-family:"Arial",sans-serif" lang="EN-US"> or </span><code><span lang="EN-US">motion_notify_event</span></code><span style="font-family:"Arial",sans-serif" lang="EN-US">.<u></u><u></u></span></p><p><span style="font-family:"Arial",sans-serif" lang="EN-US">Cheers, Jody<u></u><u></u></span></p></div></div></div><div><div><div><p><span style="font-family:"Arial",sans-serif" lang="EN-US">On 25 Sep 2017, at 2:40, Tune Kamae wrote:<u></u><u></u></span></p></div></div></div><div><div><blockquote style="border:none;border-left:solid #5855d5 1.5pt;padding:0mm 0mm 0mm 4.0pt;margin-left:0mm;margin-right:0mm;margin-bottom:3.75pt"><div id="m_4672690985777571099m_-4326134252488897046m_-65780502287528387805A5FFE44-0619-442B-A024-028DC8684D2D"><div><div><p style="margin:0mm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US">Hi,<u></u><u></u></span></p><p style="margin:0mm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US"> <u></u><u></u></span></p><p style="margin:0mm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US">My knowledge on matplotlib is limited and may be using wrong terminology.<u></u><u></u></span></p><p style="margin:0mm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US">However my goal is quite clear. What I don’t know is where to post my question.<u></u><u></u></span></p><p style="margin:0mm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US">If this is not the right mailing list, please forgive me and suggest the right mailing list.<u></u><u></u></span></p><p style="margin:0mm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US"> <u></u><u></u></span></p><p style="margin:0mm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US">My goal:<u></u><u></u></span></p><ol style="margin-top:0mm" start="1" type="1"><li class="MsoNormal" style="color:#5855d5;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif" lang="EN-US">Make a plot with all elements accessible as objects like the one Excel produces.<u></u><u></u></span></li><li class="MsoNormal" style="color:#5855d5;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif" lang="EN-US">Then by touching anywhere on screen (assuming Win10 with a touch screen), one will know how close is the touch location to a curve or the x-axis.<u></u><u></u></span></li><li class="MsoNormal" style="color:#5855d5;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif" lang="EN-US">If such a plot can be put out, I can program for the blind students follow a line by producing sound.<u></u><u></u></span></li><li class="MsoNormal" style="color:#5855d5;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif" lang="EN-US">They can follow any one of multiple curves in a plot and can feel what a sinusoidal curve is.<u></u><u></u></span></li></ol><p style="margin-right:0mm;margin-bottom:0mm;margin-left:18.0pt;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US"> <u></u><u></u></span></p><p style="margin-right:0mm;margin-bottom:0mm;margin-left:18.0pt;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US">I would greatly appreciate if someone can guide me along this direction.<u></u><u></u></span></p><p style="margin-right:0mm;margin-bottom:0mm;margin-left:18.0pt;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US"> <u></u><u></u></span></p><p style="margin-right:0mm;margin-bottom:0mm;margin-left:18.0pt;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US">Tune Kamae<u></u><u></u></span></p><p style="margin:0mm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US"> <u></u><u></u></span></p><p style="margin:0mm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US">Windows 10 </span><span style="font-size:10.5pt;color:#5855d5">版の</span><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US"><a href="https://go.microsoft.com/fwlink/?LinkId=550986" target="_blank"><span style="font-family:"\00ff2d\00ff33  \00ff30\0030b4\0030b7\0030c3\0030af"" lang="EN-US"><span lang="EN-US">メール</span></span></a></span><span style="font-size:10.5pt;color:#5855d5">から送信</span><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US"><u></u><u></u></span></p><p style="margin:0mm;margin-bottom:.0001pt;text-align:justify;text-justify:inter-ideograph"><span style="font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US"> </span><span style="font-size:10.5pt;font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US"><u></u><u></u></span></p></div></div></div></blockquote><div><blockquote style="border:none;border-left:solid #5855d5 1.5pt;padding:0mm 0mm 0mm 4.0pt;margin-left:0mm;margin-right:0mm;margin-bottom:3.75pt"><p><span style="font-family:"Arial",sans-serif;color:#5855d5" lang="EN-US">______________________________<wbr>_________________<br>Matplotlib-devel mailing list<br><a href="mailto:Matplotlib-devel@python.org" target="_blank">Matplotlib-devel@python.org</a><br><a href="https://mail.python.org/mailman/listinfo/matplotlib-devel" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/matplotlib-<wbr>devel</a><u></u><u></u></span></p></blockquote></div></div></div><p class="MsoNormal"><span lang="EN-US">______________________________<wbr>_________________<br>Matplotlib-devel mailing list<br><a href="mailto:Matplotlib-devel@python.org" target="_blank">Matplotlib-devel@python.org</a><br><a href="https://mail.python.org/mailman/listinfo/matplotlib-devel" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/matplotlib-<wbr>devel</a><u></u><u></u></span></p></blockquote></div></div></div><p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US"><br>______________________________<wbr>_________________<br>Matplotlib-devel mailing list<br><a href="mailto:Matplotlib-devel@python.org" target="_blank">Matplotlib-devel@python.org</a><br><a href="https://mail.python.org/mailman/listinfo/matplotlib-devel" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/matplotlib-<wbr>devel</a><u></u><u></u></span></p></blockquote></div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p></div></div></div></div></div></blockquote></div><br></div>