<jupyter_start><jupyter_text>Using dual canvases in JupyterThe following explains how to install the dual canvas frameworkand how to use the framework to build interactive scientific visualizations.This presentation consists of a collection of Jupyter notebookswhich introduce dual canvases and how to build interactive visualizationswith dual canvases.  The presentation will focus on using Python inJupyter notebooks to build visualizations (even though it is also possible to use Javascriptin other contexts).To use the links provided herefind this notebook on Github here: `https://github.com/AaronWatters/jp_doodle/blob/master/notebooks/workshop/0%20-%20Outline.ipynb` (go to `https://github.com/AaronWatters/jp_doodle` and navigate to `notebooks` --> `workshop` --> `0 - Outline.ipynb`  First some demosHere are some examples of things you can build using dual canvas widgets.- [An array explorer.](../misc/z%20transform%20array.ipynb)- [A quasi-3d two category bar chart proof of concept.](../rectangles.ipynb)- [Animated vector field.](../misc/vector%20field%20test.ipynb)- [Comparing AUPR and AUROC for assessing ranking methods.](../misc/precision%20recall%20and%20roc%20curve%20areas.ipynb)- [Quantified trees for examining compositional data such as biomes or file systems.](../misc/quantity%20forest%20test.ipynb)[...more](http://localhost:8888/notebooks/misc/talks/Flatware_Jupyter_Widgets/0%20Jupyter%20Widgets%20Use%20and%20Development.ipynb)  How do you run this stuff? [Use Binder for experimentation](https://mybinder.org/v2/gh/AaronWatters/jp_doodle/master)You can run the contents of the `jp_doodle` repository without installinganything using a web browser via the Binder service.  But if you want todevelop your own software you will need to install stuff locally... For Development: [Install Anaconda](https://www.anaconda.com/download)That will give you Python 3, git, and the Jupyter environment.  If you can't use Anacondafor some reason then use some other method to get set up with Python, git, and Jupyter. Enable widgets in Jupyter```jupyter labextension install @jupyter-widgets/jupyterlab-manager``` Install proxy widgets in Python```pip install jp_proxy_widget``` Enable proxy widgets in Jupyter```jupyter labextension install jp_proxy_widget``` Then install `jp_doodle` from github```pip install git+https://github.com/aaronwatters/jp_doodle``` Verify that everything is workingExecute the [Validation notebook](./Set%20up%20verification.ipynb).<jupyter_code>from jp_doodle import dual_canvas
demo = dual_canvas.DualCanvasWidget(width=320, height=220)

demo.circle(x=0, y=0, r=100, color="#e99")
txt = demo.text(x=0, y=0, text="Hello World", degrees=45, name=True,
           font= "40pt Arial", color="#ee3", background="#9e9", align="center", valign="center")

def on_click(*ignored):
    txt.transition(text="That tickles", degrees=720, color="#f90", background="#009", seconds_duration=5)
    
txt.on("click", on_click)
demo.fit()
demo<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10652463382157124, 'fraction_numerical': 0.02696404793608522, 'mean_word_length': 5.988372093023256, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 7, 'https://': 5, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 3, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '225384', 'license': 'BSD-2-Clause', 'n_tokens_mistral': 992, 'n_tokens_neox': 906, 'n_words': 288, 'path': 'notebooks/workshop/0 - Outline.ipynb', 'repo_name': 'lingruiluo/jp_doodle', 'size': '3004'}