{ "cells": [ { "cell_type": "code", "execution_count": 227, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:08:23.009048Z", "start_time": "2018-06-09T09:08:22.998732Z" }, "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/html": [ " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%HTML\n", " " ] }, { "cell_type": "code", "execution_count": 228, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:08:24.462513Z", "start_time": "2018-06-09T09:08:24.350750Z" }, "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/html": [ "" ], "text/vnd.plotly.v1+html": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from IPython.display import Image\n", "\n", "import warnings\n", "warnings.filterwarnings(\"ignore\", category=DeprecationWarning) \n", "warnings.filterwarnings(\"ignore\", category=FutureWarning)\n", "\n", "from matplotlib import pyplot as plt\n", "plt.rcParams.update({'figure.max_open_warning': 0})\n", "graph_figsize = (10,6) # I'm forgetful and lazy\n", "plt.rcParams.update({'figure.figsize': graph_figsize})\n", "\n", "%matplotlib nbagg\n", " # Jupyter Magics!\n", "import geopandas as gp\n", "import urllib.request\n", "import zipfile\n", "from pathlib import Path\n", "import pandas as pd\n", "\n", "import plotly.plotly as py\n", "from plotly.offline import init_notebook_mode, plot, iplot\n", "import plotly.graph_objs as go\n", "from datetime import datetime\n", "init_notebook_mode(connected=False)\n", "import cufflinks" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-05T12:11:00.523277Z", "start_time": "2018-06-05T12:11:00.515262Z" }, "slideshow": { "slide_type": "slide" } }, "source": [ "# Idiots Guide to (Open) Data Science\n", "\n", "Andrew Bolster \n", "* [bolster.online](https://bolster.online)\n", "* Tweets [@bolster](https://twitter.bolster.online)\n", "* GitHubs at [andrewbolster](https://github.com/andrewbolster)\n", "* Works at [AlertLogic](https://alertlogic.com) **We're hiring Threat/Exploit Researchers**\n", "* Plays at [Farset Labs](https://www.farsetlabs.org.uk)\n", "* **[THIS NOTEBOOK IS AT present.bolster.online](http://present.bolster.online)**\n", "* [Also available in source at presentgh.bolster.online](http://presentgh.bolster.online)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "__DISCLAIMERS__\n", "* The scar is from a Kremlin related stage dive misadventure, it's fine.\n", "* This was supposed to build up to achievement stats and correlations... but time...\n", "* Open data sucks... at the moment\n", "* Please steal/fix all my code - All released under [WTFPL](https://en.wikipedia.org/wiki/WTFPL)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "# What is Data Science?\n", "* \"Deriving actionable business and operational insights from multi-modal data sources\"" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* AKA: \"Turning Numbers into Other Numbers, and occasionally pretty graphs\"\n", "\n", "![](img/decline.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Data Science in Northern Ireland\n", "![](img/dozens.gif)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-06T11:47:16.608311Z", "start_time": "2018-06-06T11:47:16.594477Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Vibrant Corporate Ecosystem\n", "\n", "* [Analytics Engines](http://www.analyticsengines.com/)\n", "* [AquaQ Analytics](https://www.aquaq.co.uk/)\n", "* [**AlertLogic**😜](https://alertlogic.com)\n", "* [Kainos](https://www.kainos.com/)\n", "* [Flexera|BDNA](https://www.bdna.com/category/flexera/)\n", "* [First Derivitives](https://www.firstderivatives.com/)\n", "* [Neueda](http://www.neueda.com/)\n", "* [Sensum](https://sensum.co/)\n", "* [BrainwaveBank](https://www.brainwavebank.com/)\n", "* Many Many _Many_ More" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Open Source / Meetup Ecosystem too\n", "***Hint: If you really want to learn data science, go to/get involved in some of these***\n", "\n", "* [IoT Belfast](https://www.meetup.com/IOTBelfast/)\n", "* [IoT Alliance](https://www.meetup.com/Belfast-New-Technology-Meetup/)\n", "* [PyBelfast](https://www.meetup.com/PyBelfast/)\n", "* [Code Co-op NI](https://www.meetup.com/CodeCoop-NI/)\n", "* [Data Art Belfast](https://www.meetup.com/Data-Art-Belfast/)\n", "* [Big Data Belfast Breakout](https://www.meetup.com/Big-Data-Belfast-Breakout/)\n", "* [Women Who Code Belfast](https://www.meetup.com/Women-Who-Code-Belfast/)\n", "* [Docker Belfast](https://www.meetup.com/Docker-Belfast/)\n", "* [DevOps Belfast](https://www.meetup.com/DevOps-Belfast/)\n", "* [DevSecOps Belfast](https://www.meetup.com/devsecops-belfast/)\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "***Hint the Second: These are the _best_ ways to get a job in the field***" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Engaged local Government/ComVol support\n", "\n", "* [OpenData NI](https://www.opendatani.gov.uk/)\n", "* [DetailData](http://data.nicva.org/)\n", "* [Code4Good](https://wedonthaveasiteyet.lol)\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### NI Data Science on the world stage\n", "\n", "* [Big Data Belfast Conference](http://www.bigdatabelfast.com/)\n", "* [ODCamp](http://odcamp.co.uk/)\n", "* [TIMON Hackathon](https://www.eventbrite.co.uk/e/timon-open-transport-hackathon-tickets-40149226417#)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# What is Open Data?\n", "\n", "> Open data and content can be freely used, modified, and shared by anyone for any purpose - [The Open Definition](https://opendefinition.org/)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "> Open data is the idea that some data should be freely available to everyone to use and republish as they wish, without restrictions from copyright, patents or other mechanisms of control. - [Wikipedia](https://en.wikipedia.org/wiki/Open_data)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "> Open data is data that’s available to everyone to access, use and share. Yep, even your nan.- [The Open Data Institute](https://theodi.org/article/what-is-open-data-and-why-should-we-care/)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Key Principles of Open Data\n", "\n", "* Open\n", "* Accessible\n", "* Available\n", "* Understandable\n", "* Traceable" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## What's the point?\n", "\n", "(Following slides stolen shamelessly but with attribution from [The ODI](https://theodi.org/article/what-is-open-data-and-why-should-we-care/), because they're awesome\n", "\n", "![](img/odi_perm.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "### Open data should be easy to access. Especially for your nan.\n", "\n", "> Open data is only useful if it’s shared in ways that people can actually understand. **It needs to be shared in a standardised format and easily traced back to where it came from.**\n", "\n", "![](img/homer.webp)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Open data isn’t the same as big data, but big data can be open data too\n", "\n", "> When people talk about ‘big data’ they mean a lot of data. Obviously. But ‘big data’, like government statistics on health care, is often closed to the public (or expensive to access, like the terrifyingly-named TWITTER FIREHOSE). **Opening up big data lets people use it to spot trends, fill gaps and improve services.**\n", "\n", "![](img/data.jpg)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Oh, and it’s also not the same as ‘shared data’\n", "\n", "> If you’re worried about big companies being fed all your private details, that’s got nothing to do with open data. Groups sharing information with each other is different from opening it up for all to access. **Your private data should only be open if you choose to share it.** (But if you want to know who’s accessing or sharing your data, open data can help.)\n", "\n", "![](img/rugrats.gif)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Open data is good for democracy\n", "\n", ">If citizens know about their governments they can hold leaders to account, make more informed decisions and demand better services. **Open data can also help governments stay on their toes and make better policies for society, the economy and the environment.**\n", "\n", "![](img/vote.webp)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Open data can help fight crime\n", "> It’s helped people in London to track [stolen bikes](https://www.nesta.org.uk/blog/check-that-bike-wins-crime-justice-open-data-challenge/) and police in [Vancouver](http://www.cbc.ca/bc/features/vancouver-property-crime-map/) to stay one step ahead of criminals.\n", "\n", "![](img/superman.webp)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Open data is good for your health\n", "\n", "> With tools like [FoodTradeMenu](https://www.socialtech.org.uk/projects/food-trade-menu/) using it to help restaurants make sure they don’t serve you food you’re allergic to without realising.\n", "\n", "![](img/sneeze.webp)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Open data can save lives\n", "\n", "> It helps groups to [coordinate aid delivery in humanitarian disasters](https://www.sciencedirect.com/science/article/pii/S0740624X13000737).\n", "\n", "![](img/aid.jpg)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-06T12:27:18.979249Z", "start_time": "2018-06-06T12:27:18.973500Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Open data helps you get around your city, and saves you money\n", "\n", "> Apps like [CityMapper](https://citymapper.com) use open data from groups like Transport for London to help you find the quickest and cheapest way to get from A to B. Even maps can be open, like OpenStreetMap, which powers map data for websites and humanitarian crises relief around the world.\n", "\n", "![](img/dr.webp)\n", "\n", "
__No, NI isn't on CityMapper, woooooooo__
" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-06T12:29:49.439848Z", "start_time": "2018-06-06T12:29:49.421372Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Open data is actually really pretty\n", "\n", "> [Look](https://nats.aero/blog/2014/03/europe-24-air-traffic-data-visualisation/) what happened when NATS used UK radar and European flight plan data to visualise air traffic on a typical summer’s day in 2013.\n", "\n", "![https://nats.aero/blog/2014/03/europe-24-air-traffic-data-visualisation/](img/nats.jpg)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Scales of Data Openness\n", "\n", "This is a complex area, if you care, google for [\"5 star data\"](http://5stardata.info/en/)\n", "\n", "TL;DR \n", "![](img/stars.png)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-06T12:35:11.268170Z", "start_time": "2018-06-06T12:35:11.128083Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### And how shit is NI? Cus we're shit at everything right?\n", "\n", "![https://index.okfn.org/place/nir/](img/nidata.png)\n" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-06T12:36:49.933775Z", "start_time": "2018-06-06T12:36:49.804753Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### NOTBAD.JPG\n", "\n", "![](img/notbad.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "# What is Data Driven Journalism?\n", "\n", "> ‘Data journalism’ only differs from ‘words journalism’ in that we use a different kit. We all sniff out, report, and relate stories for a living. It’s like ‘photo journalism’; just swap the camera for a laptop. - Brian Boyer, Chicago Tribune" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "> [...] providing information and analysis to help inform us all about important issues of the day. - Aron Pilhofer, New York Times" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "> Using Open Data and Data Science principles to ask, analyse and answer complex or contentious questions or areas of inquiry using available evidence. - Bolster, Here" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## What do you what to know?\n", "\n", "This is usually the wrong question;" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## What do you want to know *more about*?\n", "![](img/google-niedu.png)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-05T16:06:08.608805Z", "start_time": "2018-06-05T16:06:08.416821Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## What relevant data is available?\n", "![](img/opendata-fp.png)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-05T16:07:02.888037Z", "start_time": "2018-06-05T16:07:02.761585Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "![](img/opendata-places.png)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-05T16:40:51.011078Z", "start_time": "2018-06-05T16:40:50.871006Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "![](img/opendata-pp.png)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-05T16:45:06.598868Z", "start_time": "2018-06-05T16:45:06.572510Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## So what do we *think* we have at the moment?\n", "\n", "* List of schools with at least council/constitutency locations and postcodes\n", "* Enrolements per school for 2016/17\n", "* Demographic comparisons (R/FSM/SEN 0+ or 5)\n", "* A 'churn' rate (newcomers/movers/immigration)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-05T16:48:56.415271Z", "start_time": "2018-06-05T16:48:56.403868Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "## What else could we do with?\n", "\n", "* More years, ideally same format\n", " * _What schools have fewer places per/k council pop?_\n", "* Correlations to deprivation\n", "* Correlations to monoculture/political alignment\n", "* Correlations to population *change*\n", "* Correlations to achievement/mobility\n", "* Correlations to claiment count etc." ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-05T16:49:19.766394Z", "start_time": "2018-06-05T16:49:19.760707Z" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "I *think* we can get most of these... but first things first" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-05T16:50:13.356742Z", "start_time": "2018-06-05T16:50:13.352035Z" }, "slideshow": { "slide_type": "slide" } }, "source": [ "# Extraction, Transformation and Loading\n", "\n", "* Get the data\n", "* Clean the data\n", "* Store the data" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-05T16:50:47.357537Z", "start_time": "2018-06-05T16:50:47.310640Z" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "Gov Open Data is notoriously difficult to 'wander around'" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Extraction\n", "When in doubt, bring in `pandas`\n", "![](img/panda.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Easy mode: `read_csv`" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:09:57.101317Z", "start_time": "2018-06-08T18:09:55.642117Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
De refschool nameaddress 1townpostcodeschool typemanagement typeconstituencycouncilrural
01210014Ashfield Girls' High School397 HOLYWOOD ROADBELFASTBT42LYSecondaryControlledBELFAST EASTBELFASTUrban
11210015Ashfield Boys' High School395 HOLYWOOD ROADBELFASTBT42LYSecondaryControlledBELFAST EASTBELFASTUrban
21210021Belfast Model School For Girls35 DUNOWEN GARDENSBELFASTBT146NQSecondaryControlledBELFAST NORTHBELFASTUrban
31210022Belfast Boys' Model SchoolBALLYSILLAN ROADBELFASTBT146RBSecondaryControlledBELFAST NORTHBELFASTUrban
41230026St Patrick's College, Belfast619-629 ANTRIM ROADBELFASTBT154DZSecondaryCatholic MaintainedBELFAST NORTHBELFASTUrban
51230053St Louise's Comprehensive College468 FALLS ROADBELFASTBT126ENSecondaryCatholic MaintainedBELFAST WESTBELFASTUrban
61230089Little Flower Girls' School71A SOMERTON ROADBELFASTBT154DESecondaryCatholic MaintainedBELFAST NORTHBELFASTUrban
71230104Mercy CollegeBALLYSILLAN ROADBELFASTBT147QRSecondaryCatholic MaintainedBELFAST NORTHBELFASTUrban
81230130St Rose?s Dominican College65 BEECHMOUNT AVENUEBELFASTBT127NASecondaryCatholic MaintainedBELFAST WESTBELFASTUrban
91230146Christian Brothers School, BelfastGLEN ROADBELFASTBT118BWSecondaryCatholic MaintainedBELFAST WESTBELFASTUrban
101230155St Genevieve's High SchoolTRENCH HOUSEBELFASTBT119JPSecondaryCatholic MaintainedBELFAST WESTBELFASTUrban
111230182De La Salle College36 EDENMORE DRIVEBELFASTBT118LTSecondaryCatholic MaintainedBELFAST WESTBELFASTUrban
121230262Corpus Christi CollegeARD NA VA ROADBELFASTBT126FFSecondaryCatholic MaintainedBELFAST WESTBELFASTUrban
131230275St Joseph's College, Belfast518-572 RAVENHILL ROADBELFASTBT60BYSecondaryCatholic MaintainedBELFAST SOUTHBELFASTUrban
141240291Colaiste Feirste7 BEECHVIEW PARKBELFASTBT127PYSecondaryOther MaintainedBELFAST WESTBELFASTUrban
151260269Hazelwood College70 WHITEWELL ROADNEWTOWNABBEYBT367ESSecondaryGMIBELFAST NORTHBELFASTUrban
161260294Malone Integrated College45 FINAGHY ROAD NORTHBELFASTBT100JBSecondaryGMIBELFAST SOUTHBELFASTUrban
171410079Grosvenor Grammar School50 MARINA PARKBELFASTBT56BAGrammarControlledBELFAST EASTBELFASTUrban
181410270Wellington College18 CAROLAN ROADBELFASTBT73HEGrammarControlledBELFAST SOUTHBELFASTUrban
191410315Bloomfield Collegiate8 ASTORIA GARDENSBELFASTBT56HWGrammarControlledBELFAST EASTBELFASTUrban
201420020Campbell CollegeBELMONT ROADBELFASTBT42NDGrammarVoluntaryBELFAST EASTBELFASTUrban
211420021St Mary's Christian Brothers' Grammar, Belfast147A GLEN ROADBELFASTBT118NRGrammarVoluntaryBELFAST WESTBELFASTUrban
221420022Methodist College1 MALONE ROADBELFASTBT96BYGrammarVoluntaryBELFAST SOUTHBELFASTUrban
231420027The Royal Belfast Academical InstitutionCOLLEGE SQUARE EASTBELFASTBT16DLGrammarVoluntaryBELFAST SOUTHBELFASTUrban
241420028Belfast Royal Academy5-17 CLIFTONVILLE ROADBELFASTBT146JLGrammarVoluntaryBELFAST NORTHBELFASTUrban
251420029St Dominic's High School, Belfast135-137 FALLS ROADBELFASTBT126AEGrammarVoluntaryBELFAST WESTBELFASTUrban
261420030St Malachy's College, Belfast36 ANTRIM ROADBELFASTBT152AEGrammarVoluntaryBELFAST NORTHBELFASTUrban
271420082Dominican College, Belfast38 FORTWILLIAM PARKBELFASTBT154AQGrammarVoluntaryBELFAST NORTHBELFASTUrban
281420089Strathearn School, Belfast188 BELMONT ROADBELFASTBT42AUGrammarVoluntaryBELFAST EASTBELFASTUrban
291420095Rathmore Grammar SchoolKINGSWAYBELFASTBT100LFGrammarVoluntaryBELFAST SOUTHBELFASTUrban
.................................
1715230076St Patrick's College, Banbridge38 SCARVA ROADBANBRIDGEBT323ASSecondaryCatholic MaintainedUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONUrban
1725230108St Mary's High School, NewryUPPER CHAPEL STREETNEWRYBT342DTSecondaryCatholic MaintainedNEWRY AND ARMAGHNEWRY MOURNE AND DOWNUrban
1735230135St Mark's High SchoolUPPER DROMORE ROADNEWRYBT343PNSecondaryCatholic MaintainedSOUTH DOWNNEWRY MOURNE AND DOWNUrban
1745230152St Ciaran's High School15 TULLYBRYAN ROADDUNGANNONBT702LYSecondaryCatholic MaintainedFERMANAGH AND SOUTH TYRONEMID ULSTERRural
1755230157St Paul's High School, Bessbrook108 CAMLOUGH ROADNEWRYBT357EESecondaryCatholic MaintainedNEWRY AND ARMAGHNEWRY MOURNE AND DOWNRural
1765230167St Joseph's High School, Crossmaglen77 DUNDALK ROADNEWRYBT359HLSecondaryCatholic MaintainedNEWRY AND ARMAGHNEWRY MOURNE AND DOWNRural
1775230187St Patrick's High School, KeadyMIDDLETOWN ROADKEADYBT603THSecondaryCatholic MaintainedNEWRY AND ARMAGHARMAGH CITY, BANBRIDGE AND CRAIGAVONRural
1785230192St Joseph's College, Coalisland29 SCHOOL LANEDUNGANNONBT714NWSecondaryCatholic MaintainedMID ULSTERMID ULSTERUrban
1795230213Lismore Comprehensive SchoolDRUMGASKCRAIGAVONBT655DUSecondaryCatholic MaintainedUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONUrban
1805230218St Catherine's College2A CONVENT ROADARMAGHBT604BGSecondaryCatholic MaintainedNEWRY AND ARMAGHARMAGH CITY, BANBRIDGE AND CRAIGAVONUrban
1815230256Drumcree College4 MOY ROADPORTADOWNBT621QLSecondaryCatholic MaintainedUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONUrban
1825230278Holy Trinity CollegeCHAPEL STREETCOOKSTOWNBT808QBSecondaryCatholic MaintainedMID ULSTERMID ULSTERUrban
1835230293St Patrick's College, Dungannon41 KILLYMEAL ROADDUNGANNONBT716LJSecondaryCatholic MaintainedFERMANAGH AND SOUTH TYRONEMID ULSTERUrban
1845250216Brownlow Int CollegeTULLYGALLY ROADCRAIGAVONBT655BSSecondaryControlled IntegratedUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONUrban
1855260285New-Bridge Integrated College25 DONARD VIEW ROADBANBRIDGEBT323LNSecondaryGMIUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONRural
1865260286Integrated College Dungannon21 GORTMERRON LINK ROADDUNGANNONBT716LSSecondaryGMIFERMANAGH AND SOUTH TYRONEMID ULSTERUrban
1875410013Banbridge AcademyLURGAN ROADBANBRIDGEBT324AQGrammarControlledUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONUrban
1885410057Lurgan College9 COLLEGE WALKCRAIGAVONBT666JWGrammarControlledUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONUrban
1895410067Portadown College4 KILLYCOMAINE ROADCRAIGAVONBT635BUGrammarControlledUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONUrban
1905420045St Louis Grammar School, Kilkeel151 NEWRY ROADKILKEELBT344EUGrammarVoluntarySOUTH DOWNNEWRY MOURNE AND DOWNUrban
1915420059Abbey Christian Brothers Grammar School77A ASHGROVE ROADNEWRYBT342QNGrammarVoluntarySOUTH DOWNNEWRY MOURNE AND DOWNUrban
1925420060Our Lady's Grammar SchoolCHEQUER HILLNEWRYBT356DYGrammarVoluntaryNEWRY AND ARMAGHNEWRY MOURNE AND DOWNUrban
1935420062St Colman's College, Newry46 ARMAGH ROADNEWRYBT356PPGrammarVoluntaryNEWRY AND ARMAGHNEWRY MOURNE AND DOWNUrban
1945420073St Joseph's Convent Grammar School, Donaghmore58 CASTLECAULFIELD ROADDUNGANNONBT703HEGrammarVoluntaryMID ULSTERMID ULSTERRural
1955420076Sacred Heart Grammar School, Newry10 ASHGROVE AVENUENEWRYBT341PRGrammarVoluntarySOUTH DOWNNEWRY MOURNE AND DOWNUrban
1965420260The Royal School, Dungannon2 RANFURLEY ROADDUNGANNONBT716APGrammarVoluntaryFERMANAGH AND SOUTH TYRONEMID ULSTERUrban
1975420263The Royal School, ArmaghCOLLEGE HILLARMAGHBT619DHGrammarVoluntaryNEWRY AND ARMAGHARMAGH CITY, BANBRIDGE AND CRAIGAVONUrban
1985420268St Patrick's Grammar School, ArmaghCATHEDRAL ROADARMAGHBT617QZGrammarVoluntaryNEWRY AND ARMAGHARMAGH CITY, BANBRIDGE AND CRAIGAVONUrban
1995420304St Patrick's Academy, Dungannon37 KILLYMEAL ROADDUNGANNONBT716DSGrammarVoluntaryFERMANAGH AND SOUTH TYRONEMID ULSTERUrban
2005420314St Ronan?s College12 CORNAKINEGAR ROADLURGANBT679JWGrammarVoluntaryUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONUrban
\n", "

201 rows × 10 columns

\n", "
" ], "text/plain": [ " De ref school name \\\n", "0 1210014 Ashfield Girls' High School \n", "1 1210015 Ashfield Boys' High School \n", "2 1210021 Belfast Model School For Girls \n", "3 1210022 Belfast Boys' Model School \n", "4 1230026 St Patrick's College, Belfast \n", "5 1230053 St Louise's Comprehensive College \n", "6 1230089 Little Flower Girls' School \n", "7 1230104 Mercy College \n", "8 1230130 St Rose?s Dominican College \n", "9 1230146 Christian Brothers School, Belfast \n", "10 1230155 St Genevieve's High School \n", "11 1230182 De La Salle College \n", "12 1230262 Corpus Christi College \n", "13 1230275 St Joseph's College, Belfast \n", "14 1240291 Colaiste Feirste \n", "15 1260269 Hazelwood College \n", "16 1260294 Malone Integrated College \n", "17 1410079 Grosvenor Grammar School \n", "18 1410270 Wellington College \n", "19 1410315 Bloomfield Collegiate \n", "20 1420020 Campbell College \n", "21 1420021 St Mary's Christian Brothers' Grammar, Belfast \n", "22 1420022 Methodist College \n", "23 1420027 The Royal Belfast Academical Institution \n", "24 1420028 Belfast Royal Academy \n", "25 1420029 St Dominic's High School, Belfast \n", "26 1420030 St Malachy's College, Belfast \n", "27 1420082 Dominican College, Belfast \n", "28 1420089 Strathearn School, Belfast \n", "29 1420095 Rathmore Grammar School \n", ".. ... ... \n", "171 5230076 St Patrick's College, Banbridge \n", "172 5230108 St Mary's High School, Newry \n", "173 5230135 St Mark's High School \n", "174 5230152 St Ciaran's High School \n", "175 5230157 St Paul's High School, Bessbrook \n", "176 5230167 St Joseph's High School, Crossmaglen \n", "177 5230187 St Patrick's High School, Keady \n", "178 5230192 St Joseph's College, Coalisland \n", "179 5230213 Lismore Comprehensive School \n", "180 5230218 St Catherine's College \n", "181 5230256 Drumcree College \n", "182 5230278 Holy Trinity College \n", "183 5230293 St Patrick's College, Dungannon \n", "184 5250216 Brownlow Int College \n", "185 5260285 New-Bridge Integrated College \n", "186 5260286 Integrated College Dungannon \n", "187 5410013 Banbridge Academy \n", "188 5410057 Lurgan College \n", "189 5410067 Portadown College \n", "190 5420045 St Louis Grammar School, Kilkeel \n", "191 5420059 Abbey Christian Brothers Grammar School \n", "192 5420060 Our Lady's Grammar School \n", "193 5420062 St Colman's College, Newry \n", "194 5420073 St Joseph's Convent Grammar School, Donaghmore \n", "195 5420076 Sacred Heart Grammar School, Newry \n", "196 5420260 The Royal School, Dungannon \n", "197 5420263 The Royal School, Armagh \n", "198 5420268 St Patrick's Grammar School, Armagh \n", "199 5420304 St Patrick's Academy, Dungannon \n", "200 5420314 St Ronan?s College \n", "\n", " address 1 town postcode school type \\\n", "0 397 HOLYWOOD ROAD BELFAST BT42LY Secondary \n", "1 395 HOLYWOOD ROAD BELFAST BT42LY Secondary \n", "2 35 DUNOWEN GARDENS BELFAST BT146NQ Secondary \n", "3 BALLYSILLAN ROAD BELFAST BT146RB Secondary \n", "4 619-629 ANTRIM ROAD BELFAST BT154DZ Secondary \n", "5 468 FALLS ROAD BELFAST BT126EN Secondary \n", "6 71A SOMERTON ROAD BELFAST BT154DE Secondary \n", "7 BALLYSILLAN ROAD BELFAST BT147QR Secondary \n", "8 65 BEECHMOUNT AVENUE BELFAST BT127NA Secondary \n", "9 GLEN ROAD BELFAST BT118BW Secondary \n", "10 TRENCH HOUSE BELFAST BT119JP Secondary \n", "11 36 EDENMORE DRIVE BELFAST BT118LT Secondary \n", "12 ARD NA VA ROAD BELFAST BT126FF Secondary \n", "13 518-572 RAVENHILL ROAD BELFAST BT60BY Secondary \n", "14 7 BEECHVIEW PARK BELFAST BT127PY Secondary \n", "15 70 WHITEWELL ROAD NEWTOWNABBEY BT367ES Secondary \n", "16 45 FINAGHY ROAD NORTH BELFAST BT100JB Secondary \n", "17 50 MARINA PARK BELFAST BT56BA Grammar \n", "18 18 CAROLAN ROAD BELFAST BT73HE Grammar \n", "19 8 ASTORIA GARDENS BELFAST BT56HW Grammar \n", "20 BELMONT ROAD BELFAST BT42ND Grammar \n", "21 147A GLEN ROAD BELFAST BT118NR Grammar \n", "22 1 MALONE ROAD BELFAST BT96BY Grammar \n", "23 COLLEGE SQUARE EAST BELFAST BT16DL Grammar \n", "24 5-17 CLIFTONVILLE ROAD BELFAST BT146JL Grammar \n", "25 135-137 FALLS ROAD BELFAST BT126AE Grammar \n", "26 36 ANTRIM ROAD BELFAST BT152AE Grammar \n", "27 38 FORTWILLIAM PARK BELFAST BT154AQ Grammar \n", "28 188 BELMONT ROAD BELFAST BT42AU Grammar \n", "29 KINGSWAY BELFAST BT100LF Grammar \n", ".. ... ... ... ... \n", "171 38 SCARVA ROAD BANBRIDGE BT323AS Secondary \n", "172 UPPER CHAPEL STREET NEWRY BT342DT Secondary \n", "173 UPPER DROMORE ROAD NEWRY BT343PN Secondary \n", "174 15 TULLYBRYAN ROAD DUNGANNON BT702LY Secondary \n", "175 108 CAMLOUGH ROAD NEWRY BT357EE Secondary \n", "176 77 DUNDALK ROAD NEWRY BT359HL Secondary \n", "177 MIDDLETOWN ROAD KEADY BT603TH Secondary \n", "178 29 SCHOOL LANE DUNGANNON BT714NW Secondary \n", "179 DRUMGASK CRAIGAVON BT655DU Secondary \n", "180 2A CONVENT ROAD ARMAGH BT604BG Secondary \n", "181 4 MOY ROAD PORTADOWN BT621QL Secondary \n", "182 CHAPEL STREET COOKSTOWN BT808QB Secondary \n", "183 41 KILLYMEAL ROAD DUNGANNON BT716LJ Secondary \n", "184 TULLYGALLY ROAD CRAIGAVON BT655BS Secondary \n", "185 25 DONARD VIEW ROAD BANBRIDGE BT323LN Secondary \n", "186 21 GORTMERRON LINK ROAD DUNGANNON BT716LS Secondary \n", "187 LURGAN ROAD BANBRIDGE BT324AQ Grammar \n", "188 9 COLLEGE WALK CRAIGAVON BT666JW Grammar \n", "189 4 KILLYCOMAINE ROAD CRAIGAVON BT635BU Grammar \n", "190 151 NEWRY ROAD KILKEEL BT344EU Grammar \n", "191 77A ASHGROVE ROAD NEWRY BT342QN Grammar \n", "192 CHEQUER HILL NEWRY BT356DY Grammar \n", "193 46 ARMAGH ROAD NEWRY BT356PP Grammar \n", "194 58 CASTLECAULFIELD ROAD DUNGANNON BT703HE Grammar \n", "195 10 ASHGROVE AVENUE NEWRY BT341PR Grammar \n", "196 2 RANFURLEY ROAD DUNGANNON BT716AP Grammar \n", "197 COLLEGE HILL ARMAGH BT619DH Grammar \n", "198 CATHEDRAL ROAD ARMAGH BT617QZ Grammar \n", "199 37 KILLYMEAL ROAD DUNGANNON BT716DS Grammar \n", "200 12 CORNAKINEGAR ROAD LURGAN BT679JW Grammar \n", "\n", " management type constituency \\\n", "0 Controlled BELFAST EAST \n", "1 Controlled BELFAST EAST \n", "2 Controlled BELFAST NORTH \n", "3 Controlled BELFAST NORTH \n", "4 Catholic Maintained BELFAST NORTH \n", "5 Catholic Maintained BELFAST WEST \n", "6 Catholic Maintained BELFAST NORTH \n", "7 Catholic Maintained BELFAST NORTH \n", "8 Catholic Maintained BELFAST WEST \n", "9 Catholic Maintained BELFAST WEST \n", "10 Catholic Maintained BELFAST WEST \n", "11 Catholic Maintained BELFAST WEST \n", "12 Catholic Maintained BELFAST WEST \n", "13 Catholic Maintained BELFAST SOUTH \n", "14 Other Maintained BELFAST WEST \n", "15 GMI BELFAST NORTH \n", "16 GMI BELFAST SOUTH \n", "17 Controlled BELFAST EAST \n", "18 Controlled BELFAST SOUTH \n", "19 Controlled BELFAST EAST \n", "20 Voluntary BELFAST EAST \n", "21 Voluntary BELFAST WEST \n", "22 Voluntary BELFAST SOUTH \n", "23 Voluntary BELFAST SOUTH \n", "24 Voluntary BELFAST NORTH \n", "25 Voluntary BELFAST WEST \n", "26 Voluntary BELFAST NORTH \n", "27 Voluntary BELFAST NORTH \n", "28 Voluntary BELFAST EAST \n", "29 Voluntary BELFAST SOUTH \n", ".. ... ... \n", "171 Catholic Maintained UPPER BANN \n", "172 Catholic Maintained NEWRY AND ARMAGH \n", "173 Catholic Maintained SOUTH DOWN \n", "174 Catholic Maintained FERMANAGH AND SOUTH TYRONE \n", "175 Catholic Maintained NEWRY AND ARMAGH \n", "176 Catholic Maintained NEWRY AND ARMAGH \n", "177 Catholic Maintained NEWRY AND ARMAGH \n", "178 Catholic Maintained MID ULSTER \n", "179 Catholic Maintained UPPER BANN \n", "180 Catholic Maintained NEWRY AND ARMAGH \n", "181 Catholic Maintained UPPER BANN \n", "182 Catholic Maintained MID ULSTER \n", "183 Catholic Maintained FERMANAGH AND SOUTH TYRONE \n", "184 Controlled Integrated UPPER BANN \n", "185 GMI UPPER BANN \n", "186 GMI FERMANAGH AND SOUTH TYRONE \n", "187 Controlled UPPER BANN \n", "188 Controlled UPPER BANN \n", "189 Controlled UPPER BANN \n", "190 Voluntary SOUTH DOWN \n", "191 Voluntary SOUTH DOWN \n", "192 Voluntary NEWRY AND ARMAGH \n", "193 Voluntary NEWRY AND ARMAGH \n", "194 Voluntary MID ULSTER \n", "195 Voluntary SOUTH DOWN \n", "196 Voluntary FERMANAGH AND SOUTH TYRONE \n", "197 Voluntary NEWRY AND ARMAGH \n", "198 Voluntary NEWRY AND ARMAGH \n", "199 Voluntary FERMANAGH AND SOUTH TYRONE \n", "200 Voluntary UPPER BANN \n", "\n", " council rural \n", "0 BELFAST Urban \n", "1 BELFAST Urban \n", "2 BELFAST Urban \n", "3 BELFAST Urban \n", "4 BELFAST Urban \n", "5 BELFAST Urban \n", "6 BELFAST Urban \n", "7 BELFAST Urban \n", "8 BELFAST Urban \n", "9 BELFAST Urban \n", "10 BELFAST Urban \n", "11 BELFAST Urban \n", "12 BELFAST Urban \n", "13 BELFAST Urban \n", "14 BELFAST Urban \n", "15 BELFAST Urban \n", "16 BELFAST Urban \n", "17 BELFAST Urban \n", "18 BELFAST Urban \n", "19 BELFAST Urban \n", "20 BELFAST Urban \n", "21 BELFAST Urban \n", "22 BELFAST Urban \n", "23 BELFAST Urban \n", "24 BELFAST Urban \n", "25 BELFAST Urban \n", "26 BELFAST Urban \n", "27 BELFAST Urban \n", "28 BELFAST Urban \n", "29 BELFAST Urban \n", ".. ... ... \n", "171 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Urban \n", "172 NEWRY MOURNE AND DOWN Urban \n", "173 NEWRY MOURNE AND DOWN Urban \n", "174 MID ULSTER Rural \n", "175 NEWRY MOURNE AND DOWN Rural \n", "176 NEWRY MOURNE AND DOWN Rural \n", "177 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Rural \n", "178 MID ULSTER Urban \n", "179 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Urban \n", "180 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Urban \n", "181 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Urban \n", "182 MID ULSTER Urban \n", "183 MID ULSTER Urban \n", "184 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Urban \n", "185 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Rural \n", "186 MID ULSTER Urban \n", "187 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Urban \n", "188 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Urban \n", "189 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Urban \n", "190 NEWRY MOURNE AND DOWN Urban \n", "191 NEWRY MOURNE AND DOWN Urban \n", "192 NEWRY MOURNE AND DOWN Urban \n", "193 NEWRY MOURNE AND DOWN Urban \n", "194 MID ULSTER Rural \n", "195 NEWRY MOURNE AND DOWN Urban \n", "196 MID ULSTER Urban \n", "197 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Urban \n", "198 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Urban \n", "199 MID ULSTER Urban \n", "200 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Urban \n", "\n", "[201 rows x 10 columns]" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "url_from_odni = \"https://www.opendatani.gov.uk/dataset/6058be29-b2e1-4253-bab8-8a018568560a/resource/b4fcfed1-2dc1-4f61-8968-573535522d53/download/school-level-post-primary-reference-data.csv\"\n", "pd.read_csv(url_from_odni)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-05T17:10:18.972135Z", "start_time": "2018-06-05T17:10:18.969946Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Hard mode: Generators and API's and Bears Oh My" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:09:57.120991Z", "start_time": "2018-06-08T18:09:57.104554Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "from ckanapi import RemoteCKAN # it's on pip\n", "def build_odni_connection():\n", " version_no = (pd.to_datetime('now') -\n", " pd.to_datetime('1988/05/17')).days/365\n", " ua = f'@Bolster/{version_no:.2f} (+http://bolster.online/)'\n", " return RemoteCKAN('https://www.opendatani.gov.uk/', user_agent=ua)\n", " \n", "def dataset_generator(resource_id):\n", " \"\"\"A Generator that yields records from a given dataset resource id\"\"\"\n", " demo = build_odni_connection()\n", " offset = 0\n", " while True:\n", " datastore_page = demo.action.datastore_search(\n", " resource_id=resource_id, offset=offset)\n", " if not datastore_page['records']:\n", " raise StopIteration\n", " for record in datastore_page['records']:\n", " yield record # Execution is passed back to the caller here\n", " offset += 1" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:09:57.944736Z", "start_time": "2018-06-08T18:09:57.122960Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
De ref_idaddress 1constituencycouncilmanagement typepostcoderuralschool nameschool typetown
012100141397 HOLYWOOD ROADBELFAST EASTBELFASTControlledBT42LYUrbanAshfield Girls' High SchoolSecondaryBELFAST
112100152395 HOLYWOOD ROADBELFAST EASTBELFASTControlledBT42LYUrbanAshfield Boys' High SchoolSecondaryBELFAST
21210021335 DUNOWEN GARDENSBELFAST NORTHBELFASTControlledBT146NQUrbanBelfast Model School For GirlsSecondaryBELFAST
312100224BALLYSILLAN ROADBELFAST NORTHBELFASTControlledBT146RBUrbanBelfast Boys' Model SchoolSecondaryBELFAST
412300265619-629 ANTRIM ROADBELFAST NORTHBELFASTCatholic MaintainedBT154DZUrbanSt Patrick's College, BelfastSecondaryBELFAST
512300536468 FALLS ROADBELFAST WESTBELFASTCatholic MaintainedBT126ENUrbanSt Louise's Comprehensive CollegeSecondaryBELFAST
61230089771A SOMERTON ROADBELFAST NORTHBELFASTCatholic MaintainedBT154DEUrbanLittle Flower Girls' SchoolSecondaryBELFAST
712301048BALLYSILLAN ROADBELFAST NORTHBELFASTCatholic MaintainedBT147QRUrbanMercy CollegeSecondaryBELFAST
81230130965 BEECHMOUNT AVENUEBELFAST WESTBELFASTCatholic MaintainedBT127NAUrbanSt Rose?s Dominican CollegeSecondaryBELFAST
9123014610GLEN ROADBELFAST WESTBELFASTCatholic MaintainedBT118BWUrbanChristian Brothers School, BelfastSecondaryBELFAST
10123015511TRENCH HOUSEBELFAST WESTBELFASTCatholic MaintainedBT119JPUrbanSt Genevieve's High SchoolSecondaryBELFAST
1112301821236 EDENMORE DRIVEBELFAST WESTBELFASTCatholic MaintainedBT118LTUrbanDe La Salle CollegeSecondaryBELFAST
12123026213ARD NA VA ROADBELFAST WESTBELFASTCatholic MaintainedBT126FFUrbanCorpus Christi CollegeSecondaryBELFAST
13123027514518-572 RAVENHILL ROADBELFAST SOUTHBELFASTCatholic MaintainedBT60BYUrbanSt Joseph's College, BelfastSecondaryBELFAST
141240291157 BEECHVIEW PARKBELFAST WESTBELFASTOther MaintainedBT127PYUrbanColaiste FeirsteSecondaryBELFAST
1512602691670 WHITEWELL ROADBELFAST NORTHBELFASTGMIBT367ESUrbanHazelwood CollegeSecondaryNEWTOWNABBEY
1612602941745 FINAGHY ROAD NORTHBELFAST SOUTHBELFASTGMIBT100JBUrbanMalone Integrated CollegeSecondaryBELFAST
1714100791850 MARINA PARKBELFAST EASTBELFASTControlledBT56BAUrbanGrosvenor Grammar SchoolGrammarBELFAST
1814102701918 CAROLAN ROADBELFAST SOUTHBELFASTControlledBT73HEUrbanWellington CollegeGrammarBELFAST
191410315208 ASTORIA GARDENSBELFAST EASTBELFASTControlledBT56HWUrbanBloomfield CollegiateGrammarBELFAST
20142002021BELMONT ROADBELFAST EASTBELFASTVoluntaryBT42NDUrbanCampbell CollegeGrammarBELFAST
21142002122147A GLEN ROADBELFAST WESTBELFASTVoluntaryBT118NRUrbanSt Mary's Christian Brothers' Grammar, BelfastGrammarBELFAST
221420022231 MALONE ROADBELFAST SOUTHBELFASTVoluntaryBT96BYUrbanMethodist CollegeGrammarBELFAST
23142002724COLLEGE SQUARE EASTBELFAST SOUTHBELFASTVoluntaryBT16DLUrbanThe Royal Belfast Academical InstitutionGrammarBELFAST
241420028255-17 CLIFTONVILLE ROADBELFAST NORTHBELFASTVoluntaryBT146JLUrbanBelfast Royal AcademyGrammarBELFAST
25142002926135-137 FALLS ROADBELFAST WESTBELFASTVoluntaryBT126AEUrbanSt Dominic's High School, BelfastGrammarBELFAST
2614200302736 ANTRIM ROADBELFAST NORTHBELFASTVoluntaryBT152AEUrbanSt Malachy's College, BelfastGrammarBELFAST
2714200822838 FORTWILLIAM PARKBELFAST NORTHBELFASTVoluntaryBT154AQUrbanDominican College, BelfastGrammarBELFAST
28142008929188 BELMONT ROADBELFAST EASTBELFASTVoluntaryBT42AUUrbanStrathearn School, BelfastGrammarBELFAST
29142009530KINGSWAYBELFAST SOUTHBELFASTVoluntaryBT100LFUrbanRathmore Grammar SchoolGrammarBELFAST
....................................
171523007617238 SCARVA ROADUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONCatholic MaintainedBT323ASUrbanSt Patrick's College, BanbridgeSecondaryBANBRIDGE
1725230108173UPPER CHAPEL STREETNEWRY AND ARMAGHNEWRY MOURNE AND DOWNCatholic MaintainedBT342DTUrbanSt Mary's High School, NewrySecondaryNEWRY
1735230135174UPPER DROMORE ROADSOUTH DOWNNEWRY MOURNE AND DOWNCatholic MaintainedBT343PNUrbanSt Mark's High SchoolSecondaryNEWRY
174523015217515 TULLYBRYAN ROADFERMANAGH AND SOUTH TYRONEMID ULSTERCatholic MaintainedBT702LYRuralSt Ciaran's High SchoolSecondaryDUNGANNON
1755230157176108 CAMLOUGH ROADNEWRY AND ARMAGHNEWRY MOURNE AND DOWNCatholic MaintainedBT357EERuralSt Paul's High School, BessbrookSecondaryNEWRY
176523016717777 DUNDALK ROADNEWRY AND ARMAGHNEWRY MOURNE AND DOWNCatholic MaintainedBT359HLRuralSt Joseph's High School, CrossmaglenSecondaryNEWRY
1775230187178MIDDLETOWN ROADNEWRY AND ARMAGHARMAGH CITY, BANBRIDGE AND CRAIGAVONCatholic MaintainedBT603THRuralSt Patrick's High School, KeadySecondaryKEADY
178523019217929 SCHOOL LANEMID ULSTERMID ULSTERCatholic MaintainedBT714NWUrbanSt Joseph's College, CoalislandSecondaryDUNGANNON
1795230213180DRUMGASKUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONCatholic MaintainedBT655DUUrbanLismore Comprehensive SchoolSecondaryCRAIGAVON
18052302181812A CONVENT ROADNEWRY AND ARMAGHARMAGH CITY, BANBRIDGE AND CRAIGAVONCatholic MaintainedBT604BGUrbanSt Catherine's CollegeSecondaryARMAGH
18152302561824 MOY ROADUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONCatholic MaintainedBT621QLUrbanDrumcree CollegeSecondaryPORTADOWN
1825230278183CHAPEL STREETMID ULSTERMID ULSTERCatholic MaintainedBT808QBUrbanHoly Trinity CollegeSecondaryCOOKSTOWN
183523029318441 KILLYMEAL ROADFERMANAGH AND SOUTH TYRONEMID ULSTERCatholic MaintainedBT716LJUrbanSt Patrick's College, DungannonSecondaryDUNGANNON
1845250216185TULLYGALLY ROADUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONControlled IntegratedBT655BSUrbanBrownlow Int CollegeSecondaryCRAIGAVON
185526028518625 DONARD VIEW ROADUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONGMIBT323LNRuralNew-Bridge Integrated CollegeSecondaryBANBRIDGE
186526028618721 GORTMERRON LINK ROADFERMANAGH AND SOUTH TYRONEMID ULSTERGMIBT716LSUrbanIntegrated College DungannonSecondaryDUNGANNON
1875410013188LURGAN ROADUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONControlledBT324AQUrbanBanbridge AcademyGrammarBANBRIDGE
18854100571899 COLLEGE WALKUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONControlledBT666JWUrbanLurgan CollegeGrammarCRAIGAVON
18954100671904 KILLYCOMAINE ROADUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONControlledBT635BUUrbanPortadown CollegeGrammarCRAIGAVON
1905420045191151 NEWRY ROADSOUTH DOWNNEWRY MOURNE AND DOWNVoluntaryBT344EUUrbanSt Louis Grammar School, KilkeelGrammarKILKEEL
191542005919277A ASHGROVE ROADSOUTH DOWNNEWRY MOURNE AND DOWNVoluntaryBT342QNUrbanAbbey Christian Brothers Grammar SchoolGrammarNEWRY
1925420060193CHEQUER HILLNEWRY AND ARMAGHNEWRY MOURNE AND DOWNVoluntaryBT356DYUrbanOur Lady's Grammar SchoolGrammarNEWRY
193542006219446 ARMAGH ROADNEWRY AND ARMAGHNEWRY MOURNE AND DOWNVoluntaryBT356PPUrbanSt Colman's College, NewryGrammarNEWRY
194542007319558 CASTLECAULFIELD ROADMID ULSTERMID ULSTERVoluntaryBT703HERuralSt Joseph's Convent Grammar School, DonaghmoreGrammarDUNGANNON
195542007619610 ASHGROVE AVENUESOUTH DOWNNEWRY MOURNE AND DOWNVoluntaryBT341PRUrbanSacred Heart Grammar School, NewryGrammarNEWRY
19654202601972 RANFURLEY ROADFERMANAGH AND SOUTH TYRONEMID ULSTERVoluntaryBT716APUrbanThe Royal School, DungannonGrammarDUNGANNON
1975420263198COLLEGE HILLNEWRY AND ARMAGHARMAGH CITY, BANBRIDGE AND CRAIGAVONVoluntaryBT619DHUrbanThe Royal School, ArmaghGrammarARMAGH
1985420268199CATHEDRAL ROADNEWRY AND ARMAGHARMAGH CITY, BANBRIDGE AND CRAIGAVONVoluntaryBT617QZUrbanSt Patrick's Grammar School, ArmaghGrammarARMAGH
199542030420037 KILLYMEAL ROADFERMANAGH AND SOUTH TYRONEMID ULSTERVoluntaryBT716DSUrbanSt Patrick's Academy, DungannonGrammarDUNGANNON
200542031420112 CORNAKINEGAR ROADUPPER BANNARMAGH CITY, BANBRIDGE AND CRAIGAVONVoluntaryBT679JWUrbanSt Ronan?s CollegeGrammarLURGAN
\n", "

201 rows × 11 columns

\n", "
" ], "text/plain": [ " De ref _id address 1 constituency \\\n", "0 1210014 1 397 HOLYWOOD ROAD BELFAST EAST \n", "1 1210015 2 395 HOLYWOOD ROAD BELFAST EAST \n", "2 1210021 3 35 DUNOWEN GARDENS BELFAST NORTH \n", "3 1210022 4 BALLYSILLAN ROAD BELFAST NORTH \n", "4 1230026 5 619-629 ANTRIM ROAD BELFAST NORTH \n", "5 1230053 6 468 FALLS ROAD BELFAST WEST \n", "6 1230089 7 71A SOMERTON ROAD BELFAST NORTH \n", "7 1230104 8 BALLYSILLAN ROAD BELFAST NORTH \n", "8 1230130 9 65 BEECHMOUNT AVENUE BELFAST WEST \n", "9 1230146 10 GLEN ROAD BELFAST WEST \n", "10 1230155 11 TRENCH HOUSE BELFAST WEST \n", "11 1230182 12 36 EDENMORE DRIVE BELFAST WEST \n", "12 1230262 13 ARD NA VA ROAD BELFAST WEST \n", "13 1230275 14 518-572 RAVENHILL ROAD BELFAST SOUTH \n", "14 1240291 15 7 BEECHVIEW PARK BELFAST WEST \n", "15 1260269 16 70 WHITEWELL ROAD BELFAST NORTH \n", "16 1260294 17 45 FINAGHY ROAD NORTH BELFAST SOUTH \n", "17 1410079 18 50 MARINA PARK BELFAST EAST \n", "18 1410270 19 18 CAROLAN ROAD BELFAST SOUTH \n", "19 1410315 20 8 ASTORIA GARDENS BELFAST EAST \n", "20 1420020 21 BELMONT ROAD BELFAST EAST \n", "21 1420021 22 147A GLEN ROAD BELFAST WEST \n", "22 1420022 23 1 MALONE ROAD BELFAST SOUTH \n", "23 1420027 24 COLLEGE SQUARE EAST BELFAST SOUTH \n", "24 1420028 25 5-17 CLIFTONVILLE ROAD BELFAST NORTH \n", "25 1420029 26 135-137 FALLS ROAD BELFAST WEST \n", "26 1420030 27 36 ANTRIM ROAD BELFAST NORTH \n", "27 1420082 28 38 FORTWILLIAM PARK BELFAST NORTH \n", "28 1420089 29 188 BELMONT ROAD BELFAST EAST \n", "29 1420095 30 KINGSWAY BELFAST SOUTH \n", ".. ... ... ... ... \n", "171 5230076 172 38 SCARVA ROAD UPPER BANN \n", "172 5230108 173 UPPER CHAPEL STREET NEWRY AND ARMAGH \n", "173 5230135 174 UPPER DROMORE ROAD SOUTH DOWN \n", "174 5230152 175 15 TULLYBRYAN ROAD FERMANAGH AND SOUTH TYRONE \n", "175 5230157 176 108 CAMLOUGH ROAD NEWRY AND ARMAGH \n", "176 5230167 177 77 DUNDALK ROAD NEWRY AND ARMAGH \n", "177 5230187 178 MIDDLETOWN ROAD NEWRY AND ARMAGH \n", "178 5230192 179 29 SCHOOL LANE MID ULSTER \n", "179 5230213 180 DRUMGASK UPPER BANN \n", "180 5230218 181 2A CONVENT ROAD NEWRY AND ARMAGH \n", "181 5230256 182 4 MOY ROAD UPPER BANN \n", "182 5230278 183 CHAPEL STREET MID ULSTER \n", "183 5230293 184 41 KILLYMEAL ROAD FERMANAGH AND SOUTH TYRONE \n", "184 5250216 185 TULLYGALLY ROAD UPPER BANN \n", "185 5260285 186 25 DONARD VIEW ROAD UPPER BANN \n", "186 5260286 187 21 GORTMERRON LINK ROAD FERMANAGH AND SOUTH TYRONE \n", "187 5410013 188 LURGAN ROAD UPPER BANN \n", "188 5410057 189 9 COLLEGE WALK UPPER BANN \n", "189 5410067 190 4 KILLYCOMAINE ROAD UPPER BANN \n", "190 5420045 191 151 NEWRY ROAD SOUTH DOWN \n", "191 5420059 192 77A ASHGROVE ROAD SOUTH DOWN \n", "192 5420060 193 CHEQUER HILL NEWRY AND ARMAGH \n", "193 5420062 194 46 ARMAGH ROAD NEWRY AND ARMAGH \n", "194 5420073 195 58 CASTLECAULFIELD ROAD MID ULSTER \n", "195 5420076 196 10 ASHGROVE AVENUE SOUTH DOWN \n", "196 5420260 197 2 RANFURLEY ROAD FERMANAGH AND SOUTH TYRONE \n", "197 5420263 198 COLLEGE HILL NEWRY AND ARMAGH \n", "198 5420268 199 CATHEDRAL ROAD NEWRY AND ARMAGH \n", "199 5420304 200 37 KILLYMEAL ROAD FERMANAGH AND SOUTH TYRONE \n", "200 5420314 201 12 CORNAKINEGAR ROAD UPPER BANN \n", "\n", " council management type postcode \\\n", "0 BELFAST Controlled BT42LY \n", "1 BELFAST Controlled BT42LY \n", "2 BELFAST Controlled BT146NQ \n", "3 BELFAST Controlled BT146RB \n", "4 BELFAST Catholic Maintained BT154DZ \n", "5 BELFAST Catholic Maintained BT126EN \n", "6 BELFAST Catholic Maintained BT154DE \n", "7 BELFAST Catholic Maintained BT147QR \n", "8 BELFAST Catholic Maintained BT127NA \n", "9 BELFAST Catholic Maintained BT118BW \n", "10 BELFAST Catholic Maintained BT119JP \n", "11 BELFAST Catholic Maintained BT118LT \n", "12 BELFAST Catholic Maintained BT126FF \n", "13 BELFAST Catholic Maintained BT60BY \n", "14 BELFAST Other Maintained BT127PY \n", "15 BELFAST GMI BT367ES \n", "16 BELFAST GMI BT100JB \n", "17 BELFAST Controlled BT56BA \n", "18 BELFAST Controlled BT73HE \n", "19 BELFAST Controlled BT56HW \n", "20 BELFAST Voluntary BT42ND \n", "21 BELFAST Voluntary BT118NR \n", "22 BELFAST Voluntary BT96BY \n", "23 BELFAST Voluntary BT16DL \n", "24 BELFAST Voluntary BT146JL \n", "25 BELFAST Voluntary BT126AE \n", "26 BELFAST Voluntary BT152AE \n", "27 BELFAST Voluntary BT154AQ \n", "28 BELFAST Voluntary BT42AU \n", "29 BELFAST Voluntary BT100LF \n", ".. ... ... ... \n", "171 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Catholic Maintained BT323AS \n", "172 NEWRY MOURNE AND DOWN Catholic Maintained BT342DT \n", "173 NEWRY MOURNE AND DOWN Catholic Maintained BT343PN \n", "174 MID ULSTER Catholic Maintained BT702LY \n", "175 NEWRY MOURNE AND DOWN Catholic Maintained BT357EE \n", "176 NEWRY MOURNE AND DOWN Catholic Maintained BT359HL \n", "177 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Catholic Maintained BT603TH \n", "178 MID ULSTER Catholic Maintained BT714NW \n", "179 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Catholic Maintained BT655DU \n", "180 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Catholic Maintained BT604BG \n", "181 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Catholic Maintained BT621QL \n", "182 MID ULSTER Catholic Maintained BT808QB \n", "183 MID ULSTER Catholic Maintained BT716LJ \n", "184 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Controlled Integrated BT655BS \n", "185 ARMAGH CITY, BANBRIDGE AND CRAIGAVON GMI BT323LN \n", "186 MID ULSTER GMI BT716LS \n", "187 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Controlled BT324AQ \n", "188 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Controlled BT666JW \n", "189 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Controlled BT635BU \n", "190 NEWRY MOURNE AND DOWN Voluntary BT344EU \n", "191 NEWRY MOURNE AND DOWN Voluntary BT342QN \n", "192 NEWRY MOURNE AND DOWN Voluntary BT356DY \n", "193 NEWRY MOURNE AND DOWN Voluntary BT356PP \n", "194 MID ULSTER Voluntary BT703HE \n", "195 NEWRY MOURNE AND DOWN Voluntary BT341PR \n", "196 MID ULSTER Voluntary BT716AP \n", "197 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Voluntary BT619DH \n", "198 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Voluntary BT617QZ \n", "199 MID ULSTER Voluntary BT716DS \n", "200 ARMAGH CITY, BANBRIDGE AND CRAIGAVON Voluntary BT679JW \n", "\n", " rural school name school type \\\n", "0 Urban Ashfield Girls' High School Secondary \n", "1 Urban Ashfield Boys' High School Secondary \n", "2 Urban Belfast Model School For Girls Secondary \n", "3 Urban Belfast Boys' Model School Secondary \n", "4 Urban St Patrick's College, Belfast Secondary \n", "5 Urban St Louise's Comprehensive College Secondary \n", "6 Urban Little Flower Girls' School Secondary \n", "7 Urban Mercy College Secondary \n", "8 Urban St Rose?s Dominican College Secondary \n", "9 Urban Christian Brothers School, Belfast Secondary \n", "10 Urban St Genevieve's High School Secondary \n", "11 Urban De La Salle College Secondary \n", "12 Urban Corpus Christi College Secondary \n", "13 Urban St Joseph's College, Belfast Secondary \n", "14 Urban Colaiste Feirste Secondary \n", "15 Urban Hazelwood College Secondary \n", "16 Urban Malone Integrated College Secondary \n", "17 Urban Grosvenor Grammar School Grammar \n", "18 Urban Wellington College Grammar \n", "19 Urban Bloomfield Collegiate Grammar \n", "20 Urban Campbell College Grammar \n", "21 Urban St Mary's Christian Brothers' Grammar, Belfast Grammar \n", "22 Urban Methodist College Grammar \n", "23 Urban The Royal Belfast Academical Institution Grammar \n", "24 Urban Belfast Royal Academy Grammar \n", "25 Urban St Dominic's High School, Belfast Grammar \n", "26 Urban St Malachy's College, Belfast Grammar \n", "27 Urban Dominican College, Belfast Grammar \n", "28 Urban Strathearn School, Belfast Grammar \n", "29 Urban Rathmore Grammar School Grammar \n", ".. ... ... ... \n", "171 Urban St Patrick's College, Banbridge Secondary \n", "172 Urban St Mary's High School, Newry Secondary \n", "173 Urban St Mark's High School Secondary \n", "174 Rural St Ciaran's High School Secondary \n", "175 Rural St Paul's High School, Bessbrook Secondary \n", "176 Rural St Joseph's High School, Crossmaglen Secondary \n", "177 Rural St Patrick's High School, Keady Secondary \n", "178 Urban St Joseph's College, Coalisland Secondary \n", "179 Urban Lismore Comprehensive School Secondary \n", "180 Urban St Catherine's College Secondary \n", "181 Urban Drumcree College Secondary \n", "182 Urban Holy Trinity College Secondary \n", "183 Urban St Patrick's College, Dungannon Secondary \n", "184 Urban Brownlow Int College Secondary \n", "185 Rural New-Bridge Integrated College Secondary \n", "186 Urban Integrated College Dungannon Secondary \n", "187 Urban Banbridge Academy Grammar \n", "188 Urban Lurgan College Grammar \n", "189 Urban Portadown College Grammar \n", "190 Urban St Louis Grammar School, Kilkeel Grammar \n", "191 Urban Abbey Christian Brothers Grammar School Grammar \n", "192 Urban Our Lady's Grammar School Grammar \n", "193 Urban St Colman's College, Newry Grammar \n", "194 Rural St Joseph's Convent Grammar School, Donaghmore Grammar \n", "195 Urban Sacred Heart Grammar School, Newry Grammar \n", "196 Urban The Royal School, Dungannon Grammar \n", "197 Urban The Royal School, Armagh Grammar \n", "198 Urban St Patrick's Grammar School, Armagh Grammar \n", "199 Urban St Patrick's Academy, Dungannon Grammar \n", "200 Urban St Ronan?s College Grammar \n", "\n", " town \n", "0 BELFAST \n", "1 BELFAST \n", "2 BELFAST \n", "3 BELFAST \n", "4 BELFAST \n", "5 BELFAST \n", "6 BELFAST \n", "7 BELFAST \n", "8 BELFAST \n", "9 BELFAST \n", "10 BELFAST \n", "11 BELFAST \n", "12 BELFAST \n", "13 BELFAST \n", "14 BELFAST \n", "15 NEWTOWNABBEY \n", "16 BELFAST \n", "17 BELFAST \n", "18 BELFAST \n", "19 BELFAST \n", "20 BELFAST \n", "21 BELFAST \n", "22 BELFAST \n", "23 BELFAST \n", "24 BELFAST \n", "25 BELFAST \n", "26 BELFAST \n", "27 BELFAST \n", "28 BELFAST \n", "29 BELFAST \n", ".. ... \n", "171 BANBRIDGE \n", "172 NEWRY \n", "173 NEWRY \n", "174 DUNGANNON \n", "175 NEWRY \n", "176 NEWRY \n", "177 KEADY \n", "178 DUNGANNON \n", "179 CRAIGAVON \n", "180 ARMAGH \n", "181 PORTADOWN \n", "182 COOKSTOWN \n", "183 DUNGANNON \n", "184 CRAIGAVON \n", "185 BANBRIDGE \n", "186 DUNGANNON \n", "187 BANBRIDGE \n", "188 CRAIGAVON \n", "189 CRAIGAVON \n", "190 KILKEEL \n", "191 NEWRY \n", "192 NEWRY \n", "193 NEWRY \n", "194 DUNGANNON \n", "195 NEWRY \n", "196 DUNGANNON \n", "197 ARMAGH \n", "198 ARMAGH \n", "199 DUNGANNON \n", "200 LURGAN \n", "\n", "[201 rows x 11 columns]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "resource= \"b4fcfed1-2dc1-4f61-8968-573535522d53\"\n", "pd.DataFrame.from_records(dataset_generator(resource))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Great for one resource, but we need a load of these....\n", "![](img/opendata-pp.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "![](img/aintnobody.jpg)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Most ODNI datasets are collected together as 'packages'. \n", "\n", "And you can enumerate them..." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:09:58.252165Z", "start_time": "2018-06-08T18:09:57.947158Z" }, "scrolled": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "['2011-census-microdata-sample-of-anonymised-records-teaching-file',\n", " 'a26-dualling-lidar',\n", " 'a6-lidar',\n", " 'active-places-ni-sports-facilities-database',\n", " 'adult-bmi-health-survey-northern-ireland',\n", " 'adult-magistrates-defendants-dealt-with',\n", " 'advice-centres',\n", " 'air-quality-monitoring-stations',\n", " 'analysis-of-the-trees-of-belfast',\n", " 'anbc-car-parking',\n", " 'anbc-local-nature-reserves',\n", " 'annual-survey-of-hours-and-earnings',\n", " 'anti-social-behaviour-incidents-recorded-by-the-police-in-northern-ireland',\n", " 'antrim-and-newtownabbey-borough-council-bring-bank-locations',\n", " 'antrim-and-newtownabbey-councillors',\n", " 'antrim-newtownabbey-borough-council-assets',\n", " 'ards-and-north-down-borough-council-car-parks',\n", " 'ards-and-north-down-councillors',\n", " 'areas-of-archaeological-potential',\n", " 'areas-of-outstanding-natural-beauty',\n", " 'areas-of-significant-archaeological-interest',\n", " 'areas-of-special-scientific-interest',\n", " 'armagh-city-banbridge-craigavon-borough-councillors',\n", " 'attendance-allowance-recipients-statistical-geography',\n", " 'authorised-waste-sites-treatment-storage',\n", " 'average-2015-prescription-costs-for-gp-practices-in-northern-ireland',\n", " 'bathymetric-lidar-for-red-bay',\n", " 'bathymetric-lidar-for-small-area-of-strangford-lough',\n", " 'bcni2018',\n", " 'belfast-bicycle-network',\n", " 'belfast-bike-hire-rentals-and-returns',\n", " 'belfast-bike-hire-rentals-returns',\n", " 'belfast-city-council-councillors',\n", " 'belfast-council-car-parks',\n", " 'belfast-trees',\n", " 'bike-hire-stations',\n", " 'botanic-gardens-3d-tree-model',\n", " 'bottle-banks',\n", " 'boundary-commission-for-northern-ireland-revised-proposals',\n", " 'boundary-review',\n", " 'bowling-pavilions',\n", " 'breastfeeding-welcome-here-certificate-holders',\n", " 'cancer-waiting-times',\n", " 'carers-allowance-recipients-statistical-geography',\n", " 'causewaycoastandglensbc',\n", " 'causeway-coast-and-glens-borough-councillors',\n", " 'causeway-coast-and-glens-borough-council-off-street-car-parks',\n", " 'cemeteries',\n", " 'city-parks',\n", " 'civic-amenity-sites',\n", " 'client-group-analysis-claimants-statisical-geographies',\n", " 'clinical-social-care-negligence-cases',\n", " 'community-centres',\n", " 'contracts-awarded-by-central-procurement-directorate-in-the-2016-2017-year',\n", " 'council-properties',\n", " 'crown-court-defendants-dealt-with',\n", " 'datasets-financial-abuse-of-older-people',\n", " 'defence-heritage',\n", " 'dental-list-march-2018',\n", " 'department-of-health-trust-boundaries',\n", " 'derry-and-strabane-borough-councillors',\n", " 'derry-city-and-strabane-district-council-off-street-car-parks-locations',\n", " 'diagnostic-waiting-times',\n", " 'disability-living-allowance-recipients-statistical-geographies',\n", " 'disabled-persons-allowance-statistics',\n", " 'disease-prevalence',\n", " 'disease-prevalence-in-northern-ireland',\n", " 'domestic-abuse-incidents-and-crimes-recorded-by-the-police-in-northern-ireland',\n", " 'draft-programme-for-government-framework-2016-21',\n", " 'drainage-asset',\n", " 'driver-testing-outcomes-by-test-centre',\n", " 'emergency-care-waiting-times',\n", " 'emergency-care-waiting-times1',\n", " 'enrolments-by-school-management-type',\n", " 'environmental-noise-directive-noise-mapping',\n", " 'essential-skills-activity',\n", " 'essential-skills-activity-2002-20014-15',\n", " 'essential-skills-activity-2002-2015-16',\n", " 'essential-skills-enrolments-administrative-geographies',\n", " 'estimates-of-the-population-aged-85-and-over-northern-ireland',\n", " 'eu-referendum-23-june-2016',\n", " 'european-parliament-election-22-may-2014-ni-region',\n", " 'events',\n", " 'farm-census-administrative-geographies',\n", " 'fermanagh-and-omagh-district-council-bowling-pavilions',\n", " 'fermanagh-and-omagh-district-council-car-parks',\n", " 'fermanagh-and-omagh-district-council-leisure-centres',\n", " 'fermanagh-and-omagh-district-councillors',\n", " 'filtering-offence-list',\n", " 'find-your-nearest-bus-stops',\n", " 'find-your-public-amenities-in-northern-ireland',\n", " 'fly-tipping',\n", " 'fodc-community-centres',\n", " 'fodc-recycling-centres',\n", " 'fodc-tree-preservation-orders',\n", " 'food-premise-hygiene-ratings',\n", " 'full-list-of-first-forenames-given-to-babies-registered-in-northern-ireland',\n", " 'further-education-achievements-administrative-geographies',\n", " 'further-education-activity',\n", " 'further-education-regulated-enrolments-administrative-geographies',\n", " 'gp-practice-list-sizes',\n", " 'gp-prescribing-data',\n", " 'gp-prescription-spending-by-british-national-formulary-bnf-chapter-and-drug-april-2013-may-2016',\n", " 'greater-beflast-area-park-and-ride-sites',\n", " 'gross-hourly-pay-annual-survey-of-hours-and-earnings',\n", " 'gross-weekly-pay-annual-survey-of-hours-and-earnings',\n", " 'gsni-250k-geology',\n", " 'gsni-tellus-regional-airborne-geophysical-survey-electromagnetics',\n", " 'gsni-tellus-regional-airborne-geophysical-survey-magnetics',\n", " 'gsni-tellus-regional-airborne-geophysical-survey-radiometrics',\n", " 'gsni-tellus-regional-stream-sediments',\n", " 'gsni-tellus-regional-stream-waters-icp',\n", " 'hea',\n", " 'health',\n", " 'health-trust-community-services-and-reference-costs',\n", " 'health-trust-community-services-indicators-and-reference-costs-2015-16',\n", " 'health-trust-reference-costs-2015-16',\n", " 'health-trust-specialist-services-reference-costs-2015-16',\n", " 'higher-education-enrolments-administrative-geographies',\n", " 'higher-education-qualifications-administrative-geographies',\n", " 'highway-network',\n", " 'historic-environment-division-lidar',\n", " 'historic-environment-division-lidar-2008',\n", " 'historic-environment-division-lidar-2009',\n", " 'historic-environment-division-lidar-2013',\n", " 'historic-environment-division-lidar-2014',\n", " 'historic-parks-and-gardens',\n", " 'https-www-daera-ni-gov-uk-sites-default-files-publications-doe-lakewaterbodygml-zip',\n", " 'https-www-daera-ni-gov-uk-sites-default-files-publications-doe-riversegmentgml-zip',\n", " 'https-www-nisra-gov-uk-statistics-deprivation',\n", " 'incidents-and-crimes-with-a-hate-motivation-recorded-by-the-police-in-northern-ireland',\n", " 'income-support-recipients-stat-geog',\n", " 'industrial-heritage-record',\n", " 'inpatient-waiting-times',\n", " 'invest-ni-financial-offers-of-support-2012-13-to-2016-17',\n", " 'jobs',\n", " 'job-seekers-allowance-claimants-statistical-geographies',\n", " 'landscape-character-areas',\n", " 'leisure-centres',\n", " 'libraries-ni-annual-loans-summary',\n", " 'library-locations-ni',\n", " 'licensed-bus-vehicles',\n", " 'licensed-taxi-vehicles',\n", " 'lidar-lough-neagh-environs-2017',\n", " 'lighting-assets',\n", " 'lisburn-and-castlereagh-city-council',\n", " 'lisburn-carpark-data',\n", " 'listed-buildings-northern-ireland',\n", " 'locate-a-school',\n", " 'lone-pensioner-allowance-statistics',\n", " 'lps-arcgis',\n", " 'materials-collected-at-northern-ireland-local-authority-waste-management-sites-time-series-data',\n", " 'members-allowances',\n", " 'metro-timetable-data-valid-from-18-june-until-31-august-2016',\n", " 'mid-and-east-antrim-borough-councillors',\n", " 'mid-and-east-antrim-borough-council-off-street-car-parks',\n", " 'mid-ulster-district-councillors',\n", " 'my-train-for-amazon-echo',\n", " 'national-nature-reserves',\n", " 'newry-mourne-and-down-district-councillors',\n", " 'nia-constituencies',\n", " 'ni-air-quality',\n", " 'nia-members',\n", " 'nia-questions',\n", " 'nia-register',\n", " 'ni-assembly-election-5-may-2016',\n", " 'ni-cycle-counters-raw-data-2011-2016',\n", " 'ni-direct-website-data',\n", " 'niea-authorised-landfill-sites',\n", " 'ni-gp-prescribing-data-november-december-2015',\n", " 'ni-herd-flock-map-references',\n", " 'ni-housing-stock',\n", " 'nihpi-by-propertytype',\n", " 'nihpi-mean-median-standardisded-price',\n", " 'nihpi-verified-sales-by-propertytype',\n", " 'nir20160126v2',\n", " 'nisra-open-data-boundaries-output-areas-2001',\n", " 'nisra-open-data-boundaries-small-areas-2011',\n", " 'nisra-open-data-boundaries-super-output-areas-2011',\n", " 'ni-water-customer-tap-authorised-supply-point-results',\n", " 'norther',\n", " 'northern-ireland-capital-value-bands-april-2016',\n", " 'northern-ireland-catchment-stakeholder-groups',\n", " 'northern-ireland-civil-service-employment-statistics',\n", " 'northern-ireland-composite-economic-index',\n", " 'northern-ireland-groundwater-bodies',\n", " 'northern-ireland-index-of-production',\n", " 'northern-ireland-index-of-services',\n", " 'northern-ireland-local-authority-collected-municipal-waste-management-statistics',\n", " 'northern-ireland-local-councils-election-22-may-2014',\n", " 'northern-ireland-local-management-areas',\n", " 'northern-ireland-multiple-deprivation-measure-2005',\n", " 'northern-ireland-multiple-deprivation-measures-2017',\n", " 'northern-ireland-new-dwelling-completions',\n", " 'northern-ireland-new-dwelling-starts',\n", " 'northern-ireland-planning-statistics-annual-dataset',\n", " 'northern-ireland-railways-halts',\n", " 'northern-ireland-railways-nir-bridges',\n", " 'northern-ireland-railways-nir-culverts',\n", " 'northern-ireland-railways-nir-railway-network',\n", " 'northern-ireland-railways-nir-signal-posts',\n", " 'northern-ireland-railways-platforms',\n", " 'northern-ireland-railways-stations',\n", " 'northern-ireland-river-basin-districts',\n", " 'northern-ireland-river-water-bodies',\n", " 'northern-ireland-road-safety-partnership-2011-2016',\n", " 'northern-ireland-road-traffic-collision-data-2013-15-a-visualisation-of-the-data',\n", " 'northern-ireland-sites-and-monuments-record',\n", " 'northern-ireland-traffic-count-data',\n", " 'notifiable-infectious-diseases-report-2016-week-17',\n", " 'notifiable-infectious-diseases-reports-noids-northern-ireland-trends-predictions',\n", " 'number-of-education-establishments-in-ni-by-management-type1991-2017',\n", " 'number-of-pupils-attending-education-establishmentsin-ni-by-school-type-1991-2017',\n", " 'obese-and-overweight-children-health-survey-northern-ireland',\n", " 'off-street-car-parks-within-mid-ulster',\n", " 'opendatani-dataset-numbers-by-publisher',\n", " 'opendatani-dataset-suggestions',\n", " 'osni-open-data-10k-grid',\n", " 'osni-open-data-10m-dtm-sheets-101-1501',\n", " 'osni-open-data-10m-dtm-sheets-1-501',\n", " 'osni-open-data-10m-dtm-sheets-151-2001',\n", " 'osni-open-data-10m-dtm-sheets-201-2501',\n", " 'osni-open-data-10m-dtm-sheets-251-2931',\n", " 'osni-open-data-10m-dtm-sheets-51-1001',\n", " 'osni-open-data-1-million-raster-infrastructure1',\n", " 'osni-open-data-1-million-raster-locations1',\n", " 'osni-open-data-1-million-raster-natural-environment1',\n", " 'osni-open-data-1-million-raster-parliamentary-boundaries1',\n", " 'osni-open-data-50k-admin-boundaries-counties1',\n", " 'osni-open-data-50k-admin-boundaries-deas-19931',\n", " 'osni-open-data-50k-admin-boundaries-lgds-19931',\n", " 'osni-open-data-50k-admin-boundaries-ni-outline1',\n", " 'osni-open-data-50k-admin-boundaries-parliamentary-constituencies-20081',\n", " 'osni-open-data-50k-admin-boundaries-townlands1',\n", " 'osni-open-data-50k-admin-boundaries-wards-19931',\n", " 'osni-open-data-50k-grid',\n", " 'osni-open-data-50k-transport-line1',\n", " 'osni-open-data-50k-transport-text1',\n", " 'osni-open-data-50m-digital-terrain-model-csv1',\n", " 'osni-open-data-benchmark-data1',\n", " 'osni-open-data-largescale-boundaries-county-boundaries1',\n", " 'osni-open-data-largescale-boundaries-district-electoral-areas-19931',\n", " 'osni-open-data-largescale-boundaries-district-electoral-areas-20121',\n", " 'osni-open-data-largescale-boundaries-local-government-districts-19931',\n", " 'osni-open-data-largescale-boundaries-local-government-districts-20121',\n", " 'osni-open-data-largescale-boundaries-ni-outline1',\n", " 'osni-open-data-largescale-boundaries-parliamentary-constituencies-20081',\n", " 'osni-open-data-largescale-boundaries-townlands1',\n", " 'osni-open-data-largescale-boundaries-wards-19931',\n", " 'osni-open-data-largescale-boundaries-wards-20121',\n", " 'osni-open-data-midscale-raster1',\n", " 'osni-open-data-placename-gazetteer1',\n", " 'osni-open-data-river-basin-lidar-2004-dtms-and-dsms',\n", " 'osni-open-data-river-basin-lidar-2007-dtms-and-dsms',\n", " 'osni-open-data-river-basin-lidar-2008-dtms-and-dsms',\n", " 'osni-open-data-river-basin-lidar-2009-dtms-and-dsms',\n", " 'osni-open-data-river-basin-lidar-2010-dtms-and-dsms',\n", " 'osni-open-data-river-basin-lidar-2012-dtms-and-dsms',\n", " 'osni-open-data-river-basin-lidar-2013-dtms-and-dsms',\n", " 'osni-open-data-river-basin-lidar-2014-dtms-and-dsms',\n", " 'osni-open-data-streetmaps1',\n", " 'osni-open-data-street-name-gazetteer1',\n", " 'osni-open-data-townland-raster-maps1',\n", " 'osni-open-data-transport-50k-points',\n", " 'ou',\n", " 'outpatient-first-and-follow-up-appointments',\n", " 'outpatient-first-and-follow-up-appointments-2015-16',\n", " 'outpatient-waiting-times',\n", " 'pedestrain-crossing',\n", " 'pension-credit-claimants-statistical-geography',\n", " 'pitches-playing-fields',\n", " 'play-centres',\n", " 'playgrounds',\n", " 'police-recorded-crime-in-northern-ireland',\n", " 'police-recorded-injury-road-traffic-collision-statistics-northern-ireland',\n", " 'police-recorded-injury-road-traffic-collision-statistics-northern-ireland-2013',\n", " 'police-recorded-injury-road-traffic-collision-statistics-northern-ireland-2014',\n", " 'police-recorded-injury-road-traffic-collision-statistics-northern-ireland-2016',\n", " 'population-estimates-for-northern-ireland',\n", " 'population-estimates-for-small-areas-northern-ireland',\n", " 'population-estimates-for-super-output-areas-soas-and-electoral-wards-northern-ireland',\n", " 'population-projection-for-northern-ireland',\n", " 'population-projections-for-areas-within-northern-ireland-2016-based',\n", " 'pothole-enquiries',\n", " 'prescriptions-cost-savings',\n", " 'prescriptive-variability-of-drugs-by-general-practitioners',\n", " 'primary-1-and-year-8-obesity',\n", " 'protected-wreck-sites',\n", " 'psni-street-crime-data',\n", " 'public-toilets',\n", " 'ramsar-sites',\n", " 'rating-income',\n", " 'real-time-rail-stations-arrivals-and-departures',\n", " 'recycling-banks',\n", " 'recycling-centres',\n", " 'registered-and-responsible-body-list',\n", " 'register-of-charities',\n", " 'roadworks',\n", " 'rqia-registered-services',\n", " 'rural-soil-survey',\n", " 'scheduled-historic-monument-areas',\n", " 'school-census-nursery-schools',\n", " 'school-census-post-primary',\n", " 'school-census-pre-primary-schools',\n", " 'school-census-primary-schools',\n", " 'school-census-special-schools',\n", " 'school-enrolments-ni-summary-data',\n", " 'senior-officer-salaries',\n", " 'settlement-boundary-data',\n", " 'special-areas-of-conservation',\n", " 'special-protection-areas',\n", " 'sports-pitches',\n", " 'state-pension-claimants-statistical-geography',\n", " 'stop-and-search-statistics-2016-17',\n", " 'surface-defects',\n", " 'surface-water-bodies-with-2015-status',\n", " 'theatre-utilisation-activity',\n", " 'the-continuing-religious-divide-in-northern-ireland-s-schools',\n", " 'the-public-trees-of-belfast-city',\n", " 'total-paid-hours-worked-annual-survey-of-hours-and-earnings',\n", " 'translink-bus-stop-list',\n", " 'translink-metro-bus-routes',\n", " 'translink-ni-railways-stations',\n", " 'translink-ulsterbus-routes',\n", " 'trust-community-services-indicators-and-reference-costs',\n", " 'trust-reference-costs',\n", " 'trust-specialist-services-reference-costs',\n", " 'type-of-long-term-condition-by-age-by-sex-dc3101ni',\n", " 'uk-parliamentary-election-7-may-2015',\n", " 'ulsterbus-and-goldline-timetable-data-from-28-june-31-august-2016',\n", " 'umbrella-bodies',\n", " 'upcoming-parades',\n", " 'using-machine-learning-to-extract-useful-information-about-belfast-trees',\n", " 'vehicle-testing-outcomes-by-test-centre',\n", " 'victims-survivors-services-funded-organisations-2017-18',\n", " 'visualising-the-n-i-bus-network-you-wait-for-ages-and-3-743-show-up-at-once',\n", " 'water-abstraction-licence-application-locations-except-public-water-supplies',\n", " 'what-s-under-the-trees-visualising-opendatani-lidar-in-a-geographical-information-system-gis',\n", " 'whylivehere',\n", " 'world-heritage-site',\n", " 'york-street-interchange-lidar',\n", " 'youth-magistrates-defendants-dealt-with']" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "odni = build_odni_connection()\n", "\n", "odni.action.package_list()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:10:05.053654Z", "start_time": "2018-06-08T18:09:58.255585Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['School Census - post primary - Reference data', 'School Census - post primary - enrolments', 'School Census - post primary - Free School Meal entitlement', 'School Census - post primary - SEN', 'School Census - post Primary - Religion', 'School Census - post - Primary - newcomers']\n" ] } ], "source": [ "resource = 'school-census-post-primary'\n", "\n", "dfs = {}\n", "for dataset in odni.action.package_show(id=resource)['resources']:\n", " df = pd.read_csv(dataset['url'], index_col=False)\n", " dfs[dataset['name']] = df\n", "print(list(dfs.keys()))" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-06T12:43:21.092727Z", "start_time": "2018-06-06T12:43:21.087506Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Those who ignore history...\n", "There's a problem; We want to know about change over time.\n", "\n", "![](img/doe_data_list.png)\n", "\n", "[Dept of Ed have this data 2009-18 on their website in Excel format](https://www.education-ni.gov.uk/articles/school-enrolments-school-level-data)\n", "\n", "OpenDataNI *do not* 😭" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-06T12:49:27.554831Z", "start_time": "2018-06-06T12:49:27.430364Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "![](img/fuck.gif)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### We must deeeeel weeeth eet\n", "\n", "![](img/fine.jpg)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:10:05.461030Z", "start_time": "2018-06-08T18:10:05.056605Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Data are collected annually through the School census exercise.Unnamed: 1
0This takes place in early October, when each s...NaN
1In 2017/18, the school census date was 6th Oct...NaN
2Among the information collected are details on...NaN
3Statistics produced from the school census exe...NaN
4NaNNaN
\n", "
" ], "text/plain": [ " Data are collected annually through the School census exercise. Unnamed: 1\n", "0 This takes place in early October, when each s... NaN\n", "1 In 2017/18, the school census date was 6th Oct... NaN\n", "2 Among the information collected are details on... NaN\n", "3 Statistics produced from the school census exe... NaN\n", "4 NaN NaN" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "base_link = \"https://www.education-ni.gov.uk/sites/default/files/publications/education/\"\n", "pd.read_excel(base_link+'School%20level%20-%20post%20primary%20schools%20data%20supp%201718.xls').head()" ] }, { "cell_type": "code", "execution_count": 229, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:10:29.382553Z", "start_time": "2018-06-09T09:10:28.311023Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "ename": "HTTPError", "evalue": "HTTP Error 404: Not Found", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mHTTPError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m pd.read_excel(base_link+ 'School%20level%20-%20post%20primary%20schools%20data%20supp%201617.xls'\n\u001b[0m\u001b[1;32m 2\u001b[0m ).head()\n", "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/pandas/util/_decorators.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 116\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 117\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnew_arg_name\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnew_arg_value\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 118\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 119\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 120\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_deprecate_kwarg\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/pandas/io/excel.py\u001b[0m in \u001b[0;36mread_excel\u001b[0;34m(io, sheet_name, header, skiprows, skip_footer, index_col, names, usecols, parse_dates, date_parser, na_values, thousands, convert_float, converters, dtype, true_values, false_values, engine, squeeze, **kwds)\u001b[0m\n\u001b[1;32m 228\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 229\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mExcelFile\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 230\u001b[0;31m \u001b[0mio\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mExcelFile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mengine\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 231\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 232\u001b[0m return io._parse_excel(\n", "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/pandas/io/excel.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, io, **kwds)\u001b[0m\n\u001b[1;32m 281\u001b[0m \u001b[0;31m# to get_filepath_or_buffer()\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 282\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0m_is_url\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_io\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 283\u001b[0;31m \u001b[0mio\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_urlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_io\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 284\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mExcelFile\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxlrd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mBook\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 285\u001b[0m \u001b[0mio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_filepath_or_buffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_io\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[1;32m 221\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 223\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 224\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 225\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[1;32m 530\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_response\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprotocol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 531\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 532\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_response\u001b[0;34m(self, request, response)\u001b[0m\n\u001b[1;32m 640\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 641\u001b[0m response = self.parent.error(\n\u001b[0;32m--> 642\u001b[0;31m 'http', request, response, code, msg, hdrs)\n\u001b[0m\u001b[1;32m 643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 644\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self, proto, *args)\u001b[0m\n\u001b[1;32m 568\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhttp_err\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 569\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'default'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'http_error_default'\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0morig_args\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 570\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_chain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 571\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 572\u001b[0m \u001b[0;31m# XXX probably also want an abstract factory that knows when it makes\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[0;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[1;32m 502\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 503\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 504\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 505\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/lib/python3.6/urllib/request.py\u001b[0m in \u001b[0;36mhttp_error_default\u001b[0;34m(self, req, fp, code, msg, hdrs)\u001b[0m\n\u001b[1;32m 648\u001b[0m \u001b[0;32mclass\u001b[0m \u001b[0mHTTPDefaultErrorHandler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mBaseHandler\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 649\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhttp_error_default\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhdrs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 650\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mHTTPError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfull_url\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmsg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhdrs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 651\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 652\u001b[0m \u001b[0;32mclass\u001b[0m \u001b[0mHTTPRedirectHandler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mBaseHandler\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mHTTPError\u001b[0m: HTTP Error 404: Not Found" ] } ], "source": [ "pd.read_excel(base_link+\\\n", " 'School%20level%20-%20post%20primary%20schools%20data%20supp%201617.xls'\n", " ).head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Common Extraction Hellscapes\n", "\n", "* Inconsistent naming conventions\n", "* Inconsistent format conventions\n", "* Inconsistent schema conventions\n", "* Inconsistent lexical conventions\n", "* Inconsistent *policy changes*\n", "* Shifting *definitions/classifications*\n", "* Lack of meta-linkage during all of the above changes\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Spot the difference...\n", "\n", "* `School%20level%20-%20post%20primary%20schools%20data%20supp%201718.xls`" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-06T12:59:05.358551Z", "start_time": "2018-06-06T12:59:05.232140Z" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "* `School%20level%20-%20post%20primary%20schools%20data%201617%20supp_0.XLS`" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-06T12:59:05.358551Z", "start_time": "2018-06-06T12:59:05.232140Z" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "![](img/fuckyou.gif)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Soupy Crawler\n", "\n", "![](img/doe_data_list.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Easy enough, Get the links from the list" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:10:56.685091Z", "start_time": "2018-06-08T18:10:56.352927Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "School enrolments - school level data 2017/18\n", "School enrolments - school level data 2016/17\n", "School enrolments - school level data 2015/16\n", "School enrolments - school level data 2014/15\n", "School enrolments - school level data 2013/14\n", "School enrolments - school level data 2012/13\n", "School enrolments - school level data 2011/12\n", "School enrolments - school level data 2010/11\n", "School enrolments - school level data 2009/10\n" ] } ], "source": [ "from bs4 import BeautifulSoup\n", "import requests\n", "\n", "base_url=\"https://www.education-ni.gov.uk\"\n", "\n", "listing_path = \"/articles/school-enrolments-school-level-data\"\n", "soup = BeautifulSoup(requests.get(base_url+listing_path).text, 'lxml')\n", "for link in soup.find_all('a'):\n", " if 'School enrolments - school level data 20' in ' '.join(map(str,link.contents)):\n", " print(link)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T10:33:28.566866Z", "start_time": "2018-06-08T10:33:28.436565Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "![](img/yey_laura.webp)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Then for each of those, get the href associated with the year" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:11:00.040503Z", "start_time": "2018-06-08T18:10:59.838211Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "{2009: '/publications/school-enrolments-school-level-data-200910',\n", " 2010: '/publications/school-enrolments-school-level-data-201011',\n", " 2011: '/publications/school-enrolments-school-level-data-201112',\n", " 2012: '/publications/school-enrolments-school-level-data-201213',\n", " 2013: '/publications/school-enrolments-school-level-data-201314',\n", " 2014: '/publications/school-enrolments-school-level-data-201415',\n", " 2015: '/publications/school-enrolments-school-level-data-201516',\n", " 2016: '/publications/school-enrolments-school-level-data-201617',\n", " 2017: '/publications/school-enrolments-school-level-data-201718'}" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "soup = BeautifulSoup(requests.get(base_url+listing_path).text, 'lxml')\n", "year_urls = {}\n", "for link in soup.find_all('a'):\n", " contents = ' '.join(map(str,link.contents))\n", " if 'School enrolments - school level data 20' in contents:\n", " year = link.get('href')[-6:-2]\n", " year_urls[int(year)] = link.get('href')\n", "year_urls" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Then walk *those* pages and grab the Excel files...\n", "Using `urllib.request.urlretrieve` to store them on the local filesystem" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:09.285149Z", "start_time": "2018-06-08T18:12:07.482092Z" }, "code_folding": [], "slideshow": { "slide_type": "-" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2017:8 docs\n", "2016:8 docs\n", "2015:5 docs\n", "2014:5 docs\n", "2013:5 docs\n", "2012:5 docs\n", "2011:5 docs\n", "2010:5 docs\n", "2009:5 docs\n" ] } ], "source": [ "import urllib.request\n", "from pathlib import Path\n", "from collections import defaultdict\n", "year_files = defaultdict(list)\n", "\n", "dest = Path('./data/education-ni/')\n", "for year, path in year_urls.items():\n", " dest.joinpath(str(year)).mkdir(parents=True, exist_ok=True)\n", " soup = BeautifulSoup(requests.get(base_url+path).text, 'lxml')\n", " for link in soup.find_all('a'):\n", " href=link.get('href',\"\")\n", " filename = href.split('/')[-1]\n", " contents = ' '.join(map(str,link.contents))\n", " if 'xls' in href.split('.')[-1].lower():\n", " # See this requirement right 👆 Fuck you DoE\n", " # Mix of xls, XLSX, xlsx and XLS\n", " if not dest.joinpath(str(year),filename).exists():\n", " urllib.request.urlretrieve(href, dest.joinpath(str(year),filename))\n", " year_files[year].append(filename)\n", " print(f\"{year}:{len(year_files[year])} docs\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Transformation\n", "\n", "We've technically 'Extracted' the data we wanted from the source,\n", "\n", "Clean and twist the data until it's useful" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "This is the most frustrating part of being a data scientist/engineer...\n", "\n", "![](img/frustrated.webp)" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:13.053721Z", "start_time": "2018-06-08T18:12:13.048716Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2017:/School%20level%20-%20nursery%20schools%20data%201718%20supp.xlsx\n", "2017:/School%20level%20-%20post%20primary%20schools%20data%20supp%201718.xls\n", "2017:/School%20level%20-%20primary%20schools%20data%20supp%201718.xlsx\n", "2017:/School%20level%20-%20pre%20school%20data%201718%20supp.xlsx\n", "2017:/available%20places%20-%20primary%201718%20supp.xlsx\n", "2017:/available%20places%20-%20post-primary%201718%20supp.xlsx\n", "2017:/available%20places%20-%20nursery%201718%20supp.xlsx\n", "2017:/School%20level%20-%20special%20school%20data%202017-18_0.xlsx\n", "2016:/School%20level%20-%20nursery%20schools%20data%201617%20supp.XLS\n", "2016:/School%20level%20-%20post%20primary%20schools%20data%201617%20supp_0.XLS\n", "2016:/School%20level%20-%20primary%20schools%20data%201617%20supp.XLSX\n", "2016:/School%20level%20-%20pre%20school%20data%201617%20supp.XLSX\n", "2016:/School%20level%20-%20special_school_data%201617%20supp_0.XLSX\n", "2016:/available%20places%20-%20primary%201617%20supp.XLSX\n", "2016:/available%20places%20-%20post-primary%201617%20supp.XLSX\n", "2016:/available%20places%20-%20nursery%201617%20supp%20final.XLSX\n", "2015:/School%20level%20-%20nursery%20schools%20data%201516%20supp.XLS\n", "2015:/School-level-post-primary-schools-data-1516_1.XLS\n", "2015:/School%20level%20-%20primary%20schools%20data%201516%20supp_0.XLSX\n", "2015:/School%20level%20-%20pre%20school%20data%201516%20supp.XLSX\n", "2015:/School%20level%20-%20special_school_data%201516%20supp.XLSX\n", "2014:/School%20level%20-%20pre%20school%20data%201415.XLS\n", "2014:/School%20level%20-%20nursery%20schools%20data%201415%20supp%20-%20unfilled%20places.XLS\n", "2014:/primary-schools-data-1415-supp-with-unfilled-places.xlsx\n", "2014:/post-primary-schools-data-1415-supp-with-unfilled-places.xlsx\n", "2014:/special-school-data-1415-supp.xlsx\n", "2013:/pre-school-data-2013-14.xlsx\n", "2013:/nursery-schools-data-13-14-supp-incl-unfilled-places.xlsx\n", "2013:/primary-schools-data-2013-14-supp-inc-unfilled-places.xlsx\n", "2013:/post-primary-schools-data-13-14-supp-inc-unfilled-places.xlsx\n", "2013:/special-school-data-2013-14-supp.xlsx\n", "2012:/pre-school-data-2012-13.xlsx\n", "2012:/nursery-schools-data-2012-13-supp-inc-unfilled-places.xlsx\n", "2012:/primary-schools-data-2012-13-supp-inc-unfilled-places-2.xlsx\n", "2012:/post-primary-schools-data-2012-13-supp-inc-unfilled-places.xlsx\n", "2012:/special-school-data-2012-13-supp.xlsx\n", "2011:/pre-school-data-2011-12.xlsx\n", "2011:/nursery-schools-data-2011-12-supp-inc-unfilled-2.xlsx\n", "2011:/primary-schools-data-11-12-supp-inc-unfilled-places-r.xlsx\n", "2011:/post-primary-schools-data-11-12-supp-inc-unfilled-2.xlsx\n", "2011:/special-school-data-11-12-supp.xlsx\n", "2010:/pre-school-data-1011-3.xlsx\n", "2010:/nursery-schools-data-2010-11-supp-inc-unfilled.xlsx\n", "2010:/primary-schools-data-1011-supp-inc-unfilled-r.xlsx\n", "2010:/post-primary-schools-data-10-11-supp-inc-unfilled.xlsx\n", "2010:/special-school-data-1011-supp-2.xlsx\n", "2009:/pre-school-data-0910-3.xlsx\n", "2009:/nursery-schools-data-0910-supp-3.xlsx\n", "2009:/primary-schools-data-0910-supp-r.xlsx\n", "2009:/post-primary-schools-data-0910-supp-2.xlsx\n", "2009:/special-school-data-0910-supp-3.xlsx\n" ] } ], "source": [ "for year, filenames in year_files.items():\n", " for file in filenames:\n", " print(f\"{year}:/{file}\")" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:13.841569Z", "start_time": "2018-06-08T18:12:13.836438Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2017:/School%20level%20-%20post%20primary%20schools%20data%20supp%201718.xls\n", "2017:/available%20places%20-%20post-primary%201718%20supp.xlsx\n", "2016:/School%20level%20-%20post%20primary%20schools%20data%201617%20supp_0.XLS\n", "2016:/available%20places%20-%20post-primary%201617%20supp.XLSX\n", "2015:/School-level-post-primary-schools-data-1516_1.XLS\n", "2014:/post-primary-schools-data-1415-supp-with-unfilled-places.xlsx\n", "2013:/post-primary-schools-data-13-14-supp-inc-unfilled-places.xlsx\n", "2012:/post-primary-schools-data-2012-13-supp-inc-unfilled-places.xlsx\n", "2011:/post-primary-schools-data-11-12-supp-inc-unfilled-2.xlsx\n", "2010:/post-primary-schools-data-10-11-supp-inc-unfilled.xlsx\n", "2009:/post-primary-schools-data-0910-supp-2.xlsx\n" ] } ], "source": [ "for year, filenames in year_files.items():\n", " for file in filenames:\n", " if 'post' in file:\n", " print(f\"{year}:/{file}\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "![](img/fuckyoutoo.webp)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-06T13:43:16.210444Z", "start_time": "2018-06-06T13:43:16.203320Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Don't try and tackle it all at once\n", "\n", "Right, lets limit our scope to look at places available" ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:16.486477Z", "start_time": "2018-06-08T18:12:16.479973Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Year: 2017\n", "available%20places%20-%20primary%201718%20supp.xlsx\n", "available%20places%20-%20post-primary%201718%20supp.xlsx\n", "available%20places%20-%20nursery%201718%20supp.xlsx\n", "Year: 2016\n", "available%20places%20-%20primary%201617%20supp.XLSX\n", "available%20places%20-%20post-primary%201617%20supp.XLSX\n", "available%20places%20-%20nursery%201617%20supp%20final.XLSX\n", "Year: 2015\n", "Year: 2014\n", "Year: 2013\n", "Year: 2012\n", "Year: 2011\n", "Year: 2010\n", "Year: 2009\n" ] } ], "source": [ "for year, filenames in year_files.items():\n", " print(f\"Year: {year}\")\n", " for file in filenames:\n", " if file.lower().startswith('available'): \n", " print(file)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-06T13:44:22.297700Z", "start_time": "2018-06-06T13:44:22.152600Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "![](img/available_2016.png)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-06T13:47:03.275065Z", "start_time": "2018-06-06T13:47:03.153843Z" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "![](img/available_2015.png)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-06T13:48:47.979483Z", "start_time": "2018-06-06T13:48:47.856255Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "![](img/gofuckyourself.webp)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Try and identify subclasses of datasets that may be tackled automagically\n", "\n", "Ok, what about actually parsing the excel sheets? \n", "\n", "Will *they* be consistent?" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:20.354191Z", "start_time": "2018-06-08T18:12:19.752391Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "{2009: ['meta data',\n", " 'reference data',\n", " 'enrolments',\n", " 'gender',\n", " 'free school meals',\n", " 'SEN'],\n", " 2010: ['meta data',\n", " 'reference data',\n", " 'enrolments',\n", " 'gender',\n", " 'free school meals',\n", " 'SEN',\n", " 'unfilled places'],\n", " 2011: ['meta data',\n", " 'reference data',\n", " 'enrolments',\n", " 'gender',\n", " 'free school meals',\n", " 'SEN',\n", " 'unfilled places'],\n", " 2012: ['meta data',\n", " 'reference data',\n", " 'enrolments',\n", " 'gender',\n", " 'free school meals',\n", " 'SEN',\n", " 'unfilled places'],\n", " 2013: ['meta data',\n", " 'reference data',\n", " 'enrolments',\n", " 'gender',\n", " 'free school meals',\n", " 'SEN',\n", " 'unfilled places'],\n", " 2014: ['meta data',\n", " 'reference data',\n", " 'enrolments',\n", " 'gender',\n", " 'free school meals',\n", " 'SEN',\n", " 'religion',\n", " 'newcomers',\n", " 'unfilled places'],\n", " 2015: ['meta data',\n", " 'reference data',\n", " 'enrolments',\n", " 'gender',\n", " 'free school meals',\n", " 'SEN',\n", " 'religion',\n", " 'newcomers',\n", " 'unfilled places'],\n", " 2016: ['meta data',\n", " 'reference data',\n", " 'enrolments',\n", " 'free school meals',\n", " 'SEN',\n", " 'religion',\n", " 'newcomers',\n", " 'School level data',\n", " 'Overall'],\n", " 2017: ['meta data',\n", " 'reference data',\n", " 'enrolments',\n", " 'free school meals',\n", " 'SEN',\n", " 'religion',\n", " 'newcomers',\n", " 'School level data',\n", " 'Overall']}" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sheets = defaultdict(list)\n", "for year, files in year_files.items():\n", " for file in files:\n", " if 'post' in file:\n", " xls = pd.ExcelFile(f'data/education-ni/{year}/{file}')\n", " sheets[year].extend(xls.sheet_names)\n", "dict(sheets)" ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:20.365163Z", "start_time": "2018-06-08T18:12:20.359558Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[('meta data', 9),\n", " ('reference data', 9),\n", " ('enrolments', 9),\n", " ('free school meals', 9),\n", " ('SEN', 9),\n", " ('gender', 7),\n", " ('unfilled places', 6),\n", " ('religion', 4),\n", " ('newcomers', 4),\n", " ('School level data', 2),\n", " ('Overall', 2)]" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from collections import Counter\n", "all_sheet_names = Counter([_ for d in sheets.values() for _ in d])\n", "all_sheet_names.most_common()" ] }, { "cell_type": "code", "execution_count": 74, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:21.209978Z", "start_time": "2018-06-08T18:12:21.190006Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
201720162015201420132012201120102009
meta dataTrueTrueTrueTrueTrueTrueTrueTrueTrue
reference dataTrueTrueTrueTrueTrueTrueTrueTrueTrue
enrolmentsTrueTrueTrueTrueTrueTrueTrueTrueTrue
free school mealsTrueTrueTrueTrueTrueTrueTrueTrueTrue
SENTrueTrueTrueTrueTrueTrueTrueTrueTrue
religionTrueTrueTrueTrueFalseFalseFalseFalseFalse
newcomersTrueTrueTrueTrueFalseFalseFalseFalseFalse
School level dataTrueTrueFalseFalseFalseFalseFalseFalseFalse
OverallTrueTrueFalseFalseFalseFalseFalseFalseFalse
genderFalseFalseTrueTrueTrueTrueTrueTrueTrue
unfilled placesFalseFalseTrueTrueTrueTrueTrueTrueFalse
\n", "
" ], "text/plain": [ " 2017 2016 2015 2014 2013 2012 2011 2010 \\\n", "meta data True True True True True True True True \n", "reference data True True True True True True True True \n", "enrolments True True True True True True True True \n", "free school meals True True True True True True True True \n", "SEN True True True True True True True True \n", "religion True True True True False False False False \n", "newcomers True True True True False False False False \n", "School level data True True False False False False False False \n", "Overall True True False False False False False False \n", "gender False False True True True True True True \n", "unfilled places False False True True True True True True \n", "\n", " 2009 \n", "meta data True \n", "reference data True \n", "enrolments True \n", "free school meals True \n", "SEN True \n", "religion False \n", "newcomers False \n", "School level data False \n", "Overall False \n", "gender True \n", "unfilled places False " ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame.from_dict({\n", " year: [sn in sheet_names for sn in all_sheet_names] \n", " for year, sheet_names in sheets.items()\n", "}, orient='index')\n", "df.columns=all_sheet_names.keys()\n", "df.T" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Visualisation isn't just for output data...\n", "Use visualisation tools to validate your transformation assumptions..." ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T10:49:54.447901Z", "start_time": "2018-06-08T10:49:54.440639Z" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "All. The. Time." ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:23.898446Z", "start_time": "2018-06-08T18:12:23.048610Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "f,ax = plt.subplots(figsize=graph_figsize)\n", "sns.heatmap(df.T, ax=ax)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "![](img/ahhfuck.webp)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "![](img/2000.png)" ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:25.649567Z", "start_time": "2018-06-08T18:12:25.636753Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "from collections import defaultdict\n", "import numpy as np\n", "\n", "## Initialisation and re-walking already extracted\n", "## Datasets.\n", "\n", "year_files = defaultdict(list)\n", "dest = Path('./data/education-ni/')\n", "for year_p in dest.iterdir():\n", " try:\n", " year=int(year_p.parts[-1])\n", " for file in year_p.iterdir():\n", " year_files[year].append(file.parts[-1])\n", " except ValueError:\n", " pass\n", " \n", "year_files = dict(sorted(year_files.items()))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## A few highlights from the hellscape\n", "### Best thing about standards is how many there are to choose from...\n", " \n", "![](img/reference_year.png)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T11:21:41.286614Z", "start_time": "2018-06-08T11:21:41.160248Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Sometimes understanding the data is more painful (and ugly) than expected\n", "This was the only document that seemed to explain what 'supernumerary' actually means\n", "![](img/comic_sans.png)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T11:21:41.286614Z", "start_time": "2018-06-08T11:21:41.160248Z" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "It means 'extra'..." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Using multiple tools is a bitch sometimes\n", "Excel on Mac helpfully puts down a lock-entry on open excel files which prevent it from being opened by other things. \n", "\n", "Pandas occasionally has unhelpful error messages in this regard\n", "\n", "![](img/geethanks.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Sometimes you have to give up on stuff because it's too dangerous an area to walk in to without fucking up.\n", "\n", "Special Educational Needs classification policy is >>100pg policy that appears to change every year.\n", "\n", "I am not an expert on education policy so I'm not sticking my foot in that one without being sure I understand the implications." ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T11:27:37.998179Z", "start_time": "2018-06-08T11:27:37.869545Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### \"Machine Readable\"\n", "\n", "![](img/machinereadable.jpg)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T11:27:57.913971Z", "start_time": "2018-06-08T11:27:57.786352Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "![](img/starman.png)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T11:27:57.913971Z", "start_time": "2018-06-08T11:27:57.786352Z" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T11:27:57.913971Z", "start_time": "2018-06-08T11:27:57.786352Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T11:27:57.913971Z", "start_time": "2018-06-08T11:27:57.786352Z" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "![](img/footer.png)" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:50.054332Z", "start_time": "2018-06-08T18:12:48.563322Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Got reference data for 2009\n", "Got enrolment data for 2009\n", "Got fsm data for 2009\n", "Got reference data for 2010\n", "Got enrolment data for 2010\n", "Got available data for 2010\n", "Got fsm data for 2010\n", "Got reference data for 2011\n", "Got enrolment data for 2011\n", "Got available data for 2011\n", "Got fsm data for 2011\n", "Got reference data for 2012\n", "Got enrolment data for 2012\n", "Got available data for 2012\n", "Got fsm data for 2012\n", "Got reference data for 2013\n", "Got enrolment data for 2013\n", "Got available data for 2013\n", "Got fsm data for 2013\n", "Got reference data for 2014\n", "Got enrolment data for 2014\n", "Got available data for 2014\n", "Got fsm data for 2014\n", "Got reference data for 2015\n", "Got enrolment data for 2015\n", "Got available data for 2015\n", "Got fsm data for 2015\n", "Got reference data for 2016\n", "Got enrolment data for 2016\n", "Got fsm data for 2016\n", "Got available data for 2016\n", "Got available data for 2017\n", "Got reference data for 2017\n", "Got enrolment data for 2017\n", "Got fsm data for 2017\n" ] } ], "source": [ "def parse_reference_table(xls):\n", " \"\"\"\n", " From an ExcelFile, clean up:\n", " * School Mgmt Type disaster\n", " * Inconsistent header depth\n", " * Multi-row header names\n", " * inconsistent headers (ref_key_map)\n", " * inconsistent col order\n", " * inconsistent caps/spacing (strip|lower)\n", " \"\"\"\n", " cols= [\n", " 'de ref',\n", " 'school name',\n", " 'school type',\n", " 'address 1',\n", " 'postcode',\n", " 'urban_rural',\n", " 'school management type',\n", " 'district council',\n", " 'parliamentary constituency',\n", " 'town'\n", " ]\n", " \n", " categories = [\n", " 'school type',\n", " 'urban_rural',\n", " 'school management type',\n", " 'district council',\n", " 'parliamentary constituency',\n", " 'town'\n", " ]\n", "\n", " ref_key_map={\n", " 'denino':'de ref',\n", " 'urban/ rural': 'urban_rural',\n", " 'schoolname': 'school name'\n", " }\n", " \n", " reference_value_rename = {\n", " 'school management type':{\n", " 'gmi':'integrated',\n", " 'controlled integrated':'integrated',\n", " 'roman catholic maintained':'rc maintained',\n", " 'grant maintained integrated':'integrated',\n", " 'voluntary - other managed':'voluntary',\n", " 'voluntary - rc managed':'voluntary',\n", " 'catholic maintained':'rc maintained'\n", " }\n", " }\n", " join_n_strip_n_lower = lambda l: ' '.join(l).strip().lower()\n", " \n", " if 'reference data' in xls.sheet_names:\n", " df = pd.read_excel(xls, 'reference data', header=None)\n", " h_range = 2 if isinstance(df.ix[3,0], int) else 3\n", " try:\n", " df.columns=df.ix[1:h_range].fillna('').apply(join_n_strip_n_lower, axis=0).values\n", " df.rename(columns=ref_key_map, inplace=True)\n", " df = df.drop(df.index[0:h_range+1]).reset_index(drop=True)\n", " df = df[cols]\n", " df['de ref'] = df['de ref'].astype(int)\n", " df.set_index('de ref', inplace=True)\n", " for c in df:\n", " df[c]=df[c].str.lower().str.strip() \n", " df.replace(reference_value_rename, inplace=True)\n", " for c in categories:\n", " df[c].fillna('NA', inplace=True)\n", " df[c] = df[c].astype('category')\n", " except TypeError as e:\n", " print(e)\n", " else:\n", " df=None\n", " return df\n", "\n", "def parse_enrolments_table(xls):\n", " \"\"\"From an ExcelFile, clean up:\n", " * Inconsistent header depth\n", " * fucked up nans/nulls all over the place\n", " * inconsistent *footer* depth...\n", " * Set de ref as join index and drop pointless fields\n", " \"\"\"\n", " def join_n_strip_n_lower(l): return ' '.join(l).strip().lower()\n", "\n", " def strip_n_lower(s): return s.strip().lower()\n", "\n", " def unyearify(s): return int(s.replace('year ', ''))\n", "\n", " if 'enrolments' in xls.sheet_names:\n", " df = pd.read_excel(xls, 'enrolments', header=None, skip_footer=5)\n", " h_range = 2 if isinstance(df.ix[3, 0], int) else 3\n", " try:\n", " df.columns = df.ix[3].fillna('').apply(strip_n_lower).values\n", " df = df.drop(df.index[0:h_range+1]).reset_index(drop=True)\n", " df.dropna(how='all', inplace=True, axis=0)\n", " df['de ref'] = df['de ref'].astype(int)\n", " df.drop('schoolname', axis=1, inplace=True)\n", " df.drop('total pupils', axis=1, inplace=True)\n", " df.set_index('de ref', inplace=True)\n", " df.rename(columns=unyearify, inplace=True)\n", " df = df.astype(float)\n", " except TypeError as e:\n", " print(e)\n", " else:\n", " df = None\n", " return df\n", "\n", "def parse_fsm_table(xls):\n", " \"\"\"From an ExcelFile, clean up:\n", " * Inconsistent header depth\n", " * fucked up nans/nulls all over the place\n", " * inconsistent *footer* depth...\n", " * Set de ref as join index and drop pointless fields\n", " \"\"\"\n", " join_n_strip_n_lower = lambda l: ' '.join(l).strip().lower()\n", " strip_n_lower = lambda s: s.strip().lower()\n", " unyearify = lambda s: int(s.replace('year ',''))\n", " \n", " if 'free school meals' in xls.sheet_names:\n", " df = pd.read_excel(xls, 'free school meals', header=None, skip_footer=5)\n", " h_range = 2 if isinstance(df.ix[3,0], int) else 3\n", " try:\n", " df.columns=df.ix[3].fillna('').apply(strip_n_lower).values\n", " df = df.drop(df.index[0:h_range+1]).reset_index(drop=True)\n", " df.dropna(how='all', inplace=True, axis=0)\n", " df['de ref'] = df['de ref'].astype(int)\n", " df.drop('schoolname',axis=1, inplace=True)\n", " df.drop('free school meals', axis=1, inplace=True)\n", " df.set_index('de ref', inplace=True)\n", " df.replace('#',pd.np.nan, inplace=True) # # = Undisclosed\n", " df.replace('*',2.0, inplace=True) # * == < 5\n", " df.replace('!',1, inplace=True) # ! avoid identification, so it's prob one or two\n", " \n", " df=df.astype(float)\n", " except TypeError as e:\n", " print(e)\n", " else:\n", " df=None\n", " return df\n", "\n", "def parse_available_table(xls):\n", " \"\"\"From an ExcelFile, clean up:\n", " * Inconsistent header depth\n", " * fucked up nans/nulls all over the place\n", " * inconsistent *footer* depth...\n", " * Set de ref as join index and drop pointless fields\n", " * Totally different schemas between years\n", " * Inconsistent metric naming\n", " * non numerical data flags (*/!)\n", " \"\"\"\n", " ref_key_map={\n", " 'schoolname': 'school name',\n", " 'total unfilled places': 'available places',\n", " 'unfilled places': 'available places',\n", " 'total approved enrolment number': 'approved enrolments'\n", " }\n", " \n", " join_n_strip_n_lower = lambda l: ' '.join(l).strip().lower()\n", " \n", " if 'School level data' in xls.sheet_names:\n", " df = pd.read_excel(xls, 'School level data', header=None)\n", " h_range = 2 if isinstance(df.ix[3,0], int) else 3\n", " elif 'unfilled places' in xls.sheet_names:\n", " df = pd.read_excel(xls, 'unfilled places', header=None)\n", " h_range = 2 if isinstance(df.ix[3,0], int) else 3\n", " else:\n", " df=None\n", " \n", " if df is not None:\n", " try:\n", " df.columns=df.ix[1:h_range].fillna('').apply(join_n_strip_n_lower, axis=0).values\n", " df.rename(columns=ref_key_map, inplace=True)\n", " df = df.drop(df.index[0:h_range+1]).reset_index(drop=True)\n", " df=df.applymap(lambda x: np.nan if isinstance(x, str) and x.isspace() else x)\n", " df.dropna(how='all', axis=1, inplace=True)\n", " df.dropna(how='any', axis=0, inplace=True)\n", " if df.shape[1] == 6: # recent doesn't have fecking headers\n", " cols = list(df.columns)\n", " cols[0] = 'de ref'\n", " cols[1] = 'school name'\n", " df.columns=cols\n", " df.drop('school name', axis=1, inplace=True)\n", " df['de ref'] = df['de ref'].astype(int)\n", " df.set_index('de ref', inplace=True)\n", " df.replace('*',2.0, inplace=True) # * == < 5\n", " df.replace('!',1, inplace=True) # ! avoid identification, so it's prob one or two\n", " df.dropna(how='all', inplace=True, axis=1)\n", " df.astype(int, inplace=True)\n", " \n", "\n", " \n", " except TypeError as e:\n", " print(e)\n", "\n", " return df\n", "\n", "re_dfs={}\n", "av_dfs={}\n", "en_dfs={}\n", "fsm_dfs={}\n", "for year, files in year_files.items():\n", " for file in files:\n", " if 'post' in file:\n", " xls = pd.ExcelFile(f'data/education-ni/{year}/{file}')\n", " df = parse_reference_table(xls)\n", " if df is not None:\n", " print(f'Got reference data for {year}')\n", " re_dfs[year]=df\n", " df = parse_enrolments_table(xls)\n", " if df is not None:\n", " print(f'Got enrolment data for {year}')\n", " en_dfs[year]=df\n", " df = parse_available_table(xls)\n", " if df is not None:\n", " print(f'Got available data for {year}')\n", " av_dfs[year]=df\n", " df = parse_fsm_table(xls)\n", " if df is not None:\n", " print(f'Got fsm data for {year}')\n", " fsm_dfs[year]=df\n", " \n", "reference = pd.Panel(re_dfs)\n", "available = pd.Panel(av_dfs)\n", "enrolment = pd.Panel(en_dfs)\n", "fsm = pd.Panel(fsm_dfs)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Bring it all together\n", "Panels are 3D Dataframes, i.e. [Year x School x Metric]\n", "\n", "* Reference: School name, address, denomination, type, etc.\n", "* Available: Allocated places information\n", "* Enrolment: Actual student numbers\n", "* FSM: Free School Meals: Laziest possible deprivation measure, probably doesn't need to be a panel" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Show me the data\n", "\n", "## Line graphs & boxplots & pie charts, Oh My\n" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T12:03:14.127421Z", "start_time": "2018-06-08T12:03:13.995921Z" }, "slideshow": { "slide_type": "fragment" } }, "source": [ "![](img/ohmy.gif)" ] }, { "cell_type": "code", "execution_count": 230, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:12:21.271947Z", "start_time": "2018-06-09T09:12:21.265907Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "\n", "Dimensions: 9 (items) x 232 (major_axis) x 8 (minor_axis)\n", "Items axis: 2009 to 2017\n", "Major_axis axis: 1210014 to 5420314\n", "Minor_axis axis: 8 to 15" ] }, "execution_count": 230, "metadata": {}, "output_type": "execute_result" } ], "source": [ "enrolment" ] }, { "cell_type": "code", "execution_count": 83, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:52.928079Z", "start_time": "2018-06-08T18:12:52.910449Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
200920102011201220132014201520162017
823116.023113.021770.021322.021418.021367.021792.022571.022817.0
923859.023403.022925.021928.021425.021481.021422.022284.022650.0
1022954.024155.023245.023101.021971.021527.021443.021864.022381.0
1123521.023277.024094.023524.023299.022092.021601.022118.022102.0
1223808.023656.022967.024027.023353.023166.021864.022091.022099.0
1314912.015652.015421.015892.016567.016208.015912.015667.015347.0
1412607.013097.013274.013482.013554.014174.013922.013818.013149.0
15100.0154.0154.0196.0201.0275.0365.00.00.0
\n", "
" ], "text/plain": [ " 2009 2010 2011 2012 2013 2014 2015 2016 \\\n", "8 23116.0 23113.0 21770.0 21322.0 21418.0 21367.0 21792.0 22571.0 \n", "9 23859.0 23403.0 22925.0 21928.0 21425.0 21481.0 21422.0 22284.0 \n", "10 22954.0 24155.0 23245.0 23101.0 21971.0 21527.0 21443.0 21864.0 \n", "11 23521.0 23277.0 24094.0 23524.0 23299.0 22092.0 21601.0 22118.0 \n", "12 23808.0 23656.0 22967.0 24027.0 23353.0 23166.0 21864.0 22091.0 \n", "13 14912.0 15652.0 15421.0 15892.0 16567.0 16208.0 15912.0 15667.0 \n", "14 12607.0 13097.0 13274.0 13482.0 13554.0 14174.0 13922.0 13818.0 \n", "15 100.0 154.0 154.0 196.0 201.0 275.0 365.0 0.0 \n", "\n", " 2017 \n", "8 22817.0 \n", "9 22650.0 \n", "10 22381.0 \n", "11 22102.0 \n", "12 22099.0 \n", "13 15347.0 \n", "14 13149.0 \n", "15 0.0 " ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "enrolment.sum()" ] }, { "cell_type": "code", "execution_count": 231, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:12:28.417263Z", "start_time": "2018-06-09T09:12:28.393193Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "line": { "color": "rgba(255, 153, 51, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "None", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 144877, 146507, 143850, 143472, 141788, 140290, 138321, 140413, 140545 ] } ], "layout": { "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "titlefont": { "color": "#4D5663" }, "xaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" }, "yaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "enrolment.sum().sum().iplot()" ] }, { "cell_type": "code", "execution_count": 85, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:54.616576Z", "start_time": "2018-06-08T18:12:54.405782Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "enrolment.sum().sum(axis=1).plot.bar(ax=ax)" ] }, { "cell_type": "code", "execution_count": 232, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:12:40.352994Z", "start_time": "2018-06-09T09:12:40.323676Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "color": "rgba(255, 153, 51, 0.6)", "line": { "color": "rgba(255, 153, 51, 1.0)", "width": 1 } }, "name": "2009", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 23116, 23859, 22954, 23521, 23808, 14912, 12607, 100 ] }, { "marker": { "color": "rgba(55, 128, 191, 0.6)", "line": { "color": "rgba(55, 128, 191, 1.0)", "width": 1 } }, "name": "2010", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 23113, 23403, 24155, 23277, 23656, 15652, 13097, 154 ] }, { "marker": { "color": "rgba(50, 171, 96, 0.6)", "line": { "color": "rgba(50, 171, 96, 1.0)", "width": 1 } }, "name": "2011", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 21770, 22925, 23245, 24094, 22967, 15421, 13274, 154 ] }, { "marker": { "color": "rgba(128, 0, 128, 0.6)", "line": { "color": "rgba(128, 0, 128, 1.0)", "width": 1 } }, "name": "2012", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 21322, 21928, 23101, 23524, 24027, 15892, 13482, 196 ] }, { "marker": { "color": "rgba(219, 64, 82, 0.6)", "line": { "color": "rgba(219, 64, 82, 1.0)", "width": 1 } }, "name": "2013", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 21418, 21425, 21971, 23299, 23353, 16567, 13554, 201 ] }, { "marker": { "color": "rgba(0, 128, 128, 0.6)", "line": { "color": "rgba(0, 128, 128, 1.0)", "width": 1 } }, "name": "2014", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 21367, 21481, 21527, 22092, 23166, 16208, 14174, 275 ] }, { "marker": { "color": "rgba(255, 255, 51, 0.6)", "line": { "color": "rgba(255, 255, 51, 1.0)", "width": 1 } }, "name": "2015", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 21792, 21422, 21443, 21601, 21864, 15912, 13922, 365 ] }, { "marker": { "color": "rgba(128, 128, 0, 0.6)", "line": { "color": "rgba(128, 128, 0, 1.0)", "width": 1 } }, "name": "2016", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 22571, 22284, 21864, 22118, 22091, 15667, 13818, 0 ] }, { "marker": { "color": "rgba(251, 128, 114, 0.6)", "line": { "color": "rgba(251, 128, 114, 1.0)", "width": 1 } }, "name": "2017", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 22817, 22650, 22381, 22102, 22099, 15347, 13149, 0 ] } ], "layout": { "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "titlefont": { "color": "#4D5663" }, "xaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" }, "yaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "enrolment.sum().iplot(kind='bar')" ] }, { "cell_type": "code", "execution_count": 233, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:12:45.433278Z", "start_time": "2018-06-09T09:12:45.407873Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "color": "rgba(255, 153, 51, 0.6)", "line": { "color": "rgba(255, 153, 51, 1.0)", "width": 1 } }, "name": "2009", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 23116, 23859, 22954, 23521, 23808, 14912, 12607, 100 ] }, { "marker": { "color": "rgba(55, 128, 191, 0.6)", "line": { "color": "rgba(55, 128, 191, 1.0)", "width": 1 } }, "name": "2010", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 23113, 23403, 24155, 23277, 23656, 15652, 13097, 154 ] }, { "marker": { "color": "rgba(50, 171, 96, 0.6)", "line": { "color": "rgba(50, 171, 96, 1.0)", "width": 1 } }, "name": "2011", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 21770, 22925, 23245, 24094, 22967, 15421, 13274, 154 ] }, { "marker": { "color": "rgba(128, 0, 128, 0.6)", "line": { "color": "rgba(128, 0, 128, 1.0)", "width": 1 } }, "name": "2012", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 21322, 21928, 23101, 23524, 24027, 15892, 13482, 196 ] }, { "marker": { "color": "rgba(219, 64, 82, 0.6)", "line": { "color": "rgba(219, 64, 82, 1.0)", "width": 1 } }, "name": "2013", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 21418, 21425, 21971, 23299, 23353, 16567, 13554, 201 ] }, { "marker": { "color": "rgba(0, 128, 128, 0.6)", "line": { "color": "rgba(0, 128, 128, 1.0)", "width": 1 } }, "name": "2014", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 21367, 21481, 21527, 22092, 23166, 16208, 14174, 275 ] }, { "marker": { "color": "rgba(255, 255, 51, 0.6)", "line": { "color": "rgba(255, 255, 51, 1.0)", "width": 1 } }, "name": "2015", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 21792, 21422, 21443, 21601, 21864, 15912, 13922, 365 ] }, { "marker": { "color": "rgba(128, 128, 0, 0.6)", "line": { "color": "rgba(128, 128, 0, 1.0)", "width": 1 } }, "name": "2016", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 22571, 22284, 21864, 22118, 22091, 15667, 13818, 0 ] }, { "marker": { "color": "rgba(251, 128, 114, 0.6)", "line": { "color": "rgba(251, 128, 114, 1.0)", "width": 1 } }, "name": "2017", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 22817, 22650, 22381, 22102, 22099, 15347, 13149, 0 ] } ], "layout": { "barmode": "stack", "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" }, "traceorder": "normal" }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "titlefont": { "color": "#4D5663" }, "xaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" }, "yaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "enrolment.sum().iplot(kind='bar',barmode='stack')" ] }, { "cell_type": "code", "execution_count": 234, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:12:49.126455Z", "start_time": "2018-06-09T09:12:49.096375Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "color": "rgba(255, 153, 51, 0.6)", "line": { "color": "rgba(255, 153, 51, 1.0)", "width": 1 } }, "name": "2009", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 0.1595560371901682, 0.16468452549403978, 0.1584378472773456, 0.16235151197222472, 0.16433250274370673, 0.10292869123463351, 0.08701864340095392, 0.0006902406869275316 ] }, { "marker": { "color": "rgba(55, 128, 191, 0.6)", "line": { "color": "rgba(55, 128, 191, 1.0)", "width": 1 } }, "name": "2010", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 0.15776038005009999, 0.15973980765424178, 0.16487266820015425, 0.1588797804883043, 0.16146668759854477, 0.10683448572423161, 0.0893950459704997, 0.0010511443139235668 ] }, { "marker": { "color": "rgba(50, 171, 96, 0.6)", "line": { "color": "rgba(50, 171, 96, 1.0)", "width": 1 } }, "name": "2011", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 0.15133819951338198, 0.15936739659367397, 0.1615919360444908, 0.16749391727493917, 0.15965936739659367, 0.10720194647201947, 0.09227667709419535, 0.0010705596107055961 ] }, { "marker": { "color": "rgba(128, 0, 128, 0.6)", "line": { "color": "rgba(128, 0, 128, 1.0)", "width": 1 } }, "name": "2012", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 0.1486143637782982, 0.15283818445410952, 0.16101399576223932, 0.16396230623396899, 0.1674682167949147, 0.11076725772276123, 0.0939695550351288, 0.001366120218579235 ] }, { "marker": { "color": "rgba(219, 64, 82, 0.6)", "line": { "color": "rgba(219, 64, 82, 1.0)", "width": 1 } }, "name": "2013", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 0.1510565068976218, 0.1511058763788191, 0.15495669591220695, 0.16432279177363388, 0.16470364205715576, 0.11684345642790646, 0.0955934211639913, 0.001417609388664767 ] }, { "marker": { "color": "rgba(0, 128, 128, 0.6)", "line": { "color": "rgba(0, 128, 128, 1.0)", "width": 1 } }, "name": "2014", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 0.1523059377004776, 0.15311854016679735, 0.15344643239004918, 0.1574738042625989, 0.16512937486634827, 0.11553211205360325, 0.10103357331242427, 0.00196022524770119 ] }, { "marker": { "color": "rgba(255, 255, 51, 0.6)", "line": { "color": "rgba(255, 255, 51, 1.0)", "width": 1 } }, "name": "2015", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 0.15754657644175504, 0.15487163915819, 0.1550234599229329, 0.15616573043861742, 0.15806710477801636, 0.11503676231374846, 0.10064993746430405, 0.0026387894824357835 ] }, { "marker": { "color": "rgba(128, 128, 0, 0.6)", "line": { "color": "rgba(128, 128, 0, 1.0)", "width": 1 } }, "name": "2016", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 0.160747224259862, 0.15870325397221055, 0.15571207794150113, 0.1575210272553111, 0.15732873736762265, 0.11157798779315306, 0.09840969141033949, 0 ] }, { "marker": { "color": "rgba(251, 128, 114, 0.6)", "line": { "color": "rgba(251, 128, 114, 1.0)", "width": 1 } }, "name": "2017", "orientation": "v", "text": "", "type": "bar", "x": [ 8, 9, 10, 11, 12, 13, 14, 15 ], "y": [ 0.1623465793873848, 0.16115834786011599, 0.15924437013056317, 0.15725924081255113, 0.15723789533601337, 0.10919634280835319, 0.09355722366501833, 0 ] } ], "layout": { "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "titlefont": { "color": "#4D5663" }, "xaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" }, "yaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "(enrolment.sum()/enrolment.sum().sum()).iplot(kind='bar')" ] }, { "cell_type": "code", "execution_count": 89, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:57.434596Z", "start_time": "2018-06-08T18:12:57.417740Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
200920102011201220132014201520162017
de ref
1210014672.0688.0703.0708.0704.0697.0704.0696.0691.0
1210015647.0650.0649.0666.0709.0737.0744.0728.0740.0
1210021963.0929.0899.0930.0916.0884.0910.0954.0946.0
1210022907.0932.0913.0930.0943.0969.0968.0991.0997.0
1210266297.0290.0264.0247.088.00.00.00.00.0
\n", "
" ], "text/plain": [ " 2009 2010 2011 2012 2013 2014 2015 2016 2017\n", "de ref \n", "1210014 672.0 688.0 703.0 708.0 704.0 697.0 704.0 696.0 691.0\n", "1210015 647.0 650.0 649.0 666.0 709.0 737.0 744.0 728.0 740.0\n", "1210021 963.0 929.0 899.0 930.0 916.0 884.0 910.0 954.0 946.0\n", "1210022 907.0 932.0 913.0 930.0 943.0 969.0 968.0 991.0 997.0\n", "1210266 297.0 290.0 264.0 247.0 88.0 0.0 0.0 0.0 0.0" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "enrolment.sum(axis=2).head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Skippable aside: Danger Zone\n", "![](img/danger.gif)\n", "\n", "__When is a zero not nothing?__" ] }, { "cell_type": "code", "execution_count": 90, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:12:59.345382Z", "start_time": "2018-06-08T18:12:59.340547Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[10, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[10]+[np.nan]*10" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:13:00.237986Z", "start_time": "2018-06-08T18:13:00.232497Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "nan" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum([10]+[np.nan]*10)" ] }, { "cell_type": "code", "execution_count": 92, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:13:01.167000Z", "start_time": "2018-06-08T18:13:01.161862Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "10.0" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.Series([10]+[np.nan]*10).sum()" ] }, { "cell_type": "code", "execution_count": 93, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:13:01.968339Z", "start_time": "2018-06-08T18:13:01.963391Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "10.0" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.Series([10]+[np.nan]*10).mean()" ] }, { "cell_type": "code", "execution_count": 94, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:13:02.755439Z", "start_time": "2018-06-08T18:13:02.750472Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.Series([np.nan]*10).sum()" ] }, { "cell_type": "code", "execution_count": 95, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:13:04.097779Z", "start_time": "2018-06-08T18:13:04.092546Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "0.9090909090909091" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.Series([10]+[0.0]*10).mean()" ] }, { "cell_type": "code", "execution_count": 96, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:13:05.008239Z", "start_time": "2018-06-08T18:13:05.001162Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "142229.22222222225" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Average 'throughput' of a school, right?\n", "enrolment.sum(axis=2).mean(axis=1).sum()" ] }, { "cell_type": "code", "execution_count": 97, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:13:05.967443Z", "start_time": "2018-06-08T18:13:05.959648Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "155243.9103174603" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "enrolment.sum(axis=2).replace(0.0, np.nan).mean(axis=1).sum()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Return of regular schedule - WTF happened to average cohort sizes in 2015?" ] }, { "cell_type": "code", "execution_count": 235, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:13:27.935140Z", "start_time": "2018-06-09T09:13:27.696594Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "line": { "color": "rgba(255, 153, 51, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1210014", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 84, 86, 87.875, 88.5, 88, 87.125, 88, 99.42857142857143, 98.71428571428571 ] }, { "line": { "color": "rgba(55, 128, 191, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1210015", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 80.875, 81.25, 81.125, 83.25, 88.625, 92.125, 93, 104, 105.71428571428571 ] }, { "line": { "color": "rgba(50, 171, 96, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1210021", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 120.375, 116.125, 112.375, 116.25, 114.5, 110.5, 113.75, 136.28571428571428, 135.14285714285714 ] }, { "line": { "color": "rgba(128, 0, 128, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1210022", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 113.375, 116.5, 114.125, 116.25, 117.875, 121.125, 121, 141.57142857142858, 142.42857142857142 ] }, { "line": { "color": "rgba(219, 64, 82, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1210266", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 37.125, 36.25, 33, 30.875, 11, "", "", "", "" ] }, { "line": { "color": "rgba(0, 128, 128, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230026", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 98, 98.125, 95.5, 95.625, 88.125, 84.875, 84.25, 93.42857142857143, "" ] }, { "line": { "color": "rgba(255, 255, 51, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230053", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 193.375, 191.25, 191.25, 190.125, 189.5, 189.75, 184.25, 202.85714285714286, 205 ] }, { "line": { "color": "rgba(128, 128, 0, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230089", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 86.375, 85.875, 86.25, 86.5, 85.5, 80.5, 79.625, 90.42857142857143, "" ] }, { "line": { "color": "rgba(251, 128, 114, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230104", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 54.75, 53.625, 48, 45.875, 52.875, 54.125, 55.75, 64.57142857142857, 64.28571428571429 ] }, { "line": { "color": "rgba(128, 177, 211, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230130", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 58.5, 55, 50.75, 48.5, 44, 39.5, 34.125, 34.285714285714285, 34.714285714285715 ] }, { "line": { "color": "rgba(128, 177, 211, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230146", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 63.5, 64.125, 66, 66.125, 61.25, 61.25, 62.25, 71.42857142857143, 75 ] }, { "line": { "color": "rgba(255, 153, 51, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230155", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 126.375, 128.375, 130.375, 133.625, 134.75, 132.625, 133.75, 151.28571428571428, 146 ] }, { "line": { "color": "rgba(55, 128, 191, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230173", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 28.375, 25, 20, 13.75, "", "", "", "", "" ] }, { "line": { "color": "rgba(50, 171, 96, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230182", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 139.5, 136, 136, 137.25, 136.625, 139.5, 139.625, 157.71428571428572, 136.85714285714286 ] }, { "line": { "color": "rgba(128, 0, 128, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230262", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 71, 66.125, 59.5, 55, 51.625, 43, 38.875, 36.857142857142854, 33.285714285714285 ] }, { "line": { "color": "rgba(219, 64, 82, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230275", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 73.375, 70.75, 68.75, 67.25, 71.375, 79.25, 78.625, 90.14285714285714, 94 ] }, { "line": { "color": "rgba(0, 128, 128, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230321", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", "", "", "", "", "", "", "", 181.57142857142858 ] }, { "line": { "color": "rgba(255, 255, 51, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1240291", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 70.125, 69.125, 68.75, 67.625, 70.5, 72.625, 75.625, 92.28571428571429, 93 ] }, { "line": { "color": "rgba(128, 128, 0, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1260269", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 108.125, 107.75, 108, 108.5, 111.75, 114.5, 112.5, 133.71428571428572, 136.28571428571428 ] }, { "line": { "color": "rgba(251, 128, 114, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1260294", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 93.875, 93.75, 88.75, 88.5, 82, 77.125, 73.875, 76.42857142857143, 69.28571428571429 ] }, { "line": { "color": "rgba(251, 128, 114, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1410079", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 135.875, 135.75, 136.25, 136.25, 136.25, 136.25, 135.875, 155.14285714285714, 154.28571428571428 ] }, { "line": { "color": "rgba(128, 177, 211, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1410270", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 97.25, 96.875, 97.875, 97.875, 100.5, 101.875, 98.75, 109.28571428571429, 106 ] }, { "line": { "color": "rgba(255, 153, 51, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1410315", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", "", "", "", "", 86.875, 86.375, 98.28571428571429, 100 ] }, { "line": { "color": "rgba(55, 128, 191, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420018", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 89, 89, 89.875, 88.625, 87, "", "", "", "" ] }, { "line": { "color": "rgba(50, 171, 96, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420020", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 114.125, 116.125, 112, 112.625, 111.5, 112.375, 112.5, 131.57142857142858, 131.71428571428572 ] }, { "line": { "color": "rgba(128, 0, 128, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420021", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 145.375, 147.625, 149.5, 150.625, 151, 150, 148.25, 165.85714285714286, 166.42857142857142 ] }, { "line": { "color": "rgba(219, 64, 82, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420022", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 222, 222.125, 222.875, 223, 219.125, 223.5, 222, 253.85714285714286, 253.71428571428572 ] }, { "line": { "color": "rgba(0, 128, 128, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420027", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 129.75, 130.125, 131.25, 130.625, 129.375, 126.125, 128.125, 146.42857142857142, 144.57142857142858 ] }, { "line": { "color": "rgba(255, 255, 51, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420028", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 175.125, 177, 177.625, 175.375, 176.125, 174.5, 175, 203, 208.71428571428572 ] }, { "line": { "color": "rgba(128, 128, 0, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420029", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 125.5, 124.375, 125, 125.375, 127.75, 127.625, 128.875, 147.71428571428572, 144.57142857142858 ] }, { "line": { "color": "rgba(128, 128, 0, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420030", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 127.25, 128.125, 128, 129.125, 133.5, 133.875, 132.125, 154, 156.28571428571428 ] }, { "line": { "color": "rgba(251, 128, 114, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420082", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 128.875, 127, 125.875, 126.5, 128.75, 127.875, 128.25, 143.57142857142858, 143 ] }, { "line": { "color": "rgba(128, 177, 211, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420089", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 93.625, 94.5, 95.75, 96.25, 97.125, 97.625, 97.875, 110.28571428571429, 111.14285714285714 ] }, { "line": { "color": "rgba(255, 153, 51, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420095", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 159.625, 159.375, 159.125, 159.125, 158.125, 159.25, 159.5, 181.28571428571428, 181.42857142857142 ] }, { "line": { "color": "rgba(55, 128, 191, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420264", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 108, 108.75, 108.625, 109.25, 112.5, 112.125, 109.25, 125.85714285714286, 128.14285714285714 ] }, { "line": { "color": "rgba(50, 171, 96, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420265", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 86.625, 88.75, 89.75, 88.5, 89.25, 87.125, 87.125, 100.28571428571429, 99.71428571428571 ] }, { "line": { "color": "rgba(128, 0, 128, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420277", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 101.25, 100.75, 102.25, 102.375, 101.125, 100.875, 101.375, 115.85714285714286, 116.42857142857143 ] }, { "line": { "color": "rgba(219, 64, 82, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210065", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 58, 59.625, 59.125, 58.875, 54.625, 57.375, 52.625, 58, 56.57142857142857 ] }, { "line": { "color": "rgba(0, 128, 128, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210080", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 17.75, 16.5, 16.625, 13.375, "", "", "", "", "" ] }, { "line": { "color": "rgba(255, 255, 51, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210125", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 59.75, 55.625, 53.75, 50.375, 50.375, 49.5, 49.75, 58.857142857142854, 60.142857142857146 ] }, { "line": { "color": "rgba(255, 255, 51, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210164", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 37.5, 34.5, "", "", "", "", "", "", "" ] }, { "line": { "color": "rgba(128, 128, 0, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210302", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 92.5, 93.5, 94.625, 94.625, 94, 91.125, 90.125, 102.85714285714286, 105.85714285714286 ] }, { "line": { "color": "rgba(251, 128, 114, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210305", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 76.75, 71.75, 67.25, 60.625, "", "", "", "", "" ] }, { "line": { "color": "rgba(128, 177, 211, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210306", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 111.625, 108.375, 103.75, 97.625, 96.25, 83, 72, 83.85714285714286, 85.14285714285714 ] }, { "line": { "color": "rgba(255, 153, 51, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210312", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", "", "", "", 67.125, 64.875, 60.125, 68.42857142857143, 73.14285714285714 ] }, { "line": { "color": "rgba(55, 128, 191, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230077", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 90.875, 90.625, 89.625, 85.375, 81.75, 78, 75.875, 81.57142857142857, 78.85714285714286 ] }, { "line": { "color": "rgba(50, 171, 96, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230081", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 106.75, 107.875, 108.875, 109.125, 110.875, 110, 108.125, 123.71428571428571, 123.42857142857143 ] }, { "line": { "color": "rgba(128, 0, 128, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230085", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 17.125, 18.125, 16.625, 17, 15.125, 13.625, 11.125, 12, 12.142857142857142 ] }, { "line": { "color": "rgba(219, 64, 82, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230099", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 41.375, 40.125, 40.375, 39.75, 41.25, 41, 42, 46.857142857142854, 45.42857142857143 ] }, { "line": { "color": "rgba(0, 128, 128, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230100", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 30.375, 29.75, 28.875, 29, 31.125, 33.25, 32.75, 35, 34.142857142857146 ] }, { "line": { "color": "rgba(0, 128, 128, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230109", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 20.5, 20.75, 20.125, 23.375, 22.75, 18.75, 17.375, 18.142857142857142, 17.142857142857142 ] }, { "line": { "color": "rgba(255, 255, 51, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230111", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 18.25, 15.625, 15.875, 7.25, "", "", "", "", "" ] }, { "line": { "color": "rgba(128, 128, 0, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230122", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 65.75, 65.75, 64, 64.25, 65.375, 65.5, 64.625, 71.28571428571429, 69.42857142857143 ] }, { "line": { "color": "rgba(251, 128, 114, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230131", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 109.375, 110.625, 111.5, 113.75, 117, 112.5, 108.5, 113, 102.85714285714286 ] }, { "line": { "color": "rgba(128, 177, 211, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230138", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 60.625, 59.125, 58, 61.25, 61.125, 61.125, 63.625, 72.71428571428571, 72 ] }, { "line": { "color": "rgba(255, 153, 51, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230144", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 41.375, 42, 40.375, 35.875, 35, 32.75, 32.25, 34.42857142857143, 37.285714285714285 ] }, { "line": { "color": "rgba(55, 128, 191, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230148", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 18.125, 17.5, 18.375, 21.125, 23.125, 22.125, 22.125, 25.428571428571427, 24.857142857142858 ] }, { "line": { "color": "rgba(50, 171, 96, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230166", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 20.875, 22.125, 21.25, 22.125, 21.375, 22, 22.25, 28.857142857142858, 29.714285714285715 ] }, { "line": { "color": "rgba(128, 0, 128, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230180", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 22.5, 23.75, 21.75, 16.75, 13.875, 9.75, 7, 6.333333333333333, "" ] }, { "line": { "color": "rgba(219, 64, 82, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230181", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 28.875, 25.75, 21.25, 8, "", "", "", "", "" ] }, { "line": { "color": "rgba(219, 64, 82, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230188", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 108.25, 108.875, 108.375, 107, 107, 104.625, 102.625, 112, 113.85714285714286 ] }, { "line": { "color": "rgba(0, 128, 128, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230190", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 43.25, 47, 46.375, 52.875, 53.375, 58.75, 61.25, 76.14285714285714, "" ] }, { "line": { "color": "rgba(255, 255, 51, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230225", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 90.25, 85.875, 80.875, 72.875, 66, 64.25, 70.125, 85.71428571428571, 93.42857142857143 ] }, { "line": { "color": "rgba(128, 128, 0, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230254", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 29.75, 27.875, 25.25, 22.5, 15.375, 5.25, "", "", "" ] }, { "line": { "color": "rgba(251, 128, 114, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230298", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 121.875, 119.375, 115.125, 115.25, 114.25, 110.25, 104.625, 109.57142857142857, 106 ] }, { "line": { "color": "rgba(128, 177, 211, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230301", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 173.75, 182.75, 188.625, 193.75, 194.25, 201.875, 192.375, 223.42857142857142, 226.14285714285714 ] }, { "line": { "color": "rgba(255, 153, 51, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230322", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", "", "", "", "", "", "", "", 84.14285714285714 ] }, { "line": { "color": "rgba(55, 128, 191, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2240319", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", "", "", "", "", "", 1.875, 8, 11.857142857142858 ] }, { "line": { "color": "rgba(50, 171, 96, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2260276", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 106, 106.75, 105.375, 105.875, 108.875, 106.875, 102.375, 112.42857142857143, 106.28571428571429 ] }, { "line": { "color": "rgba(128, 0, 128, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2260280", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 52.125, 52.5, 53, 53.625, 52.625, 51.375, 51.75, 58.857142857142854, 55.857142857142854 ] }, { "line": { "color": "rgba(128, 0, 128, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2260283", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 79.5, 81, 82.25, 82.375, 84, 82.875, 81.125, 93.14285714285714, 91 ] }, { "line": { "color": "rgba(219, 64, 82, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2410040", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 62, 62, 61.75, 61.25, 62.875, 63.125, 62.875, "", "" ] }, { "line": { "color": "rgba(0, 128, 128, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2410048", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 114, 111.375, 112.25, 112.25, 112.375, 110.5, 111.375, 127, 125.57142857142857 ] }, { "line": { "color": "rgba(255, 255, 51, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2410066", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 81.875, 81, 82.125, 84.375, 82.5, 83, 84.125, 95.85714285714286, 96.42857142857143 ] }, { "line": { "color": "rgba(128, 128, 0, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2410096", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 51.625, 50.75, "", "", "", "", "", "", "" ] }, { "line": { "color": "rgba(251, 128, 114, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2410311", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", "", 83.25, 81.5, 79.875, 75.625, 73.875, 77.71428571428571, 74.85714285714286 ] }, { "line": { "color": "rgba(128, 177, 211, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420041", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 97.875, 98.375, 95.875, 92.875, 93, 93.375, 94.125, 108.57142857142857, 109 ] }, { "line": { "color": "rgba(255, 153, 51, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420042", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 58.75, 58, 60.875, 61.375, 62.125, 61.875, 62.25, "", "" ] }, { "line": { "color": "rgba(55, 128, 191, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420043", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 89.875, 90.125, 92.875, 90, 88.75, 89.25, 90.125, 99.14285714285714, 96.57142857142857 ] }, { "line": { "color": "rgba(50, 171, 96, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420052", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 175, 174.875, 175.375, 175.875, 175, 174.75, 175.25, 199.71428571428572, 196.71428571428572 ] }, { "line": { "color": "rgba(50, 171, 96, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420054", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 190.625, 192.625, 190.375, 192.375, 189.25, 191.75, 188.5, 207.85714285714286, 202.85714285714286 ] }, { "line": { "color": "rgba(128, 0, 128, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420064", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 117.5, 120.125, 121, 120.875, 120.625, 121, 122, 139.57142857142858, 137.71428571428572 ] }, { "line": { "color": "rgba(219, 64, 82, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420065", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 111.25, 110.875, 111.5, 112.5, 111.625, 110.25, 110, 127.85714285714286, 126.85714285714286 ] }, { "line": { "color": "rgba(0, 128, 128, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420229", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 108.875, 109.75, 107.75, 106.5, 106.75, 104.25, 102.75, 116.14285714285714, 116.57142857142857 ] }, { "line": { "color": "rgba(255, 255, 51, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420287", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 105.875, 106.125, 106, 106.5, 105.875, 106.375, 106.75, 122, 122.14285714285714 ] }, { "line": { "color": "rgba(128, 128, 0, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420320", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", "", "", "", "", "", "", 140.71428571428572, 138.71428571428572 ] }, { "line": { "color": "rgba(251, 128, 114, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210013", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 17.625, 15, 11.625, 3.25, "", "", "", "", "" ] }, { "line": { "color": "rgba(128, 177, 211, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210035", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 72.375, 73.25, 74.25, 72.75, 69.875, 72.375, 68, 78, 77.42857142857143 ] }, { "line": { "color": "rgba(255, 153, 51, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210038", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 63.875, 64, 63.25, 63.25, 58.875, 60.375, 62.375, 75, 83.28571428571429 ] }, { "line": { "color": "rgba(55, 128, 191, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210091", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 93.25, 89.5, 85.625, 83.875, 81.625, 83.75, 85.5, 104.42857142857143, 109.28571428571429 ] }, { "line": { "color": "rgba(55, 128, 191, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210124", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 43.125, 45.625, 44.875, 46.875, 48.5, 52.125, 51.375, 56.42857142857143, 58.857142857142854 ] }, { "line": { "color": "rgba(50, 171, 96, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210133", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 82.375, 82.625, 80.375, 83.25, 81.25, 81.875, 81.125, 93.28571428571429, 86.28571428571429 ] }, { "line": { "color": "rgba(128, 0, 128, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210134", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 127, 126.125, 128.75, 129.625, 129.625, 128.375, 127.75, 148, 150 ] }, { "line": { "color": "rgba(219, 64, 82, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210172", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 85.375, 86.125, 85.25, 84.25, 82.625, 81.75, 79, 92.28571428571429, 92.71428571428571 ] }, { "line": { "color": "rgba(0, 128, 128, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210200", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 89.75, 88.75, 81.5, 79.375, 69.25, 59.75, "", "", "" ] }, { "line": { "color": "rgba(255, 255, 51, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210202", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 127.875, 124.25, 118.875, 109.625, 109.125, 104.75, 98.75, 107.14285714285714, 103.57142857142857 ] }, { "line": { "color": "rgba(128, 128, 0, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210208", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 80.5, 79.875, 82.125, 87.875, 88.875, 104.875, 104.75, 124, 121.57142857142857 ] }, { "line": { "color": "rgba(251, 128, 114, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210222", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 60.25, 61, 62.375, 58.5, 51.25, 48.375, 44.125, 44, 41 ] }, { "line": { "color": "rgba(128, 177, 211, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210232", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 99.5, 100, 97.75, 90.625, 83.75, 78.75, 67.75, 73, 64.71428571428571 ] }, { "line": { "color": "rgba(255, 153, 51, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210233", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 37.625, 37.25, 33.75, 28.375, 19.125, "", "", "", "" ] }, { "line": { "color": "rgba(255, 153, 51, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210279", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 30, 28.625, 28.75, 27.875, 25.75, 23.5, "", "", "" ] }, { "line": { "color": "rgba(55, 128, 191, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210300", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 39.25, 38, 32.75, 32.625, 30.5, 29, 26.5, 33.714285714285715, 32.857142857142854 ] }, { "line": { "color": "rgba(50, 171, 96, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210313", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", "", "", "", "", "", 76.625, 82.85714285714286, 84.42857142857143 ] }, { "line": { "color": "rgba(128, 0, 128, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230019", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 5.375, "", "", "", "", "", "", "", "" ] }, { "line": { "color": "rgba(219, 64, 82, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230066", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 19.125, "", "", "", "", "", "", "", "" ] }, { "line": { "color": "rgba(0, 128, 128, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230075", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 27.875, 27.25, 29.375, 29.75, 29.5, 28.375, 28.125, 31.714285714285715, 31.714285714285715 ] }, { "line": { "color": "rgba(255, 255, 51, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230084", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 63.125, 65.5, 64.375, 64.375, 64.625, 66.5, 65.25, 72.28571428571429, 71.14285714285714 ] }, { "line": { "color": "rgba(128, 128, 0, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230110", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 43.5, 45.375, 43.75, 43.875, 40.125, 36.5, 35, 36.57142857142857, 26.142857142857142 ] }, { "line": { "color": "rgba(251, 128, 114, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230132", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 53.5, 53, 54.125, 55.25, 55.125, 55.75, 53.875, 62.285714285714285, 64.85714285714286 ] }, { "line": { "color": "rgba(128, 177, 211, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230142", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 35.25, 39.625, 41.125, 42.625, 40.125, 39.375, 38.625, 40.142857142857146, 41.142857142857146 ] }, { "line": { "color": "rgba(128, 177, 211, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230151", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 39.375, 41, 39.625, 39.625, 38.125, 36.5, 36.25, 41.714285714285715, 39.142857142857146 ] }, { "line": { "color": "rgba(255, 153, 51, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230168", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 113.125, 113.625, 115.875, 117.375, 116.625, 117.625, 116.875, 132.57142857142858, 131.42857142857142 ] }, { "line": { "color": "rgba(55, 128, 191, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230203", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 78.375, 77.125, 74.5, 76, 75.5, 75.625, 74, 81.28571428571429, 84.71428571428571 ] }, { "line": { "color": "rgba(50, 171, 96, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230227", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 93.75, 96.25, 95.75, 96.875, 96.375, 94.125, 92.375, 103.42857142857143, 103.85714285714286 ] }, { "line": { "color": "rgba(128, 0, 128, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230234", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 165.875, 166.125, 162.875, 161.125, 161, 164.125, 163.75, 186.57142857142858, 186.28571428571428 ] }, { "line": { "color": "rgba(219, 64, 82, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230308", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 64.125, 60.125, 56.5, 51.5, 48.875, 48.375, 46.25, 54, 54.285714285714285 ] }, { "line": { "color": "rgba(0, 128, 128, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230310", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", 103, 103.625, 100.75, 102.25, 105.75, 104.5, 119.28571428571429, 116.71428571428571 ] }, { "line": { "color": "rgba(255, 255, 51, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3250149", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 37.5, 28.875, 28.625, 21.125, 17.625, 13.375, 12.5, 14.285714285714286, 18 ] }, { "line": { "color": "rgba(128, 128, 0, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3250207", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 84.625, 85.25, 85.5, 87.75, 86.875, 83.375, 84.25, 98.57142857142857, 106 ] }, { "line": { "color": "rgba(251, 128, 114, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3260289", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 93.25, 94.125, 94.875, 99.5, 99.625, 96.5, 94.5, 110.42857142857143, 114 ] }, { "line": { "color": "rgba(251, 128, 114, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3260290", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 59.375, 61.75, 56.75, 57.875, 58.375, 56, 53.375, 63.285714285714285, 63.714285714285715 ] }, { "line": { "color": "rgba(128, 177, 211, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3260299", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 66.75, 67, 69, 72, 71.375, 71, 72.625, 84.28571428571429, 89.28571428571429 ] }, { "line": { "color": "rgba(255, 153, 51, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3260303", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 59.375, 60.125, 61.875, 61.5, 62.375, 62.625, 61.5, 74.42857142857143, 74.28571428571429 ] }, { "line": { "color": "rgba(55, 128, 191, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3410008", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 153.125, 152.75, 152.75, 152.875, 151.875, 154.125, 153.125, 173.42857142857142, 175.42857142857142 ] }, { "line": { "color": "rgba(50, 171, 96, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3410033", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 99, 101.625, 100.375, 101.625, 101, 100.25, "", "", "" ] }, { "line": { "color": "rgba(128, 0, 128, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3410098", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 100.5, 101, 102, 101.75, 100, 99.875, 100.75, 116.14285714285714, 112 ] }, { "line": { "color": "rgba(219, 64, 82, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3410209", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 91.625, 91.875, 92.875, 93.625, 93.5, 92.875, 92.25, 104.57142857142857, 104 ] }, { "line": { "color": "rgba(0, 128, 128, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3410297", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 129.25, 130.5, 122.25, 115.75, 114.75, 115.375, 113, 129.14285714285714, 129 ] }, { "line": { "color": "rgba(255, 255, 51, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420010", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 119, 118.5, 120.625, 123.125, 127.625, 129.5, 129.625, 151.14285714285714, 157.85714285714286 ] }, { "line": { "color": "rgba(128, 128, 0, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420011", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 150.625, 150.75, 152.375, 152.125, 153, 154.75, 153.125, 173.57142857142858, 172.14285714285714 ] }, { "line": { "color": "rgba(128, 128, 0, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420012", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 105, 106.125, 107.25, 107.75, 108.875, 110, 109, 124, 123.57142857142857 ] }, { "line": { "color": "rgba(251, 128, 114, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420032", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 88.875, 95, 97.25, 96.875, 95.25, 95.375, "", "", "" ] }, { "line": { "color": "rgba(128, 177, 211, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420034", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 99, 99.5, 99.75, 101, 100.875, 102.25, 100.875, 114.57142857142857, 121.42857142857143 ] }, { "line": { "color": "rgba(255, 153, 51, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420046", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 90.375, 91.125, 92.625, 92.5, 92.5, 92.375, 92.375, 105.71428571428571, 106.14285714285714 ] }, { "line": { "color": "rgba(55, 128, 191, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420058", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 88, 87.875, 87.875, 90.125, 89.875, 88.875, 88.375, 103.57142857142857, 105.28571428571429 ] }, { "line": { "color": "rgba(50, 171, 96, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420068", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 60.5, 61.375, 62.5, 62.875, 64, 62.75, 60.125, 69.71428571428571, 76.57142857142857 ] }, { "line": { "color": "rgba(128, 0, 128, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420077", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 115.875, 116.125, 116.625, 117, 116.75, 116, 114.625, 131.42857142857142, 133.14285714285714 ] }, { "line": { "color": "rgba(219, 64, 82, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420080", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 134.875, 135, 134.75, 135.75, 137.125, 135, 134.125, 156, 157.71428571428572 ] }, { "line": { "color": "rgba(0, 128, 128, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420094", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 76.125, "", "", "", "", "", "", "", "" ] }, { "line": { "color": "rgba(255, 255, 51, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420317", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", "", "", "", "", "", 186.25, 196.42857142857142, 178.14285714285714 ] }, { "line": { "color": "rgba(255, 255, 51, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210012", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 67.5, 61.125, 56.375, 50.125, 44.125, 35.75, 27.375, 27.285714285714285, 25.714285714285715 ] }, { "line": { "color": "rgba(128, 128, 0, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210029", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 48.5, 46.25, 40.875, 37.75, 31.875, 25.25, 21.75, 23.857142857142858, 24 ] }, { "line": { "color": "rgba(251, 128, 114, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210045", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 50.5, 50.75, 51.25, 52.5, 52, 51.625, 51.75, 58.714285714285715, 59 ] }, { "line": { "color": "rgba(128, 177, 211, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210046", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 82, 82.5, 80, 81, 79.25, 80.375, 78.75, 87.28571428571429, 87.14285714285714 ] }, { "line": { "color": "rgba(255, 153, 51, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210051", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 47.625, 52.5, 55.5, 59.875, 63.5, 63.625, 62.375, 73.85714285714286, 79.42857142857143 ] }, { "line": { "color": "rgba(55, 128, 191, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210063", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 44.75, 45.5, 46.125, 46.75, 45.875, 45.875, 46.25, 53.42857142857143, 53.714285714285715 ] }, { "line": { "color": "rgba(50, 171, 96, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210086", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 65.75, 60, 57.875, 49.375, 39, 33.25, "", "", "" ] }, { "line": { "color": "rgba(128, 0, 128, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210183", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 87.875, 85.25, 82, 87.125, 82.75, 83.25, "", "", "" ] }, { "line": { "color": "rgba(219, 64, 82, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210194", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 37, 33.25, 21.875, "", "", "", "", "", "" ] }, { "line": { "color": "rgba(0, 128, 128, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210201", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 109.5, 108.375, 103.625, 102.375, 93.75, 89.75, 85.125, 92.57142857142857, 91.85714285714286 ] }, { "line": { "color": "rgba(0, 128, 128, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210262", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 37.75, 37.75, 34.875, 33.125, 29.625, 30.125, 34.5, 48.57142857142857, 56.714285714285715 ] }, { "line": { "color": "rgba(255, 255, 51, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210296", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 172.5, 176.5, 179.25, 183.25, 183, 181, 185.375, 212.42857142857142, 217.57142857142858 ] }, { "line": { "color": "rgba(128, 128, 0, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210316", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", "", "", "", "", "", 112.5, 118.14285714285714, 113.85714285714286 ] }, { "line": { "color": "rgba(251, 128, 114, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230023", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 62.875, 57.75, 53.125, 54.625, 56.25, 54.625, 50.875, 59.42857142857143, 58.714285714285715 ] }, { "line": { "color": "rgba(128, 177, 211, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230067", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 30.5, 29.375, 27.125, 25.625, 23.625, 22.875, 23.375, 25, 25.428571428571427 ] }, { "line": { "color": "rgba(255, 153, 51, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230102", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 56.125, 56.375, 49.5, 46.5, 43.625, 38.875, 35.625, 39.142857142857146, 33.57142857142857 ] }, { "line": { "color": "rgba(55, 128, 191, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230107", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 67.875, 69.75, 74.625, 76, 75.125, 74.125, 77.125, 91.71428571428571, 96.28571428571429 ] }, { "line": { "color": "rgba(50, 171, 96, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230161", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 42.875, 45.875, 48.125, 55.375, 52.5, 51.125, 53.75, 62.42857142857143, 64.57142857142857 ] }, { "line": { "color": "rgba(128, 0, 128, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230165", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 48, 54.25, 58.5, 61.5, 61.5, 59.375, 56.125, 60.57142857142857, 60.142857142857146 ] }, { "line": { "color": "rgba(219, 64, 82, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230211", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 127.375, 129.125, 129.625, 126.875, 121.375, 124.5, 119.875, 132.42857142857142, 132.71428571428572 ] }, { "line": { "color": "rgba(219, 64, 82, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230223", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 88.75, 87.75, 81.25, 76.25, 70.75, 59.75, 55.75, 56, 55.142857142857146 ] }, { "line": { "color": "rgba(0, 128, 128, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230224", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 42.375, 44.625, 44.75, 44.25, 46, 45, 45.5, 50.857142857142854, 52.857142857142854 ] }, { "line": { "color": "rgba(255, 255, 51, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4250024", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 58.875, 60.125, 63.625, 61.5, 62.5, 68.625, 72.5, 86.14285714285714, 84.14285714285714 ] }, { "line": { "color": "rgba(128, 128, 0, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4250072", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 109.5, 112, 113.375, 113, 111.25, 108.375, 106.75, 120.42857142857143, 120.71428571428571 ] }, { "line": { "color": "rgba(251, 128, 114, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4260255", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 153.625, 155, 156.375, 156.125, 157.5, 158.75, 158.125, 180.14285714285714, 184.71428571428572 ] }, { "line": { "color": "rgba(128, 177, 211, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4260281", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 65.125, 65.625, 66.5, 68.375, 68.25, 72.125, 74.625, 84.85714285714286, 88.28571428571429 ] }, { "line": { "color": "rgba(255, 153, 51, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4260295", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 65.625, 64.375, 67.25, 66.125, 66.25, 69.25, 72, 91, 96.71428571428571 ] }, { "line": { "color": "rgba(55, 128, 191, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4260309", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 42.75, 41.75, 38.75, 33.875, 32.125, 26.625, 26.625, 30.285714285714285, 30.285714285714285 ] }, { "line": { "color": "rgba(50, 171, 96, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4410063", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 176.75, 176.125, 181.125, 183.125, 180.375, 177.75, 178.125, 204.85714285714286, 201.28571428571428 ] }, { "line": { "color": "rgba(128, 0, 128, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4410085", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 117.625, 118.25, 118.75, 121, 122, 122.375, 121.125, 135.85714285714286, 132.71428571428572 ] }, { "line": { "color": "rgba(128, 0, 128, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4410097", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 133.625, 134.125, 134.625, 133.625, 133.125, 132.5, 130.5, 147.85714285714286, 147.14285714285714 ] }, { "line": { "color": "rgba(219, 64, 82, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420015", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 111, 112.625, 110, 108, 107.25, 109.375, 109.25, 122.85714285714286, 123.85714285714286 ] }, { "line": { "color": "rgba(0, 128, 128, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420044", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 132.75, 133.75, 133.875, 135, 134.5, 134.625, 134.625, 153.71428571428572, 153.71428571428572 ] }, { "line": { "color": "rgba(255, 255, 51, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420050", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 122.375, 122.625, 122.875, 123.625, 123.5, 122.75, 123.625, 139.28571428571428, 140.42857142857142 ] }, { "line": { "color": "rgba(128, 128, 0, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420051", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 145.375, 145.75, 145.375, 146.125, 145.5, 145.5, 145.875, 164.57142857142858, 165.14285714285714 ] }, { "line": { "color": "rgba(251, 128, 114, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420086", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 110, 109.625, 108.5, 105.75, 106.125, 105.375, 104.5, 120.14285714285714, 119.85714285714286 ] }, { "line": { "color": "rgba(128, 177, 211, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420088", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 86.875, 85.375, 86.125, 89.75, 90.375, 85.75, 88.375, 100.71428571428571, 97.14285714285714 ] }, { "line": { "color": "rgba(255, 153, 51, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420259", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 158.5, 160.625, 158.125, 158, 159.625, 159.875, 158.875, 183.28571428571428, 183.71428571428572 ] }, { "line": { "color": "rgba(55, 128, 191, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210016", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 90.375, 91.5, 87, 85, 86.25, 85.125, 82.875, 96.42857142857143, 95.14285714285714 ] }, { "line": { "color": "rgba(50, 171, 96, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210025", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 23.25, 22.75, 20.875, 22, 23, 20.875, 22.125, 27.285714285714285, 26.714285714285715 ] }, { "line": { "color": "rgba(50, 171, 96, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210043", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 79.375, 81.625, 74.875, 73.375, 73.375, 76.375, 76.625, 87.42857142857143, 90.85714285714286 ] }, { "line": { "color": "rgba(128, 0, 128, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210047", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 82.5, 84.5, 84.875, 80.75, 75.375, 69.125, 62.875, 71.71428571428571, 69 ] }, { "line": { "color": "rgba(219, 64, 82, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210054", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 55.25, 57.5, 57.5, 56.125, 55.25, 56.125, 59.375, 83.83333333333333, 77.57142857142857 ] }, { "line": { "color": "rgba(0, 128, 128, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210064", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 98.375, 98, 104.875, 113.875, 115, 115.75, 115.875, 138.14285714285714, 138.42857142857142 ] }, { "line": { "color": "rgba(255, 255, 51, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210083", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 59.125, 60.375, 61.25, 61.375, 61, 62, 61.875, 73.71428571428571, 74.85714285714286 ] }, { "line": { "color": "rgba(128, 128, 0, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210097", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 51.625, 53.25, 55.125, 53.875, 55.5, 51.75, 49.5, 53.142857142857146, 50.42857142857143 ] }, { "line": { "color": "rgba(251, 128, 114, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210121", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 41.875, 36.125, 32.75, 32.5, 30, 31, 34.5, 43.142857142857146, 48.57142857142857 ] }, { "line": { "color": "rgba(128, 177, 211, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210127", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 37.5, 38.875, 37, 38.875, 37.25, 38.25, 39.5, 45.57142857142857, 44.857142857142854 ] }, { "line": { "color": "rgba(255, 153, 51, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210143", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 33.875, 34, 37.5, 35.875, 35.875, 35.25, 34.625, 42.285714285714285, 41 ] }, { "line": { "color": "rgba(55, 128, 191, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210153", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 22, 23.25, 22.375, 19.375, 21.125, 19.125, 19.125, 21.857142857142858, 23.714285714285715 ] }, { "line": { "color": "rgba(55, 128, 191, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210186", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 64.25, 63.125, 59.625, 56.25, 54.875, 52.75, 51.625, 55.42857142857143, 60.142857142857146 ] }, { "line": { "color": "rgba(50, 171, 96, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210230", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 119.75, 119, 112.625, 111.625, 109.875, 101, 98.375, 112.42857142857143, 111.14285714285714 ] }, { "line": { "color": "rgba(128, 0, 128, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210231", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 48.375, 47.75, 46.5, 41.875, 41, 37.5, 36.125, 41.857142857142854, 45.857142857142854 ] }, { "line": { "color": "rgba(219, 64, 82, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210271", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 80, 82.5, 77.125, 76.875, 72.25, 75.25, 76.875, 108.33333333333333, 101.71428571428571 ] }, { "line": { "color": "rgba(0, 128, 128, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210282", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 84.5, 75.625, 77.75, 84.875, 83.25, 76.25, 73.75, 82.42857142857143, 82.71428571428571 ] }, { "line": { "color": "rgba(255, 255, 51, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230056", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 53.625, 55.875, 52, 49.25, 48, 47.625, 43.5, 50.285714285714285, 49.42857142857143 ] }, { "line": { "color": "rgba(128, 128, 0, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230059", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 33.25, 31, 28.75, 24.125, 21.125, 19.25, 19.5, 21.142857142857142, 21.857142857142858 ] }, { "line": { "color": "rgba(251, 128, 114, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230070", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 70.25, 66, 65.25, 62.75, 61.375, 57.125, "", "", "" ] }, { "line": { "color": "rgba(128, 177, 211, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230076", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 54.875, 53.25, 48.375, 43.75, 35.875, 36.375, 37.375, 46.42857142857143, 55.285714285714285 ] }, { "line": { "color": "rgba(255, 153, 51, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230088", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 58.5, 58.25, 57.25, 49.375, 47.5, 40, "", "", "" ] }, { "line": { "color": "rgba(255, 153, 51, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230108", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 71.75, 68.25, 70.25, 69.25, 69, 69.25, 71.25, 81.28571428571429, 82.28571428571429 ] }, { "line": { "color": "rgba(55, 128, 191, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230135", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 109.875, 110.75, 112.125, 111.125, 110.125, 106.375, 106.375, 115.85714285714286, 116.42857142857143 ] }, { "line": { "color": "rgba(50, 171, 96, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230152", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 99, 99.375, 101.125, 100.125, 101.875, 100, 100.375, 112.71428571428571, 113.57142857142857 ] }, { "line": { "color": "rgba(128, 0, 128, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230157", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 186, 188.125, 187.5, 187, 192.25, 197.875, 199.875, 223.85714285714286, 222.85714285714286 ] }, { "line": { "color": "rgba(219, 64, 82, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230160", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 27, 27.25, 26.375, 24.625, 23.75, 13.25, "", "", "" ] }, { "line": { "color": "rgba(0, 128, 128, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230167", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 74, 76.875, 78.75, 76.625, 77.25, 76.25, 76.5, 85.57142857142857, 87.85714285714286 ] }, { "line": { "color": "rgba(255, 255, 51, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230187", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 125.5, 130.625, 126.875, 125.125, 127.5, 130.625, 128.375, 148.14285714285714, 147.42857142857142 ] }, { "line": { "color": "rgba(128, 128, 0, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230192", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 50.875, 48.25, 46.375, 45.75, 41.25, 38.875, 38.5, 48, 51.714285714285715 ] }, { "line": { "color": "rgba(251, 128, 114, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230213", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 138.625, 143.25, 144.125, 146.875, 146, 144.625, 145.5, 167.85714285714286, 163.14285714285714 ] }, { "line": { "color": "rgba(128, 177, 211, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230218", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 140.625, 144.375, 145.875, 142.25, 147.75, 145.5, 141.25, 162.71428571428572, 157.71428571428572 ] }, { "line": { "color": "rgba(128, 177, 211, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230256", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 29.375, 26.125, 24.375, 24.5, 23.125, 22.625, 22.625, 21.714285714285715, "" ] }, { "line": { "color": "rgba(255, 153, 51, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230278", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 99, 104.875, 106.5, 111.875, 119.875, 125.25, 128, 145.28571428571428, 145.85714285714286 ] }, { "line": { "color": "rgba(55, 128, 191, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230293", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 75, 79, 80.375, 81.875, 78, 78.875, 77.875, 85.28571428571429, 84.28571428571429 ] }, { "line": { "color": "rgba(50, 171, 96, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230321", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", "", "", "", "", "", "", "", 24.285714285714285 ] }, { "line": { "color": "rgba(128, 0, 128, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5250216", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 53.75, 51.625, 48, 43.125, 41.375, 39, 33.75, 37, 40.714285714285715 ] }, { "line": { "color": "rgba(219, 64, 82, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5260285", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 65, 66.375, 67, 67.75, 71.125, 73, 74.625, 87.42857142857143, 87.85714285714286 ] }, { "line": { "color": "rgba(0, 128, 128, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5260286", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 57.625, 60.875, 61.5, 65.625, 67.375, 67.875, 67.375, 82.42857142857143, 84.57142857142857 ] }, { "line": { "color": "rgba(255, 255, 51, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5410013", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 163.875, 165.625, 165.5, 166.375, 165.875, 165.5, 165, 187.42857142857142, 185.85714285714286 ] }, { "line": { "color": "rgba(128, 128, 0, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5410057", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 54, 54.75, 56.875, 57.125, 56.375, 56.625, 56.875, 64.42857142857143, 65 ] }, { "line": { "color": "rgba(251, 128, 114, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5410067", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 98.625, 98.5, 97.5, 97.25, 99.75, 98.875, 98.5, 111.14285714285714, 106.28571428571429 ] }, { "line": { "color": "rgba(251, 128, 114, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420045", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 73.25, 73.375, 73.125, 73.375, 73.25, 73.875, 73.5, 80.57142857142857, 80.57142857142857 ] }, { "line": { "color": "rgba(128, 177, 211, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420056", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 70.875, 70.75, 71.625, 71.625, 72.75, 76.5, "", "", "" ] }, { "line": { "color": "rgba(255, 153, 51, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420059", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 110, 110.875, 111.75, 113.375, 112.5, 113.875, 112.75, 126, 126.42857142857143 ] }, { "line": { "color": "rgba(55, 128, 191, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420060", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 107.625, 107.625, 108, 107.625, 107.25, 105.625, 106.625, 122, 121.85714285714286 ] }, { "line": { "color": "rgba(50, 171, 96, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420062", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 114.875, 117.5, 117.75, 115, 112.5, 113, 112.125, 129, 126.42857142857143 ] }, { "line": { "color": "rgba(128, 0, 128, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420073", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 65.875, 69.375, 72.375, 75.5, 79.375, 84.75, 88.375, 101.28571428571429, 98 ] }, { "line": { "color": "rgba(219, 64, 82, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420076", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 104.5, 105.75, 105.625, 106.125, 106.875, 106.625, 106.75, 121.71428571428571, 120.42857142857143 ] }, { "line": { "color": "rgba(0, 128, 128, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420260", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 80.75, 82.25, 83.125, 81.5, 81.625, 82.5, 81.25, 93.14285714285714, 91.14285714285714 ] }, { "line": { "color": "rgba(255, 255, 51, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420263", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", 85.25, "", 88.25, 89, 90.25, 90, 103.42857142857143, 105 ] }, { "line": { "color": "rgba(128, 128, 0, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420268", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", 100.375, "", "", "", "", 121.5, 139.28571428571428, 138.14285714285714 ] }, { "line": { "color": "rgba(128, 128, 0, 0.20689655172413773)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420304", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", "", "", "", "", "", "", 191.14285714285714, 191.42857142857142 ] }, { "line": { "color": "rgba(251, 128, 114, 0.20689655172413773)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420314", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", "", "", "", "", "", "", 199.71428571428572, 209.85714285714286 ] } ], "layout": { "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "titlefont": { "color": "#4D5663" }, "xaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" }, "yaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "enrolment.mean(axis=2).T.iplot()" ] }, { "cell_type": "code", "execution_count": 236, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:13:37.057722Z", "start_time": "2018-06-09T09:13:36.839625Z" }, "scrolled": true, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "line": { "color": "rgba(255, 153, 51, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1210014", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 672, 688, 703, 708, 704, 697, 704, 696, 691 ] }, { "line": { "color": "rgba(55, 128, 191, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1210015", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 647, 650, 649, 666, 709, 737, 744, 728, 740 ] }, { "line": { "color": "rgba(50, 171, 96, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1210021", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 963, 929, 899, 930, 916, 884, 910, 954, 946 ] }, { "line": { "color": "rgba(128, 0, 128, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1210022", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 907, 932, 913, 930, 943, 969, 968, 991, 997 ] }, { "line": { "color": "rgba(219, 64, 82, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1210266", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 297, 290, 264, 247, 88, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(0, 128, 128, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230026", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 784, 785, 764, 765, 705, 679, 674, 654, 0 ] }, { "line": { "color": "rgba(255, 255, 51, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230053", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1547, 1530, 1530, 1521, 1516, 1518, 1474, 1420, 1435 ] }, { "line": { "color": "rgba(128, 128, 0, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230089", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 691, 687, 690, 692, 684, 644, 637, 633, 0 ] }, { "line": { "color": "rgba(251, 128, 114, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230104", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 438, 429, 384, 367, 423, 433, 446, 452, 450 ] }, { "line": { "color": "rgba(128, 177, 211, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230130", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 468, 440, 406, 388, 352, 316, 273, 240, 243 ] }, { "line": { "color": "rgba(128, 177, 211, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230146", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 508, 513, 528, 529, 490, 490, 498, 500, 525 ] }, { "line": { "color": "rgba(255, 153, 51, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230155", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1011, 1027, 1043, 1069, 1078, 1061, 1070, 1059, 1022 ] }, { "line": { "color": "rgba(55, 128, 191, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230173", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 227, 200, 160, 110, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(50, 171, 96, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230182", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1116, 1088, 1088, 1098, 1093, 1116, 1117, 1104, 958 ] }, { "line": { "color": "rgba(128, 0, 128, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230262", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 568, 529, 476, 440, 413, 344, 311, 258, 233 ] }, { "line": { "color": "rgba(219, 64, 82, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230275", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 587, 566, 550, 538, 571, 634, 629, 631, 658 ] }, { "line": { "color": "rgba(0, 128, 128, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1230321", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 1271 ] }, { "line": { "color": "rgba(255, 255, 51, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1240291", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 561, 553, 550, 541, 564, 581, 605, 646, 651 ] }, { "line": { "color": "rgba(128, 128, 0, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1260269", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 865, 862, 864, 868, 894, 916, 900, 936, 954 ] }, { "line": { "color": "rgba(251, 128, 114, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1260294", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 751, 750, 710, 708, 656, 617, 591, 535, 485 ] }, { "line": { "color": "rgba(251, 128, 114, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1410079", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1087, 1086, 1090, 1090, 1090, 1090, 1087, 1086, 1080 ] }, { "line": { "color": "rgba(128, 177, 211, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1410270", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 778, 775, 783, 783, 804, 815, 790, 765, 742 ] }, { "line": { "color": "rgba(255, 153, 51, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1410315", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 695, 691, 688, 700 ] }, { "line": { "color": "rgba(55, 128, 191, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420018", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 712, 712, 719, 709, 696, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(50, 171, 96, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420020", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 913, 929, 896, 901, 892, 899, 900, 921, 922 ] }, { "line": { "color": "rgba(128, 0, 128, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420021", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1163, 1181, 1196, 1205, 1208, 1200, 1186, 1161, 1165 ] }, { "line": { "color": "rgba(219, 64, 82, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420022", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1776, 1777, 1783, 1784, 1753, 1788, 1776, 1777, 1776 ] }, { "line": { "color": "rgba(0, 128, 128, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420027", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1038, 1041, 1050, 1045, 1035, 1009, 1025, 1025, 1012 ] }, { "line": { "color": "rgba(255, 255, 51, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420028", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1401, 1416, 1421, 1403, 1409, 1396, 1400, 1421, 1461 ] }, { "line": { "color": "rgba(128, 128, 0, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420029", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1004, 995, 1000, 1003, 1022, 1021, 1031, 1034, 1012 ] }, { "line": { "color": "rgba(128, 128, 0, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420030", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1018, 1025, 1024, 1033, 1068, 1071, 1057, 1078, 1094 ] }, { "line": { "color": "rgba(251, 128, 114, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420082", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1031, 1016, 1007, 1012, 1030, 1023, 1026, 1005, 1001 ] }, { "line": { "color": "rgba(128, 177, 211, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420089", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 749, 756, 766, 770, 777, 781, 783, 772, 778 ] }, { "line": { "color": "rgba(255, 153, 51, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420095", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1277, 1275, 1273, 1273, 1265, 1274, 1276, 1269, 1270 ] }, { "line": { "color": "rgba(55, 128, 191, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420264", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 864, 870, 869, 874, 900, 897, 874, 881, 897 ] }, { "line": { "color": "rgba(50, 171, 96, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420265", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 693, 710, 718, 708, 714, 697, 697, 702, 698 ] }, { "line": { "color": "rgba(128, 0, 128, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "1420277", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 810, 806, 818, 819, 809, 807, 811, 811, 815 ] }, { "line": { "color": "rgba(219, 64, 82, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210065", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 464, 477, 473, 471, 437, 459, 421, 406, 396 ] }, { "line": { "color": "rgba(0, 128, 128, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210080", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 142, 132, 133, 107, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(255, 255, 51, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210125", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 478, 445, 430, 403, 403, 396, 398, 412, 421 ] }, { "line": { "color": "rgba(255, 255, 51, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210164", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 300, 276, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 128, 0, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210302", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 740, 748, 757, 757, 752, 729, 721, 720, 741 ] }, { "line": { "color": "rgba(251, 128, 114, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210305", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 614, 574, 538, 485, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 177, 211, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210306", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 893, 867, 830, 781, 770, 664, 576, 587, 596 ] }, { "line": { "color": "rgba(255, 153, 51, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2210312", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 537, 519, 481, 479, 512 ] }, { "line": { "color": "rgba(55, 128, 191, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230077", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 727, 725, 717, 683, 654, 624, 607, 571, 552 ] }, { "line": { "color": "rgba(50, 171, 96, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230081", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 854, 863, 871, 873, 887, 880, 865, 866, 864 ] }, { "line": { "color": "rgba(128, 0, 128, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230085", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 137, 145, 133, 136, 121, 109, 89, 84, 85 ] }, { "line": { "color": "rgba(219, 64, 82, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230099", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 331, 321, 323, 318, 330, 328, 336, 328, 318 ] }, { "line": { "color": "rgba(0, 128, 128, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230100", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 243, 238, 231, 232, 249, 266, 262, 245, 239 ] }, { "line": { "color": "rgba(0, 128, 128, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230109", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 164, 166, 161, 187, 182, 150, 139, 127, 120 ] }, { "line": { "color": "rgba(255, 255, 51, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230111", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 146, 125, 127, 58, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 128, 0, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230122", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 526, 526, 512, 514, 523, 524, 517, 499, 486 ] }, { "line": { "color": "rgba(251, 128, 114, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230131", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 875, 885, 892, 910, 936, 900, 868, 791, 720 ] }, { "line": { "color": "rgba(128, 177, 211, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230138", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 485, 473, 464, 490, 489, 489, 509, 509, 504 ] }, { "line": { "color": "rgba(255, 153, 51, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230144", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 331, 336, 323, 287, 280, 262, 258, 241, 261 ] }, { "line": { "color": "rgba(55, 128, 191, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230148", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 145, 140, 147, 169, 185, 177, 177, 178, 174 ] }, { "line": { "color": "rgba(50, 171, 96, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230166", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 167, 177, 170, 177, 171, 176, 178, 202, 208 ] }, { "line": { "color": "rgba(128, 0, 128, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230180", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 180, 190, 174, 134, 111, 78, 56, 38, 0 ] }, { "line": { "color": "rgba(219, 64, 82, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230181", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 231, 206, 170, 64, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(219, 64, 82, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230188", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 866, 871, 867, 856, 856, 837, 821, 784, 797 ] }, { "line": { "color": "rgba(0, 128, 128, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230190", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 346, 376, 371, 423, 427, 470, 490, 533, 0 ] }, { "line": { "color": "rgba(255, 255, 51, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230225", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 722, 687, 647, 583, 528, 514, 561, 600, 654 ] }, { "line": { "color": "rgba(128, 128, 0, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230254", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 238, 223, 202, 180, 123, 42, 0, 0, 0 ] }, { "line": { "color": "rgba(251, 128, 114, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230298", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 975, 955, 921, 922, 914, 882, 837, 767, 742 ] }, { "line": { "color": "rgba(128, 177, 211, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230301", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1390, 1462, 1509, 1550, 1554, 1615, 1539, 1564, 1583 ] }, { "line": { "color": "rgba(255, 153, 51, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2230322", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 589 ] }, { "line": { "color": "rgba(55, 128, 191, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2240319", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 15, 48, 83 ] }, { "line": { "color": "rgba(50, 171, 96, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2260276", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 848, 854, 843, 847, 871, 855, 819, 787, 744 ] }, { "line": { "color": "rgba(128, 0, 128, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2260280", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 417, 420, 424, 429, 421, 411, 414, 412, 391 ] }, { "line": { "color": "rgba(128, 0, 128, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2260283", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 636, 648, 658, 659, 672, 663, 649, 652, 637 ] }, { "line": { "color": "rgba(219, 64, 82, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2410040", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 496, 496, 494, 490, 503, 505, 503, 0, 0 ] }, { "line": { "color": "rgba(0, 128, 128, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2410048", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 912, 891, 898, 898, 899, 884, 891, 889, 879 ] }, { "line": { "color": "rgba(255, 255, 51, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2410066", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 655, 648, 657, 675, 660, 664, 673, 671, 675 ] }, { "line": { "color": "rgba(128, 128, 0, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2410096", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 413, 406, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(251, 128, 114, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2410311", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 666, 652, 639, 605, 591, 544, 524 ] }, { "line": { "color": "rgba(128, 177, 211, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420041", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 783, 787, 767, 743, 744, 747, 753, 760, 763 ] }, { "line": { "color": "rgba(255, 153, 51, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420042", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 470, 464, 487, 491, 497, 495, 498, 0, 0 ] }, { "line": { "color": "rgba(55, 128, 191, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420043", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 719, 721, 743, 720, 710, 714, 721, 694, 676 ] }, { "line": { "color": "rgba(50, 171, 96, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420052", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1400, 1399, 1403, 1407, 1400, 1398, 1402, 1398, 1377 ] }, { "line": { "color": "rgba(50, 171, 96, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420054", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1525, 1541, 1523, 1539, 1514, 1534, 1508, 1455, 1420 ] }, { "line": { "color": "rgba(128, 0, 128, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420064", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 940, 961, 968, 967, 965, 968, 976, 977, 964 ] }, { "line": { "color": "rgba(219, 64, 82, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420065", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 890, 887, 892, 900, 893, 882, 880, 895, 888 ] }, { "line": { "color": "rgba(0, 128, 128, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420229", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 871, 878, 862, 852, 854, 834, 822, 813, 816 ] }, { "line": { "color": "rgba(255, 255, 51, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420287", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 847, 849, 848, 852, 847, 851, 854, 854, 855 ] }, { "line": { "color": "rgba(128, 128, 0, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "2420320", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 985, 971 ] }, { "line": { "color": "rgba(251, 128, 114, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210013", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 141, 120, 93, 26, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 177, 211, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210035", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 579, 586, 594, 582, 559, 579, 544, 546, 542 ] }, { "line": { "color": "rgba(255, 153, 51, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210038", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 511, 512, 506, 506, 471, 483, 499, 525, 583 ] }, { "line": { "color": "rgba(55, 128, 191, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210091", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 746, 716, 685, 671, 653, 670, 684, 731, 765 ] }, { "line": { "color": "rgba(55, 128, 191, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210124", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 345, 365, 359, 375, 388, 417, 411, 395, 412 ] }, { "line": { "color": "rgba(50, 171, 96, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210133", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 659, 661, 643, 666, 650, 655, 649, 653, 604 ] }, { "line": { "color": "rgba(128, 0, 128, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210134", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1016, 1009, 1030, 1037, 1037, 1027, 1022, 1036, 1050 ] }, { "line": { "color": "rgba(219, 64, 82, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210172", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 683, 689, 682, 674, 661, 654, 632, 646, 649 ] }, { "line": { "color": "rgba(0, 128, 128, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210200", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 718, 710, 652, 635, 554, 478, 0, 0, 0 ] }, { "line": { "color": "rgba(255, 255, 51, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210202", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1023, 994, 951, 877, 873, 838, 790, 750, 725 ] }, { "line": { "color": "rgba(128, 128, 0, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210208", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 644, 639, 657, 703, 711, 839, 838, 868, 851 ] }, { "line": { "color": "rgba(251, 128, 114, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210222", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 482, 488, 499, 468, 410, 387, 353, 308, 287 ] }, { "line": { "color": "rgba(128, 177, 211, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210232", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 796, 800, 782, 725, 670, 630, 542, 511, 453 ] }, { "line": { "color": "rgba(255, 153, 51, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210233", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 301, 298, 270, 227, 153, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(255, 153, 51, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210279", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 240, 229, 230, 223, 206, 188, 0, 0, 0 ] }, { "line": { "color": "rgba(55, 128, 191, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210300", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 314, 304, 262, 261, 244, 232, 212, 236, 230 ] }, { "line": { "color": "rgba(50, 171, 96, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3210313", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 613, 580, 591 ] }, { "line": { "color": "rgba(128, 0, 128, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230019", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 43, 0, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(219, 64, 82, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230066", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 153, 0, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(0, 128, 128, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230075", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 223, 218, 235, 238, 236, 227, 225, 222, 222 ] }, { "line": { "color": "rgba(255, 255, 51, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230084", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 505, 524, 515, 515, 517, 532, 522, 506, 498 ] }, { "line": { "color": "rgba(128, 128, 0, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230110", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 348, 363, 350, 351, 321, 292, 280, 256, 183 ] }, { "line": { "color": "rgba(251, 128, 114, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230132", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 428, 424, 433, 442, 441, 446, 431, 436, 454 ] }, { "line": { "color": "rgba(128, 177, 211, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230142", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 282, 317, 329, 341, 321, 315, 309, 281, 288 ] }, { "line": { "color": "rgba(128, 177, 211, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230151", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 315, 328, 317, 317, 305, 292, 290, 292, 274 ] }, { "line": { "color": "rgba(255, 153, 51, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230168", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 905, 909, 927, 939, 933, 941, 935, 928, 920 ] }, { "line": { "color": "rgba(55, 128, 191, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230203", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 627, 617, 596, 608, 604, 605, 592, 569, 593 ] }, { "line": { "color": "rgba(50, 171, 96, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230227", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 750, 770, 766, 775, 771, 753, 739, 724, 727 ] }, { "line": { "color": "rgba(128, 0, 128, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230234", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1327, 1329, 1303, 1289, 1288, 1313, 1310, 1306, 1304 ] }, { "line": { "color": "rgba(219, 64, 82, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230308", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 513, 481, 452, 412, 391, 387, 370, 378, 380 ] }, { "line": { "color": "rgba(0, 128, 128, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3230310", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 824, 829, 806, 818, 846, 836, 835, 817 ] }, { "line": { "color": "rgba(255, 255, 51, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3250149", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 300, 231, 229, 169, 141, 107, 100, 100, 126 ] }, { "line": { "color": "rgba(128, 128, 0, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3250207", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 677, 682, 684, 702, 695, 667, 674, 690, 742 ] }, { "line": { "color": "rgba(251, 128, 114, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3260289", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 746, 753, 759, 796, 797, 772, 756, 773, 798 ] }, { "line": { "color": "rgba(251, 128, 114, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3260290", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 475, 494, 454, 463, 467, 448, 427, 443, 446 ] }, { "line": { "color": "rgba(128, 177, 211, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3260299", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 534, 536, 552, 576, 571, 568, 581, 590, 625 ] }, { "line": { "color": "rgba(255, 153, 51, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3260303", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 475, 481, 495, 492, 499, 501, 492, 521, 520 ] }, { "line": { "color": "rgba(55, 128, 191, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3410008", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1225, 1222, 1222, 1223, 1215, 1233, 1225, 1214, 1228 ] }, { "line": { "color": "rgba(50, 171, 96, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3410033", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 792, 813, 803, 813, 808, 802, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 0, 128, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3410098", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 804, 808, 816, 814, 800, 799, 806, 813, 784 ] }, { "line": { "color": "rgba(219, 64, 82, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3410209", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 733, 735, 743, 749, 748, 743, 738, 732, 728 ] }, { "line": { "color": "rgba(0, 128, 128, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3410297", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1034, 1044, 978, 926, 918, 923, 904, 904, 903 ] }, { "line": { "color": "rgba(255, 255, 51, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420010", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 952, 948, 965, 985, 1021, 1036, 1037, 1058, 1105 ] }, { "line": { "color": "rgba(128, 128, 0, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420011", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1205, 1206, 1219, 1217, 1224, 1238, 1225, 1215, 1205 ] }, { "line": { "color": "rgba(128, 128, 0, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420012", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 840, 849, 858, 862, 871, 880, 872, 868, 865 ] }, { "line": { "color": "rgba(251, 128, 114, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420032", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 711, 760, 778, 775, 762, 763, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 177, 211, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420034", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 792, 796, 798, 808, 807, 818, 807, 802, 850 ] }, { "line": { "color": "rgba(255, 153, 51, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420046", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 723, 729, 741, 740, 740, 739, 739, 740, 743 ] }, { "line": { "color": "rgba(55, 128, 191, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420058", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 704, 703, 703, 721, 719, 711, 707, 725, 737 ] }, { "line": { "color": "rgba(50, 171, 96, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420068", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 484, 491, 500, 503, 512, 502, 481, 488, 536 ] }, { "line": { "color": "rgba(128, 0, 128, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420077", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 927, 929, 933, 936, 934, 928, 917, 920, 932 ] }, { "line": { "color": "rgba(219, 64, 82, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420080", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1079, 1080, 1078, 1086, 1097, 1080, 1073, 1092, 1104 ] }, { "line": { "color": "rgba(0, 128, 128, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420094", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 609, 0, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(255, 255, 51, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "3420317", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 1490, 1375, 1247 ] }, { "line": { "color": "rgba(255, 255, 51, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210012", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 540, 489, 451, 401, 353, 286, 219, 191, 180 ] }, { "line": { "color": "rgba(128, 128, 0, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210029", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 388, 370, 327, 302, 255, 202, 174, 167, 168 ] }, { "line": { "color": "rgba(251, 128, 114, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210045", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 404, 406, 410, 420, 416, 413, 414, 411, 413 ] }, { "line": { "color": "rgba(128, 177, 211, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210046", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 656, 660, 640, 648, 634, 643, 630, 611, 610 ] }, { "line": { "color": "rgba(255, 153, 51, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210051", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 381, 420, 444, 479, 508, 509, 499, 517, 556 ] }, { "line": { "color": "rgba(55, 128, 191, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210063", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 358, 364, 369, 374, 367, 367, 370, 374, 376 ] }, { "line": { "color": "rgba(50, 171, 96, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210086", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 526, 480, 463, 395, 312, 266, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 0, 128, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210183", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 703, 682, 656, 697, 662, 666, 0, 0, 0 ] }, { "line": { "color": "rgba(219, 64, 82, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210194", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 296, 266, 175, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(0, 128, 128, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210201", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 876, 867, 829, 819, 750, 718, 681, 648, 643 ] }, { "line": { "color": "rgba(0, 128, 128, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210262", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 302, 302, 279, 265, 237, 241, 276, 340, 397 ] }, { "line": { "color": "rgba(255, 255, 51, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210296", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1380, 1412, 1434, 1466, 1464, 1448, 1483, 1487, 1523 ] }, { "line": { "color": "rgba(128, 128, 0, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4210316", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 900, 827, 797 ] }, { "line": { "color": "rgba(251, 128, 114, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230023", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 503, 462, 425, 437, 450, 437, 407, 416, 411 ] }, { "line": { "color": "rgba(128, 177, 211, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230067", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 244, 235, 217, 205, 189, 183, 187, 175, 178 ] }, { "line": { "color": "rgba(255, 153, 51, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230102", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 449, 451, 396, 372, 349, 311, 285, 274, 235 ] }, { "line": { "color": "rgba(55, 128, 191, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230107", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 543, 558, 597, 608, 601, 593, 617, 642, 674 ] }, { "line": { "color": "rgba(50, 171, 96, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230161", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 343, 367, 385, 443, 420, 409, 430, 437, 452 ] }, { "line": { "color": "rgba(128, 0, 128, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230165", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 384, 434, 468, 492, 492, 475, 449, 424, 421 ] }, { "line": { "color": "rgba(219, 64, 82, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230211", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1019, 1033, 1037, 1015, 971, 996, 959, 927, 929 ] }, { "line": { "color": "rgba(219, 64, 82, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230223", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 710, 702, 650, 610, 566, 478, 446, 392, 386 ] }, { "line": { "color": "rgba(0, 128, 128, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4230224", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 339, 357, 358, 354, 368, 360, 364, 356, 370 ] }, { "line": { "color": "rgba(255, 255, 51, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4250024", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 471, 481, 509, 492, 500, 549, 580, 603, 589 ] }, { "line": { "color": "rgba(128, 128, 0, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4250072", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 876, 896, 907, 904, 890, 867, 854, 843, 845 ] }, { "line": { "color": "rgba(251, 128, 114, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4260255", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1229, 1240, 1251, 1249, 1260, 1270, 1265, 1261, 1293 ] }, { "line": { "color": "rgba(128, 177, 211, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4260281", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 521, 525, 532, 547, 546, 577, 597, 594, 618 ] }, { "line": { "color": "rgba(255, 153, 51, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4260295", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 525, 515, 538, 529, 530, 554, 576, 637, 677 ] }, { "line": { "color": "rgba(55, 128, 191, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4260309", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 342, 334, 310, 271, 257, 213, 213, 212, 212 ] }, { "line": { "color": "rgba(50, 171, 96, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4410063", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1414, 1409, 1449, 1465, 1443, 1422, 1425, 1434, 1409 ] }, { "line": { "color": "rgba(128, 0, 128, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4410085", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 941, 946, 950, 968, 976, 979, 969, 951, 929 ] }, { "line": { "color": "rgba(128, 0, 128, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4410097", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1069, 1073, 1077, 1069, 1065, 1060, 1044, 1035, 1030 ] }, { "line": { "color": "rgba(219, 64, 82, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420015", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 888, 901, 880, 864, 858, 875, 874, 860, 867 ] }, { "line": { "color": "rgba(0, 128, 128, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420044", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1062, 1070, 1071, 1080, 1076, 1077, 1077, 1076, 1076 ] }, { "line": { "color": "rgba(255, 255, 51, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420050", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 979, 981, 983, 989, 988, 982, 989, 975, 983 ] }, { "line": { "color": "rgba(128, 128, 0, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420051", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1163, 1166, 1163, 1169, 1164, 1164, 1167, 1152, 1156 ] }, { "line": { "color": "rgba(251, 128, 114, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420086", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 880, 877, 868, 846, 849, 843, 836, 841, 839 ] }, { "line": { "color": "rgba(128, 177, 211, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420088", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 695, 683, 689, 718, 723, 686, 707, 705, 680 ] }, { "line": { "color": "rgba(255, 153, 51, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "4420259", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1268, 1285, 1265, 1264, 1277, 1279, 1271, 1283, 1286 ] }, { "line": { "color": "rgba(55, 128, 191, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210016", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 723, 732, 696, 680, 690, 681, 663, 675, 666 ] }, { "line": { "color": "rgba(50, 171, 96, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210025", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 186, 182, 167, 176, 184, 167, 177, 191, 187 ] }, { "line": { "color": "rgba(50, 171, 96, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210043", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 635, 653, 599, 587, 587, 611, 613, 612, 636 ] }, { "line": { "color": "rgba(128, 0, 128, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210047", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 660, 676, 679, 646, 603, 553, 503, 502, 483 ] }, { "line": { "color": "rgba(219, 64, 82, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210054", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 442, 460, 460, 449, 442, 449, 475, 503, 543 ] }, { "line": { "color": "rgba(0, 128, 128, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210064", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 787, 784, 839, 911, 920, 926, 927, 967, 969 ] }, { "line": { "color": "rgba(255, 255, 51, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210083", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 473, 483, 490, 491, 488, 496, 495, 516, 524 ] }, { "line": { "color": "rgba(128, 128, 0, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210097", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 413, 426, 441, 431, 444, 414, 396, 372, 353 ] }, { "line": { "color": "rgba(251, 128, 114, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210121", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 335, 289, 262, 260, 240, 248, 276, 302, 340 ] }, { "line": { "color": "rgba(128, 177, 211, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210127", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 300, 311, 296, 311, 298, 306, 316, 319, 314 ] }, { "line": { "color": "rgba(255, 153, 51, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210143", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 271, 272, 300, 287, 287, 282, 277, 296, 287 ] }, { "line": { "color": "rgba(55, 128, 191, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210153", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 176, 186, 179, 155, 169, 153, 153, 153, 166 ] }, { "line": { "color": "rgba(55, 128, 191, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210186", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 514, 505, 477, 450, 439, 422, 413, 388, 421 ] }, { "line": { "color": "rgba(50, 171, 96, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210230", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 958, 952, 901, 893, 879, 808, 787, 787, 778 ] }, { "line": { "color": "rgba(128, 0, 128, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210231", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 387, 382, 372, 335, 328, 300, 289, 293, 321 ] }, { "line": { "color": "rgba(219, 64, 82, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210271", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 640, 660, 617, 615, 578, 602, 615, 650, 712 ] }, { "line": { "color": "rgba(0, 128, 128, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5210282", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 676, 605, 622, 679, 666, 610, 590, 577, 579 ] }, { "line": { "color": "rgba(255, 255, 51, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230056", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 429, 447, 416, 394, 384, 381, 348, 352, 346 ] }, { "line": { "color": "rgba(128, 128, 0, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230059", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 266, 248, 230, 193, 169, 154, 156, 148, 153 ] }, { "line": { "color": "rgba(251, 128, 114, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230070", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 562, 528, 522, 502, 491, 457, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 177, 211, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230076", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 439, 426, 387, 350, 287, 291, 299, 325, 387 ] }, { "line": { "color": "rgba(255, 153, 51, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230088", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 468, 466, 458, 395, 380, 320, 0, 0, 0 ] }, { "line": { "color": "rgba(255, 153, 51, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230108", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 574, 546, 562, 554, 552, 554, 570, 569, 576 ] }, { "line": { "color": "rgba(55, 128, 191, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230135", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 879, 886, 897, 889, 881, 851, 851, 811, 815 ] }, { "line": { "color": "rgba(50, 171, 96, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230152", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 792, 795, 809, 801, 815, 800, 803, 789, 795 ] }, { "line": { "color": "rgba(128, 0, 128, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230157", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1488, 1505, 1500, 1496, 1538, 1583, 1599, 1567, 1560 ] }, { "line": { "color": "rgba(219, 64, 82, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230160", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 216, 218, 211, 197, 190, 106, 0, 0, 0 ] }, { "line": { "color": "rgba(0, 128, 128, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230167", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 592, 615, 630, 613, 618, 610, 612, 599, 615 ] }, { "line": { "color": "rgba(255, 255, 51, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230187", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1004, 1045, 1015, 1001, 1020, 1045, 1027, 1037, 1032 ] }, { "line": { "color": "rgba(128, 128, 0, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230192", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 407, 386, 371, 366, 330, 311, 308, 336, 362 ] }, { "line": { "color": "rgba(251, 128, 114, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230213", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1109, 1146, 1153, 1175, 1168, 1157, 1164, 1175, 1142 ] }, { "line": { "color": "rgba(128, 177, 211, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230218", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1125, 1155, 1167, 1138, 1182, 1164, 1130, 1139, 1104 ] }, { "line": { "color": "rgba(128, 177, 211, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230256", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 235, 209, 195, 196, 185, 181, 181, 152, 0 ] }, { "line": { "color": "rgba(255, 153, 51, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230278", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 792, 839, 852, 895, 959, 1002, 1024, 1017, 1021 ] }, { "line": { "color": "rgba(55, 128, 191, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230293", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 600, 632, 643, 655, 624, 631, 623, 597, 590 ] }, { "line": { "color": "rgba(50, 171, 96, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5230321", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 170 ] }, { "line": { "color": "rgba(128, 0, 128, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5250216", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 430, 413, 384, 345, 331, 312, 270, 259, 285 ] }, { "line": { "color": "rgba(219, 64, 82, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5260285", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 520, 531, 536, 542, 569, 584, 597, 612, 615 ] }, { "line": { "color": "rgba(0, 128, 128, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5260286", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 461, 487, 492, 525, 539, 543, 539, 577, 592 ] }, { "line": { "color": "rgba(255, 255, 51, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5410013", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1311, 1325, 1324, 1331, 1327, 1324, 1320, 1312, 1301 ] }, { "line": { "color": "rgba(128, 128, 0, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5410057", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 432, 438, 455, 457, 451, 453, 455, 451, 455 ] }, { "line": { "color": "rgba(251, 128, 114, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5410067", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 789, 788, 780, 778, 798, 791, 788, 778, 744 ] }, { "line": { "color": "rgba(251, 128, 114, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420045", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 586, 587, 585, 587, 586, 591, 588, 564, 564 ] }, { "line": { "color": "rgba(128, 177, 211, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420056", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 567, 566, 573, 573, 582, 612, 0, 0, 0 ] }, { "line": { "color": "rgba(255, 153, 51, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420059", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 880, 887, 894, 907, 900, 911, 902, 882, 885 ] }, { "line": { "color": "rgba(55, 128, 191, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420060", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 861, 861, 864, 861, 858, 845, 853, 854, 853 ] }, { "line": { "color": "rgba(50, 171, 96, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420062", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 919, 940, 942, 920, 900, 904, 897, 903, 885 ] }, { "line": { "color": "rgba(128, 0, 128, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420073", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 527, 555, 579, 604, 635, 678, 707, 709, 686 ] }, { "line": { "color": "rgba(219, 64, 82, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420076", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 836, 846, 845, 849, 855, 853, 854, 852, 843 ] }, { "line": { "color": "rgba(0, 128, 128, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420260", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 646, 658, 665, 652, 653, 660, 650, 652, 638 ] }, { "line": { "color": "rgba(255, 255, 51, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420263", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 682, 0, 706, 712, 722, 720, 724, 735 ] }, { "line": { "color": "rgba(128, 128, 0, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420268", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 803, 0, 0, 0, 0, 972, 975, 967 ] }, { "line": { "color": "rgba(128, 128, 0, 0.20689655172413773)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420304", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 1338, 1340 ] }, { "line": { "color": "rgba(251, 128, 114, 0.20689655172413773)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "5420314", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 1398, 1469 ] } ], "layout": { "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "titlefont": { "color": "#4D5663" }, "xaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" }, "yaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "annual_school_enrolment = enrolment.sum(axis=2).T\n", "annual_school_enrolment.iplot() # Those numbers aren't accessible..." ] }, { "cell_type": "code", "execution_count": 100, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:13:30.944177Z", "start_time": "2018-06-08T18:13:30.672698Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
de refashfield girls' high schoolashfield boys' high schoolbelfast model school for girlsbelfast boys' model schoolorangefield high schoolst patrick's collegest louise's comprehensive collegelittle flower girls' schoolour lady of mercy girls' schoolst rose's high school...abbey christian brothers grammar schoolour lady's grammar schoolst colman's collegest joseph's grammar schoolsacred heart grammar schoolthe royal school dungannonthe royal school armaghst patrick's grammar schoolst patrick's academyst ronan’s college
2009672.0647.0963.0907.0297.0784.01547.0691.0438.0468.0...880.0861.0919.0527.0836.0646.00.00.00.00.0
2010688.0650.0929.0932.0290.0785.01530.0687.0429.0440.0...887.0861.0940.0555.0846.0658.0682.0803.00.00.0
2011703.0649.0899.0913.0264.0764.01530.0690.0384.0406.0...894.0864.0942.0579.0845.0665.00.00.00.00.0
2012708.0666.0930.0930.0247.0765.01521.0692.0367.0388.0...907.0861.0920.0604.0849.0652.0706.00.00.00.0
2013704.0709.0916.0943.088.0705.01516.0684.0423.0352.0...900.0858.0900.0635.0855.0653.0712.00.00.00.0
2014697.0737.0884.0969.00.0679.01518.0644.0433.0316.0...911.0845.0904.0678.0853.0660.0722.00.00.00.0
2015704.0744.0910.0968.00.0674.01474.0637.0446.0273.0...902.0853.0897.0707.0854.0650.0720.0972.00.00.0
2016696.0728.0954.0991.00.0654.01420.0633.0452.0240.0...882.0854.0903.0709.0852.0652.0724.0975.01338.01398.0
2017691.0740.0946.0997.00.00.01435.00.0450.0243.0...885.0853.0885.0686.0843.0638.0735.0967.01340.01469.0
\n", "

9 rows × 232 columns

\n", "
" ], "text/plain": [ "de ref ashfield girls' high school ashfield boys' high school \\\n", "2009 672.0 647.0 \n", "2010 688.0 650.0 \n", "2011 703.0 649.0 \n", "2012 708.0 666.0 \n", "2013 704.0 709.0 \n", "2014 697.0 737.0 \n", "2015 704.0 744.0 \n", "2016 696.0 728.0 \n", "2017 691.0 740.0 \n", "\n", "de ref belfast model school for girls belfast boys' model school \\\n", "2009 963.0 907.0 \n", "2010 929.0 932.0 \n", "2011 899.0 913.0 \n", "2012 930.0 930.0 \n", "2013 916.0 943.0 \n", "2014 884.0 969.0 \n", "2015 910.0 968.0 \n", "2016 954.0 991.0 \n", "2017 946.0 997.0 \n", "\n", "de ref orangefield high school st patrick's college \\\n", "2009 297.0 784.0 \n", "2010 290.0 785.0 \n", "2011 264.0 764.0 \n", "2012 247.0 765.0 \n", "2013 88.0 705.0 \n", "2014 0.0 679.0 \n", "2015 0.0 674.0 \n", "2016 0.0 654.0 \n", "2017 0.0 0.0 \n", "\n", "de ref st louise's comprehensive college little flower girls' school \\\n", "2009 1547.0 691.0 \n", "2010 1530.0 687.0 \n", "2011 1530.0 690.0 \n", "2012 1521.0 692.0 \n", "2013 1516.0 684.0 \n", "2014 1518.0 644.0 \n", "2015 1474.0 637.0 \n", "2016 1420.0 633.0 \n", "2017 1435.0 0.0 \n", "\n", "de ref our lady of mercy girls' school st rose's high school \\\n", "2009 438.0 468.0 \n", "2010 429.0 440.0 \n", "2011 384.0 406.0 \n", "2012 367.0 388.0 \n", "2013 423.0 352.0 \n", "2014 433.0 316.0 \n", "2015 446.0 273.0 \n", "2016 452.0 240.0 \n", "2017 450.0 243.0 \n", "\n", "de ref ... abbey christian brothers grammar school \\\n", "2009 ... 880.0 \n", "2010 ... 887.0 \n", "2011 ... 894.0 \n", "2012 ... 907.0 \n", "2013 ... 900.0 \n", "2014 ... 911.0 \n", "2015 ... 902.0 \n", "2016 ... 882.0 \n", "2017 ... 885.0 \n", "\n", "de ref our lady's grammar school st colman's college \\\n", "2009 861.0 919.0 \n", "2010 861.0 940.0 \n", "2011 864.0 942.0 \n", "2012 861.0 920.0 \n", "2013 858.0 900.0 \n", "2014 845.0 904.0 \n", "2015 853.0 897.0 \n", "2016 854.0 903.0 \n", "2017 853.0 885.0 \n", "\n", "de ref st joseph's grammar school sacred heart grammar school \\\n", "2009 527.0 836.0 \n", "2010 555.0 846.0 \n", "2011 579.0 845.0 \n", "2012 604.0 849.0 \n", "2013 635.0 855.0 \n", "2014 678.0 853.0 \n", "2015 707.0 854.0 \n", "2016 709.0 852.0 \n", "2017 686.0 843.0 \n", "\n", "de ref the royal school dungannon the royal school armagh \\\n", "2009 646.0 0.0 \n", "2010 658.0 682.0 \n", "2011 665.0 0.0 \n", "2012 652.0 706.0 \n", "2013 653.0 712.0 \n", "2014 660.0 722.0 \n", "2015 650.0 720.0 \n", "2016 652.0 724.0 \n", "2017 638.0 735.0 \n", "\n", "de ref st patrick's grammar school st patrick's academy st ronan’s college \n", "2009 0.0 0.0 0.0 \n", "2010 803.0 0.0 0.0 \n", "2011 0.0 0.0 0.0 \n", "2012 0.0 0.0 0.0 \n", "2013 0.0 0.0 0.0 \n", "2014 0.0 0.0 0.0 \n", "2015 972.0 0.0 0.0 \n", "2016 975.0 1338.0 1398.0 \n", "2017 967.0 1340.0 1469.0 \n", "\n", "[9 rows x 232 columns]" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "name_lookup = reference.minor_xs('school name').T.describe().ix['top']\n", "annual_school_enrolment.rename(columns=name_lookup)" ] }, { "cell_type": "code", "execution_count": 237, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:13:52.286734Z", "start_time": "2018-06-09T09:13:51.972805Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "line": { "color": "rgba(255, 153, 51, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "ashfield girls' high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 672, 688, 703, 708, 704, 697, 704, 696, 691 ] }, { "line": { "color": "rgba(55, 128, 191, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "ashfield boys' high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 647, 650, 649, 666, 709, 737, 744, 728, 740 ] }, { "line": { "color": "rgba(50, 171, 96, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "belfast model school for girls", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 963, 929, 899, 930, 916, 884, 910, 954, 946 ] }, { "line": { "color": "rgba(128, 0, 128, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "belfast boys' model school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 907, 932, 913, 930, 943, 969, 968, 991, 997 ] }, { "line": { "color": "rgba(219, 64, 82, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "orangefield high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 297, 290, 264, 247, 88, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(55, 128, 191, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st patrick's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 784, 331, 505, 439, 600 ], [ 785, 336, 524, 426, 632 ], [ 764, 323, 515, 387, 643 ], [ 765, 287, 515, 350, 655 ], [ 705, 280, 517, 287, 624 ], [ 679, 262, 532, 291, 631 ], [ 674, 258, 522, 299, 623 ], [ 654, 241, 506, 325, 597 ], [ 0, 261, 498, 387, 590 ] ] }, { "line": { "color": "rgba(255, 255, 51, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st louise's comprehensive college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1547, 1530, 1530, 1521, 1516, 1518, 1474, 1420, 1435 ] }, { "line": { "color": "rgba(128, 128, 0, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "little flower girls' school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 691, 687, 690, 692, 684, 644, 637, 633, 0 ] }, { "line": { "color": "rgba(251, 128, 114, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "our lady of mercy girls' school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 438, 429, 384, 367, 423, 433, 446, 452, 450 ] }, { "line": { "color": "rgba(128, 177, 211, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st rose's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 468, 440, 406, 388, 352, 316, 273, 240, 243 ] }, { "line": { "color": "rgba(128, 177, 211, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "christian brothers school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 508, 513, 528, 529, 490, 490, 498, 500, 525 ] }, { "line": { "color": "rgba(255, 153, 51, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st genevieve's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1011, 1027, 1043, 1069, 1078, 1061, 1070, 1059, 1022 ] }, { "line": { "color": "rgba(55, 128, 191, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st gemma's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 227, 200, 160, 110, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(50, 171, 96, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "de la salle college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1116, 1088, 1088, 1098, 1093, 1116, 1117, 1104, 958 ] }, { "line": { "color": "rgba(128, 0, 128, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "corpus christi college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 568, 529, 476, 440, 413, 344, 311, 258, 233 ] }, { "line": { "color": "rgba(128, 128, 0, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st joseph's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 587, 243, 348, 407 ], [ 566, 238, 363, 386 ], [ 550, 231, 350, 371 ], [ 538, 232, 351, 366 ], [ 571, 249, 321, 330 ], [ 634, 266, 292, 311 ], [ 629, 262, 280, 308 ], [ 631, 245, 256, 336 ], [ 658, 239, 183, 362 ] ] }, { "line": { "color": "rgba(0, 128, 128, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "blessed trinity college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 1271 ] }, { "line": { "color": "rgba(255, 255, 51, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "colaiste feirste", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 561, 553, 550, 541, 564, 581, 605, 646, 651 ] }, { "line": { "color": "rgba(128, 128, 0, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "hazelwood college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 865, 862, 864, 868, 894, 916, 900, 936, 954 ] }, { "line": { "color": "rgba(251, 128, 114, 0.9655172413793103)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "malone integrated college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 751, 750, 710, 708, 656, 617, 591, 535, 485 ] }, { "line": { "color": "rgba(251, 128, 114, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "grosvenor grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1087, 1086, 1090, 1090, 1090, 1090, 1087, 1086, 1080 ] }, { "line": { "color": "rgba(128, 177, 211, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "wellington college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 778, 775, 783, 783, 804, 815, 790, 765, 742 ] }, { "line": { "color": "rgba(55, 128, 191, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "bloomfield collegiate", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 0, 712 ], [ 0, 712 ], [ 0, 719 ], [ 0, 709 ], [ 0, 696 ], [ 695, 0 ], [ 691, 0 ], [ 688, 0 ], [ 700, 0 ] ] }, { "line": { "color": "rgba(55, 128, 191, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "bloomfield collegiate", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 0, 712 ], [ 0, 712 ], [ 0, 719 ], [ 0, 709 ], [ 0, 696 ], [ 695, 0 ], [ 691, 0 ], [ 688, 0 ], [ 700, 0 ] ] }, { "line": { "color": "rgba(50, 171, 96, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "campbell college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 913, 929, 896, 901, 892, 899, 900, 921, 922 ] }, { "line": { "color": "rgba(128, 0, 128, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st mary's christian brothers' grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1163, 1181, 1196, 1205, 1208, 1200, 1186, 1161, 1165 ] }, { "line": { "color": "rgba(219, 64, 82, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "methodist college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1776, 1777, 1783, 1784, 1753, 1788, 1776, 1777, 1776 ] }, { "line": { "color": "rgba(0, 128, 128, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "the royal belfast academical institution", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1038, 1041, 1050, 1045, 1035, 1009, 1025, 1025, 1012 ] }, { "line": { "color": "rgba(255, 255, 51, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "belfast royal academy", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1401, 1416, 1421, 1403, 1409, 1396, 1400, 1421, 1461 ] }, { "line": { "color": "rgba(128, 128, 0, 0.9310344827586206)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st dominic's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1004, 995, 1000, 1003, 1022, 1021, 1031, 1034, 1012 ] }, { "line": { "color": "rgba(128, 128, 0, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st malachy's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1018, 1025, 1024, 1033, 1068, 1071, 1057, 1078, 1094 ] }, { "line": { "color": "rgba(50, 171, 96, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "dominican college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 1031, 484 ], [ 1016, 491 ], [ 1007, 500 ], [ 1012, 503 ], [ 1030, 512 ], [ 1023, 502 ], [ 1026, 481 ], [ 1005, 488 ], [ 1001, 536 ] ] }, { "line": { "color": "rgba(128, 177, 211, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "strathearn school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 749, 756, 766, 770, 777, 781, 783, 772, 778 ] }, { "line": { "color": "rgba(255, 153, 51, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "rathmore grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1277, 1275, 1273, 1273, 1265, 1274, 1276, 1269, 1270 ] }, { "line": { "color": "rgba(55, 128, 191, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "victoria college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 864, 870, 869, 874, 900, 897, 874, 881, 897 ] }, { "line": { "color": "rgba(50, 171, 96, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "hunterhouse college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 693, 710, 718, 708, 714, 697, 697, 702, 698 ] }, { "line": { "color": "rgba(128, 0, 128, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "aquinas diocesan grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 810, 806, 818, 819, 809, 807, 811, 811, 815 ] }, { "line": { "color": "rgba(219, 64, 82, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "castlederg high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 464, 477, 473, 471, 437, 459, 421, 406, 396 ] }, { "line": { "color": "rgba(0, 128, 128, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "lisnaskea high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 142, 132, 133, 107, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(255, 255, 51, 0.896551724137931)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "omagh high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 478, 445, 430, 403, 403, 396, 398, 412, 421 ] }, { "line": { "color": "rgba(255, 255, 51, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "strabane high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 300, 276, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 128, 0, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "limavady high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 740, 748, 757, 757, 752, 729, 721, 720, 741 ] }, { "line": { "color": "rgba(255, 153, 51, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "devenish college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 614, 0 ], [ 574, 0 ], [ 538, 0 ], [ 485, 0 ], [ 0, 537 ], [ 0, 519 ], [ 0, 481 ], [ 0, 479 ], [ 0, 512 ] ] }, { "line": { "color": "rgba(128, 177, 211, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "lisneal college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 893, 867, 830, 781, 770, 664, 576, 587, 596 ] }, { "line": { "color": "rgba(255, 153, 51, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "devenish college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 614, 0 ], [ 574, 0 ], [ 538, 0 ], [ 485, 0 ], [ 0, 537 ], [ 0, 519 ], [ 0, 481 ], [ 0, 479 ], [ 0, 512 ] ] }, { "line": { "color": "rgba(55, 128, 191, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st mary's limavady", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 727, 725, 717, 683, 654, 624, 607, 571, 552 ] }, { "line": { "color": "rgba(128, 177, 211, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st mary's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 854, 164, 282 ], [ 863, 166, 317 ], [ 871, 161, 329 ], [ 873, 187, 341 ], [ 887, 182, 321 ], [ 880, 150, 315 ], [ 865, 139, 309 ], [ 866, 127, 281 ], [ 864, 120, 288 ] ] }, { "line": { "color": "rgba(255, 153, 51, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st mary's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 137, 503, 562, 574 ], [ 145, 462, 528, 546 ], [ 133, 425, 522, 562 ], [ 136, 437, 502, 554 ], [ 121, 450, 491, 552 ], [ 109, 437, 457, 554 ], [ 89, 407, 0, 570 ], [ 84, 416, 0, 569 ], [ 85, 411, 0, 576 ] ] }, { "line": { "color": "rgba(219, 64, 82, 0.8620689655172413)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st fanchea's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 331, 321, 323, 318, 330, 328, 336, 328, 318 ] }, { "line": { "color": "rgba(128, 128, 0, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st joseph's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 587, 243, 348, 407 ], [ 566, 238, 363, 386 ], [ 550, 231, 350, 371 ], [ 538, 232, 351, 366 ], [ 571, 249, 321, 330 ], [ 634, 266, 292, 311 ], [ 629, 262, 280, 308 ], [ 631, 245, 256, 336 ], [ 658, 239, 183, 362 ] ] }, { "line": { "color": "rgba(128, 177, 211, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st mary's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 854, 164, 282 ], [ 863, 166, 317 ], [ 871, 161, 329 ], [ 873, 187, 341 ], [ 887, 182, 321 ], [ 880, 150, 315 ], [ 865, 139, 309 ], [ 866, 127, 281 ], [ 864, 120, 288 ] ] }, { "line": { "color": "rgba(255, 255, 51, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st eugene's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 146, 125, 127, 58, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 128, 0, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st patricks & st brigids high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 526, 526, 512, 514, 523, 524, 517, 499, 486 ] }, { "line": { "color": "rgba(251, 128, 114, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st joseph's boys' school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 875, 885, 892, 910, 936, 900, 868, 791, 720 ] }, { "line": { "color": "rgba(128, 177, 211, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "dean maguirc college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 485, 473, 464, 490, 489, 489, 509, 509, 504 ] }, { "line": { "color": "rgba(55, 128, 191, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st patrick's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 784, 331, 505, 439, 600 ], [ 785, 336, 524, 426, 632 ], [ 764, 323, 515, 387, 643 ], [ 765, 287, 515, 350, 655 ], [ 705, 280, 517, 287, 624 ], [ 679, 262, 532, 291, 631 ], [ 674, 258, 522, 299, 623 ], [ 654, 241, 506, 325, 597 ], [ 0, 261, 498, 387, 590 ] ] }, { "line": { "color": "rgba(55, 128, 191, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st john's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 145, 140, 147, 169, 185, 177, 177, 178, 174 ] }, { "line": { "color": "rgba(50, 171, 96, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st aidan's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 167, 177, 170, 177, 171, 176, 178, 202, 208 ] }, { "line": { "color": "rgba(128, 0, 128, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st eugene's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 180, 190, 174, 134, 111, 78, 56, 38, 0 ] }, { "line": { "color": "rgba(219, 64, 82, 0.8275862068965516)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st peter's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 231, 206, 170, 64, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(219, 64, 82, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st cecilia's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 866, 871, 867, 856, 856, 837, 821, 784, 797 ] }, { "line": { "color": "rgba(0, 128, 128, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st comhghall's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 346, 376, 371, 423, 427, 470, 490, 533, 0 ] }, { "line": { "color": "rgba(255, 255, 51, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st brigid's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 722, 687, 647, 583, 528, 514, 561, 600, 654 ] }, { "line": { "color": "rgba(128, 128, 0, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "immaculate conception college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 238, 223, 202, 180, 123, 42, 0, 0, 0 ] }, { "line": { "color": "rgba(251, 128, 114, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "sacred heart college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 975, 955, 921, 922, 914, 882, 837, 767, 742 ] }, { "line": { "color": "rgba(128, 177, 211, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "holy cross college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1390, 1462, 1509, 1550, 1554, 1615, 1539, 1564, 1583 ] }, { "line": { "color": "rgba(255, 153, 51, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st kevin's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 589 ] }, { "line": { "color": "rgba(55, 128, 191, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "gaelcholáiste dhoire", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 15, 48, 83 ] }, { "line": { "color": "rgba(50, 171, 96, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "oakgrove integrated college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 848, 854, 843, 847, 871, 855, 819, 787, 744 ] }, { "line": { "color": "rgba(128, 0, 128, 0.7931034482758619)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "erne integrated college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 417, 420, 424, 429, 421, 411, 414, 412, 391 ] }, { "line": { "color": "rgba(128, 0, 128, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "drumragh college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 636, 648, 658, 659, 672, 663, 649, 652, 637 ] }, { "line": { "color": "rgba(219, 64, 82, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "collegiate grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 496, 496, 494, 490, 503, 505, 503, 0, 0 ] }, { "line": { "color": "rgba(0, 128, 128, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "limavady grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 912, 891, 898, 898, 899, 884, 891, 889, 879 ] }, { "line": { "color": "rgba(255, 255, 51, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "omagh academy", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 655, 648, 657, 675, 660, 664, 673, 671, 675 ] }, { "line": { "color": "rgba(128, 128, 0, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "strabane grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 413, 406, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(251, 128, 114, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "strabane academy", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 666, 652, 639, 605, 591, 544, 524 ] }, { "line": { "color": "rgba(128, 177, 211, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "mount lourdes grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 783, 787, 767, 743, 744, 747, 753, 760, 763 ] }, { "line": { "color": "rgba(255, 153, 51, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "portora royal school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 470, 464, 487, 491, 497, 495, 498, 0, 0 ] }, { "line": { "color": "rgba(55, 128, 191, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st michael's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 719, 721, 743, 720, 710, 714, 721, 694, 676 ] }, { "line": { "color": "rgba(50, 171, 96, 0.7586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "thornhill college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1400, 1399, 1403, 1407, 1400, 1398, 1402, 1398, 1377 ] }, { "line": { "color": "rgba(50, 171, 96, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st columb's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1525, 1541, 1523, 1539, 1514, 1534, 1508, 1455, 1420 ] }, { "line": { "color": "rgba(128, 0, 128, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "christian brothers' grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 940, 961, 968, 967, 965, 968, 976, 977, 964 ] }, { "line": { "color": "rgba(219, 64, 82, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "loreto grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 890, 887, 892, 900, 893, 882, 880, 895, 888 ] }, { "line": { "color": "rgba(0, 128, 128, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "foyle & londonderry college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 871, 878, 862, 852, 854, 834, 822, 813, 816 ] }, { "line": { "color": "rgba(255, 255, 51, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "lumen christi college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 847, 849, 848, 852, 847, 851, 854, 854, 855 ] }, { "line": { "color": "rgba(128, 128, 0, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "enniskillen royal grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 985, 971 ] }, { "line": { "color": "rgba(251, 128, 114, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "garvagh high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 141, 120, 93, 26, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 177, 211, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "magherafelt high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 579, 586, 594, 582, 559, 579, 544, 546, 542 ] }, { "line": { "color": "rgba(255, 153, 51, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "larne high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 511, 512, 506, 506, 471, 483, 499, 525, 583 ] }, { "line": { "color": "rgba(55, 128, 191, 0.7241379310344827)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "carrickfergus college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 746, 716, 685, 671, 653, 670, 684, 731, 765 ] }, { "line": { "color": "rgba(55, 128, 191, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "ballycastle high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 345, 365, 359, 375, 388, 417, 411, 395, 412 ] }, { "line": { "color": "rgba(50, 171, 96, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "ballymoney high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 659, 661, 643, 666, 650, 655, 649, 653, 604 ] }, { "line": { "color": "rgba(128, 0, 128, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "ballyclare secondary school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1016, 1009, 1030, 1037, 1037, 1027, 1022, 1036, 1050 ] }, { "line": { "color": "rgba(219, 64, 82, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "cullybackey high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 683, 689, 682, 674, 661, 654, 632, 646, 649 ] }, { "line": { "color": "rgba(0, 128, 128, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "monkstown community school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 718, 710, 652, 635, 554, 478, 0, 0, 0 ] }, { "line": { "color": "rgba(255, 255, 51, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "glengormley high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1023, 994, 951, 877, 873, 838, 790, 750, 725 ] }, { "line": { "color": "rgba(128, 128, 0, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "dunclug college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 644, 639, 657, 703, 711, 839, 838, 868, 851 ] }, { "line": { "color": "rgba(251, 128, 114, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "dunluce high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 482, 488, 499, 468, 410, 387, 353, 308, 287 ] }, { "line": { "color": "rgba(128, 177, 211, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "downshire school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 796, 800, 782, 725, 670, 630, 542, 511, 453 ] }, { "line": { "color": "rgba(255, 153, 51, 0.6896551724137929)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "ballee community high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 301, 298, 270, 227, 153, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(255, 153, 51, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "newtownabbey community high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 240, 229, 230, 223, 206, 188, 0, 0, 0 ] }, { "line": { "color": "rgba(55, 128, 191, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "coleraine college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 314, 304, 262, 261, 244, 232, 212, 236, 230 ] }, { "line": { "color": "rgba(50, 171, 96, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "abbey community college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 613, 580, 591 ] }, { "line": { "color": "rgba(128, 0, 128, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st aloysius high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 43, 0, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(219, 64, 82, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st comgall's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 153, 0, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(0, 128, 128, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "our lady of lourdes high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 223, 218, 235, 238, 236, 227, 225, 222, 222 ] }, { "line": { "color": "rgba(55, 128, 191, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st patrick's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 784, 331, 505, 439, 600 ], [ 785, 336, 524, 426, 632 ], [ 764, 323, 515, 387, 643 ], [ 765, 287, 515, 350, 655 ], [ 705, 280, 517, 287, 624 ], [ 679, 262, 532, 291, 631 ], [ 674, 258, 522, 299, 623 ], [ 654, 241, 506, 325, 597 ], [ 0, 261, 498, 387, 590 ] ] }, { "line": { "color": "rgba(128, 128, 0, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st joseph's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 587, 243, 348, 407 ], [ 566, 238, 363, 386 ], [ 550, 231, 350, 371 ], [ 538, 232, 351, 366 ], [ 571, 249, 321, 330 ], [ 634, 266, 292, 311 ], [ 629, 262, 280, 308 ], [ 631, 245, 256, 336 ], [ 658, 239, 183, 362 ] ] }, { "line": { "color": "rgba(219, 64, 82, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st colm's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 428, 710 ], [ 424, 702 ], [ 433, 650 ], [ 442, 610 ], [ 441, 566 ], [ 446, 478 ], [ 431, 446 ], [ 436, 392 ], [ 454, 386 ] ] }, { "line": { "color": "rgba(128, 177, 211, 0.6551724137931032)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st mary's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 854, 164, 282 ], [ 863, 166, 317 ], [ 871, 161, 329 ], [ 873, 187, 341 ], [ 887, 182, 321 ], [ 880, 150, 315 ], [ 865, 139, 309 ], [ 866, 127, 281 ], [ 864, 120, 288 ] ] }, { "line": { "color": "rgba(128, 177, 211, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st paul's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 315, 328, 317, 317, 305, 292, 290, 292, 274 ] }, { "line": { "color": "rgba(255, 153, 51, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st pius x college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 905, 909, 927, 939, 933, 941, 935, 928, 920 ] }, { "line": { "color": "rgba(55, 128, 191, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "edmund rice college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 627, 617, 596, 608, 604, 605, 592, 569, 593 ] }, { "line": { "color": "rgba(50, 171, 96, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "cross and passion college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 750, 770, 766, 775, 771, 753, 739, 724, 727 ] }, { "line": { "color": "rgba(128, 0, 128, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st patrick's co-ed comprehensive college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1327, 1329, 1303, 1289, 1288, 1313, 1310, 1306, 1304 ] }, { "line": { "color": "rgba(219, 64, 82, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st benedict's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 513, 481, 452, 412, 391, 387, 370, 378, 380 ] }, { "line": { "color": "rgba(0, 128, 128, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st killian's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 824, 829, 806, 818, 846, 836, 835, 817 ] }, { "line": { "color": "rgba(255, 255, 51, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "crumlin integrated college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 300, 231, 229, 169, 141, 107, 100, 100, 126 ] }, { "line": { "color": "rgba(128, 128, 0, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "parkhall integrated college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 677, 682, 684, 702, 695, 667, 674, 690, 742 ] }, { "line": { "color": "rgba(251, 128, 114, 0.6206896551724137)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "slemish college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 746, 753, 759, 796, 797, 772, 756, 773, 798 ] }, { "line": { "color": "rgba(251, 128, 114, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "north coast integrated college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 475, 494, 454, 463, 467, 448, 427, 443, 446 ] }, { "line": { "color": "rgba(128, 177, 211, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "ulidia integrated college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 534, 536, 552, 576, 571, 568, 581, 590, 625 ] }, { "line": { "color": "rgba(255, 153, 51, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "sperrin integrated college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 475, 481, 495, 492, 499, 501, 492, 521, 520 ] }, { "line": { "color": "rgba(55, 128, 191, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "ballyclare high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1225, 1222, 1222, 1223, 1215, 1233, 1225, 1214, 1228 ] }, { "line": { "color": "rgba(50, 171, 96, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "coleraine high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 792, 813, 803, 813, 808, 802, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 0, 128, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "carrickfergus grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 804, 808, 816, 814, 800, 799, 806, 813, 784 ] }, { "line": { "color": "rgba(219, 64, 82, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "antrim grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 733, 735, 743, 749, 748, 743, 738, 732, 728 ] }, { "line": { "color": "rgba(0, 128, 128, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "cambridge house grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1034, 1044, 978, 926, 918, 923, 904, 904, 903 ] }, { "line": { "color": "rgba(251, 128, 114, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st louis grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 952, 586 ], [ 948, 587 ], [ 965, 585 ], [ 985, 587 ], [ 1021, 586 ], [ 1036, 591 ], [ 1037, 588 ], [ 1058, 564 ], [ 1105, 564 ] ] }, { "line": { "color": "rgba(128, 128, 0, 0.586206896551724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "ballymena academy", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1205, 1206, 1219, 1217, 1224, 1238, 1225, 1215, 1205 ] }, { "line": { "color": "rgba(128, 128, 0, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "dalriada school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 840, 849, 858, 862, 871, 880, 872, 868, 865 ] }, { "line": { "color": "rgba(251, 128, 114, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "coleraine academical institution", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 711, 760, 778, 775, 762, 763, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 177, 211, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "loreto college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 792, 796, 798, 808, 807, 818, 807, 802, 850 ] }, { "line": { "color": "rgba(255, 153, 51, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "larne grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 723, 729, 741, 740, 740, 739, 739, 740, 743 ] }, { "line": { "color": "rgba(55, 128, 191, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "rainey endowed school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 704, 703, 703, 721, 719, 711, 707, 725, 737 ] }, { "line": { "color": "rgba(50, 171, 96, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "dominican college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 1031, 484 ], [ 1016, 491 ], [ 1007, 500 ], [ 1012, 503 ], [ 1030, 512 ], [ 1023, 502 ], [ 1026, 481 ], [ 1005, 488 ], [ 1001, 536 ] ] }, { "line": { "color": "rgba(128, 0, 128, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "belfast high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 927, 929, 933, 936, 934, 928, 917, 920, 932 ] }, { "line": { "color": "rgba(219, 64, 82, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st mary's grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1079, 1080, 1078, 1086, 1097, 1080, 1073, 1092, 1104 ] }, { "line": { "color": "rgba(0, 128, 128, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st macnissi's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 609, 0, 0, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(255, 255, 51, 0.5517241379310343)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "coleraine grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 1490, 1375, 1247 ] }, { "line": { "color": "rgba(255, 255, 51, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "movilla high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 540, 489, 451, 401, 353, 286, 219, 191, 180 ] }, { "line": { "color": "rgba(128, 128, 0, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "the high school ballynahinch", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 388, 370, 327, 302, 255, 202, 174, 167, 168 ] }, { "line": { "color": "rgba(251, 128, 114, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "nendrum college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 404, 406, 410, 420, 416, 413, 414, 411, 413 ] }, { "line": { "color": "rgba(128, 177, 211, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "glastry college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 656, 660, 640, 648, 634, 643, 630, 611, 610 ] }, { "line": { "color": "rgba(255, 153, 51, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "lisnagarvey high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 381, 420, 444, 479, 508, 509, 499, 517, 556 ] }, { "line": { "color": "rgba(55, 128, 191, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "saintfield high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 358, 364, 369, 374, 367, 367, 370, 374, 376 ] }, { "line": { "color": "rgba(50, 171, 96, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "knockbreda high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 526, 480, 463, 395, 312, 266, 0, 0, 0 ] }, { "line": { "color": "rgba(128, 0, 128, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "newtownbreda high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 703, 682, 656, 697, 662, 666, 0, 0, 0 ] }, { "line": { "color": "rgba(219, 64, 82, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "dunmurry high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 296, 266, 175, 0, 0, 0, 0, 0, 0 ] }, { "line": { "color": "rgba(0, 128, 128, 0.5172413793103445)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "laurelhill community college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 876, 867, 829, 819, 750, 718, 681, 648, 643 ] }, { "line": { "color": "rgba(0, 128, 128, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "dundonald high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 302, 302, 279, 265, 237, 241, 276, 340, 397 ] }, { "line": { "color": "rgba(255, 255, 51, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "bangor academy and 6th form college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1380, 1412, 1434, 1466, 1464, 1448, 1483, 1487, 1523 ] }, { "line": { "color": "rgba(128, 128, 0, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "breda academy", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 900, 827, 797 ] }, { "line": { "color": "rgba(255, 153, 51, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st mary's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 137, 503, 562, 574 ], [ 145, 462, 528, 546 ], [ 133, 425, 522, 562 ], [ 136, 437, 502, 554 ], [ 121, 450, 491, 552 ], [ 109, 437, 457, 554 ], [ 89, 407, 0, 570 ], [ 84, 416, 0, 569 ], [ 85, 411, 0, 576 ] ] }, { "line": { "color": "rgba(128, 177, 211, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st columba's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 244, 235, 217, 205, 189, 183, 187, 175, 178 ] }, { "line": { "color": "rgba(255, 153, 51, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st colmcille's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 449, 451, 396, 372, 349, 311, 285, 274, 235 ] }, { "line": { "color": "rgba(55, 128, 191, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st columbanus' college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 543, 558, 597, 608, 601, 593, 617, 642, 674 ] }, { "line": { "color": "rgba(50, 171, 96, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st colman's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 343, 367, 385, 443, 420, 409, 430, 437, 452 ] }, { "line": { "color": "rgba(255, 255, 51, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st patrick's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 384, 1004 ], [ 434, 1045 ], [ 468, 1015 ], [ 492, 1001 ], [ 492, 1020 ], [ 475, 1045 ], [ 449, 1027 ], [ 424, 1037 ], [ 421, 1032 ] ] }, { "line": { "color": "rgba(219, 64, 82, 0.4827586206896551)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st malachy's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1019, 1033, 1037, 1015, 971, 996, 959, 927, 929 ] }, { "line": { "color": "rgba(219, 64, 82, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st colm's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 428, 710 ], [ 424, 702 ], [ 433, 650 ], [ 442, 610 ], [ 441, 566 ], [ 446, 478 ], [ 431, 446 ], [ 436, 392 ], [ 454, 386 ] ] }, { "line": { "color": "rgba(0, 128, 128, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "de la salle high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 339, 357, 358, 354, 368, 360, 364, 356, 370 ] }, { "line": { "color": "rgba(255, 255, 51, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "priory college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 471, 481, 509, 492, 500, 549, 580, 603, 589 ] }, { "line": { "color": "rgba(128, 128, 0, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "fort hill college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 876, 896, 907, 904, 890, 867, 854, 843, 845 ] }, { "line": { "color": "rgba(251, 128, 114, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "lagan college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1229, 1240, 1251, 1249, 1260, 1270, 1265, 1261, 1293 ] }, { "line": { "color": "rgba(128, 177, 211, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "shimna integrated college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 521, 525, 532, 547, 546, 577, 597, 594, 618 ] }, { "line": { "color": "rgba(255, 153, 51, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "strangford integrated college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 525, 515, 538, 529, 530, 554, 576, 637, 677 ] }, { "line": { "color": "rgba(55, 128, 191, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "blackwater integrated college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 342, 334, 310, 271, 257, 213, 213, 212, 212 ] }, { "line": { "color": "rgba(50, 171, 96, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "regent house school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1414, 1409, 1449, 1465, 1443, 1422, 1425, 1434, 1409 ] }, { "line": { "color": "rgba(128, 0, 128, 0.44827586206896536)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "down high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 941, 946, 950, 968, 976, 979, 969, 951, 929 ] }, { "line": { "color": "rgba(128, 0, 128, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "glenlola collegiate", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1069, 1073, 1077, 1069, 1065, 1060, 1044, 1035, 1030 ] }, { "line": { "color": "rgba(219, 64, 82, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "bangor grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 888, 901, 880, 864, 858, 875, 874, 860, 867 ] }, { "line": { "color": "rgba(0, 128, 128, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "sullivan upper school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1062, 1070, 1071, 1080, 1076, 1077, 1077, 1076, 1076 ] }, { "line": { "color": "rgba(255, 255, 51, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "friends' school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 979, 981, 983, 989, 988, 982, 989, 975, 983 ] }, { "line": { "color": "rgba(128, 128, 0, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "wallace high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1163, 1166, 1163, 1169, 1164, 1164, 1167, 1152, 1156 ] }, { "line": { "color": "rgba(251, 128, 114, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "assumption grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 880, 877, 868, 846, 849, 843, 836, 841, 839 ] }, { "line": { "color": "rgba(128, 128, 0, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st patrick's grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 695, 0 ], [ 683, 803 ], [ 689, 0 ], [ 718, 0 ], [ 723, 0 ], [ 686, 0 ], [ 707, 972 ], [ 705, 975 ], [ 680, 967 ] ] }, { "line": { "color": "rgba(255, 153, 51, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "our lady and st patrick's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1268, 1285, 1265, 1264, 1277, 1279, 1271, 1283, 1286 ] }, { "line": { "color": "rgba(55, 128, 191, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "kilkeel high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 723, 732, 696, 680, 690, 681, 663, 675, 666 ] }, { "line": { "color": "rgba(50, 171, 96, 0.41379310344827563)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "newtownhamilton high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 186, 182, 167, 176, 184, 167, 177, 191, 187 ] }, { "line": { "color": "rgba(50, 171, 96, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "clounagh junior high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 635, 653, 599, 587, 587, 611, 613, 612, 636 ] }, { "line": { "color": "rgba(128, 0, 128, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "banbridge high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 660, 676, 679, 646, 603, 553, 503, 502, 483 ] }, { "line": { "color": "rgba(219, 64, 82, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "killicomaine junior high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 442, 460, 460, 449, 442, 449, 475, 503, 543 ] }, { "line": { "color": "rgba(0, 128, 128, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "dromore high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 787, 784, 839, 911, 920, 926, 927, 967, 969 ] }, { "line": { "color": "rgba(255, 255, 51, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "markethill high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 473, 483, 490, 491, 488, 496, 495, 516, 524 ] }, { "line": { "color": "rgba(128, 128, 0, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "fivemiletown college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 413, 426, 441, 431, 444, 414, 396, 372, 353 ] }, { "line": { "color": "rgba(251, 128, 114, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "city armagh high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 335, 289, 262, 260, 240, 248, 276, 302, 340 ] }, { "line": { "color": "rgba(128, 177, 211, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "rathfriland high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 300, 311, 296, 311, 298, 306, 316, 319, 314 ] }, { "line": { "color": "rgba(255, 153, 51, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "tandragee junior high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 271, 272, 300, 287, 287, 282, 277, 296, 287 ] }, { "line": { "color": "rgba(55, 128, 191, 0.3793103448275859)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "aughnacloy high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 176, 186, 179, 155, 169, 153, 153, 153, 166 ] }, { "line": { "color": "rgba(55, 128, 191, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "newry high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 514, 505, 477, 450, 439, 422, 413, 388, 421 ] }, { "line": { "color": "rgba(50, 171, 96, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "cookstown high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 958, 952, 901, 893, 879, 808, 787, 787, 778 ] }, { "line": { "color": "rgba(128, 0, 128, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "drumglass high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 387, 382, 372, 335, 328, 300, 289, 293, 321 ] }, { "line": { "color": "rgba(219, 64, 82, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "lurgan junior high", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 640, 660, 617, 615, 578, 602, 615, 650, 712 ] }, { "line": { "color": "rgba(0, 128, 128, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "craigavon senior high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 676, 605, 622, 679, 666, 610, 590, 577, 579 ] }, { "line": { "color": "rgba(255, 255, 51, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st joseph's boys' high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 429, 447, 416, 394, 384, 381, 348, 352, 346 ] }, { "line": { "color": "rgba(128, 128, 0, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st columban's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 266, 248, 230, 193, 169, 154, 156, 148, 153 ] }, { "line": { "color": "rgba(255, 153, 51, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st mary's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 137, 503, 562, 574 ], [ 145, 462, 528, 546 ], [ 133, 425, 522, 562 ], [ 136, 437, 502, 554 ], [ 121, 450, 491, 552 ], [ 109, 437, 457, 554 ], [ 89, 407, 0, 570 ], [ 84, 416, 0, 569 ], [ 85, 411, 0, 576 ] ] }, { "line": { "color": "rgba(55, 128, 191, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st patrick's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 784, 331, 505, 439, 600 ], [ 785, 336, 524, 426, 632 ], [ 764, 323, 515, 387, 643 ], [ 765, 287, 515, 350, 655 ], [ 705, 280, 517, 287, 624 ], [ 679, 262, 532, 291, 631 ], [ 674, 258, 522, 299, 623 ], [ 654, 241, 506, 325, 597 ], [ 0, 261, 498, 387, 590 ] ] }, { "line": { "color": "rgba(255, 153, 51, 0.3448275862068964)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st paul's junior high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 468, 466, 458, 395, 380, 320, 0, 0, 0 ] }, { "line": { "color": "rgba(255, 153, 51, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st mary's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 137, 503, 562, 574 ], [ 145, 462, 528, 546 ], [ 133, 425, 522, 562 ], [ 136, 437, 502, 554 ], [ 121, 450, 491, 552 ], [ 109, 437, 457, 554 ], [ 89, 407, 0, 570 ], [ 84, 416, 0, 569 ], [ 85, 411, 0, 576 ] ] }, { "line": { "color": "rgba(55, 128, 191, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st mark's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 879, 886, 897, 889, 881, 851, 851, 811, 815 ] }, { "line": { "color": "rgba(50, 171, 96, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st ciaran's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 792, 795, 809, 801, 815, 800, 803, 789, 795 ] }, { "line": { "color": "rgba(128, 0, 128, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st paul's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1488, 1505, 1500, 1496, 1538, 1583, 1599, 1567, 1560 ] }, { "line": { "color": "rgba(219, 64, 82, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st brigid's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 216, 218, 211, 197, 190, 106, 0, 0, 0 ] }, { "line": { "color": "rgba(0, 128, 128, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st joseph's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 592, 615, 630, 613, 618, 610, 612, 599, 615 ] }, { "line": { "color": "rgba(255, 255, 51, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st patrick's high school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 384, 1004 ], [ 434, 1045 ], [ 468, 1015 ], [ 492, 1001 ], [ 492, 1020 ], [ 475, 1045 ], [ 449, 1027 ], [ 424, 1037 ], [ 421, 1032 ] ] }, { "line": { "color": "rgba(128, 128, 0, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st joseph's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 587, 243, 348, 407 ], [ 566, 238, 363, 386 ], [ 550, 231, 350, 371 ], [ 538, 232, 351, 366 ], [ 571, 249, 321, 330 ], [ 634, 266, 292, 311 ], [ 629, 262, 280, 308 ], [ 631, 245, 256, 336 ], [ 658, 239, 183, 362 ] ] }, { "line": { "color": "rgba(251, 128, 114, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "lismore comprehensive school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1109, 1146, 1153, 1175, 1168, 1157, 1164, 1175, 1142 ] }, { "line": { "color": "rgba(128, 177, 211, 0.3103448275862067)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st catherine's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1125, 1155, 1167, 1138, 1182, 1164, 1130, 1139, 1104 ] }, { "line": { "color": "rgba(128, 177, 211, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "drumcree college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 235, 209, 195, 196, 185, 181, 181, 152, 0 ] }, { "line": { "color": "rgba(255, 153, 51, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "holy trinity college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 792, 839, 852, 895, 959, 1002, 1024, 1017, 1021 ] }, { "line": { "color": "rgba(55, 128, 191, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st patrick's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 784, 331, 505, 439, 600 ], [ 785, 336, 524, 426, 632 ], [ 764, 323, 515, 387, 643 ], [ 765, 287, 515, 350, 655 ], [ 705, 280, 517, 287, 624 ], [ 679, 262, 532, 291, 631 ], [ 674, 258, 522, 299, 623 ], [ 654, 241, 506, 325, 597 ], [ 0, 261, 498, 387, 590 ] ] }, { "line": { "color": "rgba(50, 171, 96, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st john the baptist college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 0, 170 ] }, { "line": { "color": "rgba(128, 0, 128, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "brownlow int college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 430, 413, 384, 345, 331, 312, 270, 259, 285 ] }, { "line": { "color": "rgba(219, 64, 82, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "new-bridge integrated college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 520, 531, 536, 542, 569, 584, 597, 612, 615 ] }, { "line": { "color": "rgba(0, 128, 128, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "integrated college dungannon", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 461, 487, 492, 525, 539, 543, 539, 577, 592 ] }, { "line": { "color": "rgba(255, 255, 51, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "banbridge academy", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 1311, 1325, 1324, 1331, 1327, 1324, 1320, 1312, 1301 ] }, { "line": { "color": "rgba(128, 128, 0, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "lurgan college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 432, 438, 455, 457, 451, 453, 455, 451, 455 ] }, { "line": { "color": "rgba(251, 128, 114, 0.27586206896551696)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "portadown college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 789, 788, 780, 778, 798, 791, 788, 778, 744 ] }, { "line": { "color": "rgba(251, 128, 114, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st louis grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 952, 586 ], [ 948, 587 ], [ 965, 585 ], [ 985, 587 ], [ 1021, 586 ], [ 1036, 591 ], [ 1037, 588 ], [ 1058, 564 ], [ 1105, 564 ] ] }, { "line": { "color": "rgba(128, 177, 211, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st michael's grammar", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 567, 566, 573, 573, 582, 612, 0, 0, 0 ] }, { "line": { "color": "rgba(255, 153, 51, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "abbey christian brothers grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 880, 887, 894, 907, 900, 911, 902, 882, 885 ] }, { "line": { "color": "rgba(55, 128, 191, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "our lady's grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 861, 861, 864, 861, 858, 845, 853, 854, 853 ] }, { "line": { "color": "rgba(50, 171, 96, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st colman's college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 919, 940, 942, 920, 900, 904, 897, 903, 885 ] }, { "line": { "color": "rgba(128, 0, 128, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st joseph's grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 527, 555, 579, 604, 635, 678, 707, 709, 686 ] }, { "line": { "color": "rgba(219, 64, 82, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "sacred heart grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 836, 846, 845, 849, 855, 853, 854, 852, 843 ] }, { "line": { "color": "rgba(0, 128, 128, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "the royal school dungannon", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 646, 658, 665, 652, 653, 660, 650, 652, 638 ] }, { "line": { "color": "rgba(255, 255, 51, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "the royal school armagh", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 682, 0, 706, 712, 722, 720, 724, 735 ] }, { "line": { "color": "rgba(128, 128, 0, 0.24137931034482724)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st patrick's grammar school", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ [ 695, 0 ], [ 683, 803 ], [ 689, 0 ], [ 718, 0 ], [ 723, 0 ], [ 686, 0 ], [ 707, 972 ], [ 705, 975 ], [ 680, 967 ] ] }, { "line": { "color": "rgba(128, 128, 0, 0.20689655172413773)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st patrick's academy", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 1338, 1340 ] }, { "line": { "color": "rgba(251, 128, 114, 0.20689655172413773)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "st ronan’s college", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 0, 0, 0, 0, 0, 0, 0, 1398, 1469 ] } ], "layout": { "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "titlefont": { "color": "#4D5663" }, "xaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" }, "yaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "annual_school_enrolment.rename(columns=name_lookup).iplot()" ] }, { "cell_type": "code", "execution_count": 106, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:14:05.450739Z", "start_time": "2018-06-08T18:14:05.424251Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "de ref\n", "1230321 2017.0\n", "1410315 2014.0\n", "2210312 2013.0\n", "2230322 2017.0\n", "2240319 2015.0\n", "2410311 2011.0\n", "2420320 2016.0\n", "3210313 2015.0\n", "3230310 2010.0\n", "3420317 2015.0\n", "4210316 2015.0\n", "5230321 2017.0\n", "5420263 2010.0\n", "5420268 2010.0\n", "5420304 2016.0\n", "5420314 2016.0\n", "dtype: float64" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" } ], "source": [ "first = annual_school_enrolment.replace(0.0,np.nan).apply(pd.Series.first_valid_index).replace(2009,np.nan)\n", "last = annual_school_enrolment.replace(0.0,np.nan).apply(pd.Series.last_valid_index).replace(2017,np.nan)\n", "first.dropna()" ] }, { "cell_type": "code", "execution_count": 238, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:14:03.609293Z", "start_time": "2018-06-09T09:14:03.582991Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "line": { "color": "rgba(255, 153, 51, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "closed", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ 3, 5, 6, 12, 15, 26, 28, 33, 33 ] }, { "line": { "color": "rgba(55, 128, 191, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "opened", "text": "", "type": "scatter", "x": [ 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 ], "y": [ "", 3, 4, 4, 5, 6, 10, 13, 16 ] } ], "layout": { "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "titlefont": { "color": "#4D5663" }, "xaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" }, "yaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "close_vec=pd.DataFrame({'opened':first.groupby(first).size(),\n", " 'closed':last.groupby(last).size()})\n", "close_vec.cumsum().fillna(method='ffill').iplot()" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T15:29:57.291636Z", "start_time": "2018-06-08T15:29:39.608Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ " ### Skippable Aside: Slicing Panels" ] }, { "cell_type": "code", "execution_count": 113, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:14:59.066827Z", "start_time": "2018-06-08T18:14:59.062475Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "array([ True, True, True, True, True, False, False, False])" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "enrolment.minor_axis<13" ] }, { "cell_type": "code", "execution_count": 114, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:14:59.822032Z", "start_time": "2018-06-08T18:14:59.806270Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
200920102011201220132014201520162017
823116.023113.021770.021322.021418.021367.021792.022571.022817.0
923859.023403.022925.021928.021425.021481.021422.022284.022650.0
1022954.024155.023245.023101.021971.021527.021443.021864.022381.0
1123521.023277.024094.023524.023299.022092.021601.022118.022102.0
1223808.023656.022967.024027.023353.023166.021864.022091.022099.0
\n", "
" ], "text/plain": [ " 2009 2010 2011 2012 2013 2014 2015 2016 \\\n", "8 23116.0 23113.0 21770.0 21322.0 21418.0 21367.0 21792.0 22571.0 \n", "9 23859.0 23403.0 22925.0 21928.0 21425.0 21481.0 21422.0 22284.0 \n", "10 22954.0 24155.0 23245.0 23101.0 21971.0 21527.0 21443.0 21864.0 \n", "11 23521.0 23277.0 24094.0 23524.0 23299.0 22092.0 21601.0 22118.0 \n", "12 23808.0 23656.0 22967.0 24027.0 23353.0 23166.0 21864.0 22091.0 \n", "\n", " 2017 \n", "8 22817.0 \n", "9 22650.0 \n", "10 22381.0 \n", "11 22102.0 \n", "12 22099.0 " ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "enrolment[:,:,enrolment.minor_axis<13].sum()" ] }, { "cell_type": "code", "execution_count": 127, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:16:30.559201Z", "start_time": "2018-06-08T18:16:30.552669Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "Int64Index([3210133, 3230075, 3420012], dtype='int64', name='de ref')" ] }, "execution_count": 127, "metadata": {}, "output_type": "execute_result" } ], "source": [ "reference.major_axis[(reference.minor_xs('town')=='ballymoney').any(axis=1)]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Mapping\n", "* Maps are *hard* in NI\n", "* No Open Data mapping between Postcode -> Boundary\n", "* Also doesn't help that ESRI's API's have been broken recently....\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "However... we do get towns and administrative boundaries..." ] }, { "cell_type": "code", "execution_count": 116, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:15:05.599889Z", "start_time": "2018-06-08T18:15:05.583554Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
XY
town
acton305600341200
aghadowey285900420900
aghalee312300365000
agivey289900422900
ahoghill305000401700
\n", "
" ], "text/plain": [ " X Y\n", "town \n", "acton 305600 341200\n", "aghadowey 285900 420900\n", "aghalee 312300 365000\n", "agivey 289900 422900\n", "ahoghill 305000 401700" ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "if not Path('data/gztr.csv').exists():\n", " gazetteer = \"45341066-1998-4116-b234-6223e7e19397\"\n", " gztr = pd.DataFrame.from_records(dataset_generator(gazetteer))\n", " gztr['town'] = gztr['PLACENAME'].str.lower()\n", " gztr.to_csv('data/gztr.csv', index=False)\n", "else:\n", " gztr = pd.read_csv('data/gztr.csv')\n", "town_lookup = gztr.set_index('town')[['X','Y']].astype(int)\n", "town_lookup.head()" ] }, { "cell_type": "code", "execution_count": 117, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:15:08.586843Z", "start_time": "2018-06-08T18:15:08.382861Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 117, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "town_lookup.plot.scatter(x='X',y='Y', ax=ax)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### And we have a base map..." ] }, { "cell_type": "code", "execution_count": 119, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:15:19.337445Z", "start_time": "2018-06-08T18:15:18.866054Z" }, "code_folding": [ 3 ], "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 119, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "base_map_zip=\"http://osni-spatial-ni.opendata.arcgis.com/datasets/d9dfdaf77847401e81efc9471dcd09e1_0.zip\"\n", "base_map_shp = \"OSNI_Open_Data_Largescale_Boundaries__NI_Outline.shp\"\n", "\n", "if not Path('data/'+base_map_shp).exists():\n", " urllib.request.urlretrieve(base_map_zip, 'data/_tmp.zip')\n", " with zipfile.ZipFile('data/_tmp.zip') as z:\n", " z.extractall('data/')\n", " Path('data/_tmp.zip').unlink()\n", " \n", "base_map=gp.GeoDataFrame.from_file('data/'+base_map_shp)\n", "f,ax = plt.subplots(figsize=graph_figsize)\n", "base_map.plot(ax=ax, color='gray')\n" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-07T12:01:54.875796Z", "start_time": "2018-06-07T12:01:54.873212Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### And a awkward but stable way of projecting from EN / LatLong" ] }, { "cell_type": "code", "execution_count": 120, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:15:27.609253Z", "start_time": "2018-06-08T18:15:27.597078Z" } }, "outputs": [], "source": [ "from shapely.geometry import Point\n", "from pyproj import Proj, transform\n", "prj_wgs = Proj(proj='latlong',datum='WGS84')\n", "prj_itm = Proj(init='EPSG:29903')\n", "\n", "def apply_itm_to_wgs(row, e='eastings', n='northings'):\n", " eastings, northings = row[e], row[n]\n", " if eastings is not None and northings is not None: \n", " lat,long = transform(prj_itm, prj_wgs, eastings, northings)\n", " else:\n", " lat,long = None,None\n", " \n", " return pd.Series({'longitude':long, 'latitude':lat})" ] }, { "cell_type": "code", "execution_count": 121, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:15:29.376804Z", "start_time": "2018-06-08T18:15:29.098724Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "geometry= town_lookup.apply(lambda r: Point(apply_itm_to_wgs(r, e='X',n='Y')), axis=1)\n", "town_lookup = gp.GeoDataFrame(town_lookup, crs={'init': 'epsg:4326'},\n", " geometry=geometry)\n", "town_lookup.plot(figsize=graph_figsize)" ] }, { "cell_type": "code", "execution_count": 122, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:15:31.803276Z", "start_time": "2018-06-08T18:15:31.319224Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl0AAAFpCAYAAACmgZ0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzsvVlsLFl65/c/EblGrkwml+QlecmuKvbKrpZckpfRAglwY9QvQr8ZBjTwg0YaQHowIEMY6MEYyDAMGBrLNmwMVNL4YQYWbMCeHsmC3JYseDAewHYXS11V7LpdxbqX2yWTa+57ZEYcP/BGdDKZkRmRGREZkfn9gELxZkZEnog4y/9833e+wzjnIAiCIAiCIJxFmHUBCIIgCIIgFgESXQRBEARBEC5AoosgCIIgCMIFSHQRBEEQBEG4AIkugiAIgiAIFyDRRRAEQRAE4QIkugiCIAiCIFyARBdBEARBEIQLkOgiCIIgCIJwARJdBEEQBEEQLhCYdQGGkc1m+c7OzqyLQRAEQRAEMZYPP/zwnnO+Mu44T4qunZ0dHBwczLoYBEEQBEEQY2GMnZk5jtyLBEEQBEEQLkCiiyAIgiAIwgVIdBEEQRAEQbgAiS6CIAiCIAgXINFFEARBEAThAiS6CIIgCIIgXIBEF0EQBEEQhAuQ6CIIgiAIgnABEl0EQRAEQRAuQKKLIAiCIAjCBUh0EQRBEARBuACJLoIgCIIgCBcg0UUQBEG4DuccnHOoqopKpYJWqzXrIhGE4wRmXQCCIAhicVAUBQBQKBRQqVQAAJ1OBwAQi8WQSqWQSCQQCPxkeJJlGaFQCIwx9wtMEDZCoosgCIJwHFVVUSwWcXNzA8YYVFV9ckyj0UCj0QAAMMZ0kaWqKqLRqC7GQqEQJEmCIJCzhvAXJLoIgiAIx7m4uEC1WgXw4Foch+Z+1Gi1Wo9ckKFQCO+88w5ZvwhfQaKLIAiCcJRSqaQLrmEIgoBoNApJkhAMBtHtdtFutyHLMrrd7lCrWDqddrLIBOEIJLoIgiAIR0mlUgiHw+h0OohEImi1Wuh0OojFYggGg4hEIiMtVr1eD7e3tygWiwCAcDiMbDZLVi7Cd5DoIgiCIBxFEARIkgRJkgAA0WjU0vmBQACrq6sol8tQVRXJZJLiuQhfQqKLIAiC8DSyLOPi4gKqqoIxhkgkMusiEcRE0FSBIAiC8DQXFxdoNpsAgEQigVQqNeMSEcRkkOgiCIIgPE2329X/lmXZ1OpHgvAiJLoIgiAITxMMBvW/M5kMBdATvoVEF0EQBOFp0um0niw1FovNujgEMTEUSE8QBEF4mkwmA1VVEQwGEQ6HZ10cgpgYEl0EQRCE58lms7MuAkFMDYkugiCIOaLdbqPRaEAQBITDYT03FkEQs4dEF0EQhM/R9iVsNBqo1+tQFAXAw6bRKysraLVaODw8RLPZhCRJ2N/fx/Pnz01fn3OOs7Mz/OhHP5r4GgRBkOgiCILwLZxzdLtdnJycDN2fkHOOo6MjXF9f6983m00cHBwAwFjRpCgKGo0GTk9P8fnnn+upGqxcgyCIn0CiiyAIwoc0Gg1UKhXUarWhgkvj9vb2yfeKouDjjz9GNpuFIAgIhUIQRfHRMaqq4vz8HI1GAy9fvnySG0tRFHz00UcIhUJYXV19cj5BEE8h0UUQBOEjqtUqKpUKZFlGq9Uae3yv1xv6ebvdxsnJCYCHlAwbGxsAHpKP1ut1FAoFPSmp0TU6nQ4KhQLq9ToymQxSqRQCARpWCMIIah0EQRA+gXOOu7s7U2JLIxAIDBVN/eKoXC6jXC5PfI1Op4Orqyvc3NxgdXUVjDEoioJOp4NsNmt5g+tJ0CxxlDiV8DIkugiCIDzK2dnZkwD4lZUVnJ+fm77G6uoqrq6uHrkHGWNYXV21/RqqquL6+vrRZ51OB8+fP3+UVd5OyuUybm9v0e12IQgC0uk0uTsJz0KiiyAIwoOcnZ3h4OBAX4nYbDbxwQcfYGNjA8lk0vR10uk0gIfYrl6vh0AggNXVVf1zp6/RbrdxdHSEeDyOaDSqx5FNC+ccV1dXKBaL+meKoqBQKECWZWxvb5PVi/AcpkQXY+wUQA2AAqDHOX+PMfaPAPx9AHdvDvs9zvlfDpy3BeCfAVgDwAG8zzn/b+wpOkEQhPcYZp2ymp6h1Wrho48+0gWXhmZJsiK6gAfRZEVk2X0NzjlqtRpqtRoajQa2tramiv1SFAVXV1eGLtFarYbLy0usrq4iFApN/DsEYTdWav0vcc7vBz77Q875H4w4pwfgdzjnf8sYSwD4kDH215zzF5ZLShAE4XFOTk7w4YcfTpSeQVVVlEol3N/fo9vtotPpDD2u1+vh6OhoYqvVrGk0Gvjiiy+gKAqOj4/RbrcNxSnnHJ1OB4wx/e9Go4FaraYH+RtRLpfR7Xaxvb1NrkbCMzjqXuScXwG4evN3jTH2YwDPAJDoIghi7vj0008N0zNEIhEEg0FIkqTvH9hqtdBut9HpdFCr1SDLsn6eUfA68JPVhL1eD1dXVwDgK+FVKBQexYgNitN2u62voux3H1ql0Wjg1atXCAaDUFUV6XQamUyG3I7EzDArujiAv2KMcQB/xDl//83nv80Y+3sADvBg0SoZXYAxtgPgpwD8f5MXlyAIwrs0m82hn7fbbdzd3T36TLPeGDEseH0YnHPc3t76SnTd3t4a5v3qdrtot9u2/ZYsy7qYbbVaKBaLSCaTWFpaItcj4Tpmoxl/jnP+0wB+BcBvMcZ+AcA/AfAWgG/hwZr1j41OZozFAfyvAP5jznnV4JjfYIwdMMYOBjsngiAIr9JqtVCr1VAsFhGJRIYeMyx+aZyYSqfTyOVy+rmjYqCMLGJeZVTeLzsFl9Fv3N3d4ejoCPl8HrIsg3P+JH6OIJzAlKWLc3755v+3jLHvAfhZzvm/1r5njP0xgL8Ydi5jLIgHwfU/cs7/xYjfeB/A+wDw3nvvje6NCILwJZxzlMtlhMNhRKNRz7t5BoPiv/GNb2BzcxPNZlOPGerPmZXJZKZOz9DPYPC6Fss1iN8SkprJHeYGxWIRxWIRgiBgbW0Ny8vLrv4+sXiMreGMsRgA4U1MVgzAtwH8PmMs9yZmCwC+C+BHQ85lAP4pgB9zzv8rG8tNEIRPqVarqNVqEEURz549s7wSzy2MUjbk83nDMtuRnmEUduTc8gJeuw9VVQ2tlARhJ2amFWsAvvdmRhoA8Kec8+8zxv45Y+xbeIj3OgXwmwDAGNsA8Cec8+8A+DsAfg3AIWPsozfXe5JagiCIxYAxhpWVFdRqNSiKgvPzc2QyGaytrXluhdnh4eETlxPnfGzKBjvSM4y6NuCcqHMLL97HyckJdnZ2EI/HZ1YGYv4ZK7o458cA3h3y+a8ZHJ8H8J03f/8bAN72HxAE4SqaW1GzchSLRdRqNWxubiIWi824dD/BKCh+1vFTToo6N/HifZyfn2NnZweSJM26KMSc4q9AAIIgfA9j7MnKvW63i5OTE6TTaaysrOgpFSbFKEGplcSlkiQNFV5+i58izKOqql43CMIJqPcgCMJVut3uk1xWGtrGy9FoFKlUCrFYDJFIxFLA/bBYrIODA9zf3+P09PTJ58DwxKX7+/uPrgP4M35qGrR9Db3iAnSDu7s7RKNRT1ldifmBRBdBEK5ilGm9n1arpa8KZIwhEokgEokgHA4jFAohFAohEAhAEATdcqYxLBZLURS8evXqye8oioJPPvkE2WwWqqqi1+vpaQs6nQ7W1tYWTnRolMvlR8Hufk3EahVFUXBycoJAIABJkvDs2TPPxRsS/oVEF0EQrtKfdd0M2l6E/akZBtE2UGaMGcZiGdFqtfT0D9FoFOFwGKIo6mkE5llgAMbWrGEJTP2YiHVSer0eqtUqQqEQ1tfXZ10cYk4g0UUQhKtUq0PzI09Fv7ty1PY5wwgGg2g2m0ilUohEIri/v9eFYSKRwPLyMmRZRrFYNHSL+pVR1qxxWxAtCoVCAdlslmL5CFugWkQQhGtoVisnWV1dRT6fN318t9vF4eGhbuHpD/IvlUoolUpIp9N4/vw5KpUKFEVBo9GYC/ExyprllQSms4Zzjm63u3D3TTiD2W2ACIIgpqbZbDq+3co419ewwVOz8JTL5aHb85TLZZycnOjpLUKhEJaXl6deZTlrRlmzVldXnyxgWLSFBBpe3zmB8A8kugiCcI1SqeTK7xhZJQKBAPb29gz3Qry9vR17bS2tQKFQgCiKvo5vGvWchu39mMvlfH2/kzJvbmVidpC9lCAIV+h0OiiXy6781rhtZuyKV2o2m7i+vsbd3R06nY5tKxzdStUw7jmZSWC6iGklCGJSSHQRBOEKd3d3rv3WuG1m7IpXciKtgpupGqbdjmcR0kpIkoRgMDjrYhBzAokugiAcx00rl8YoK41dGy47kVbBrmuatUBNsx3PPKaV6H9u4XAY7777LokuwjZIdBEE4TjX19ezLsIj7Npw2Ym0CnZc0y0L1LyllRh8bp1OBx9++CEYY4bbRRGEFUh0EQThKM1mE7VabdbFeIIdGy47kVbBjmu6ZYGat7QSw56boig4PDwk0UXYAq1eJAjCUcysCPQrTqRVsOOablmg5i2thNHzsbrLAUEY4c/pCEEQvqDT6aDRaMy6GI5hl5vS7muasUDZserQifufJUbPTZKkGZSGmEdIdBEE4RjD3DXzhh1uSruvOW6hgJ0xX07c/6wY9txEUcT+/v4MS0XMEyS6CIKwDVVV9XxVoihCkiQoioJer4d2uw3gYa9DRVHAGHM8O71d+C0X1TgL1KQxX357DlYZfG7hcBjf+ta3KJ6LsA0SXQRB2EK73cb5+bm+WbQoilBVFcFgEIwxRCIRXWT5KcO3X3NRjbJATRLz5dfnYJX+57a5uTlX90bMHgqkJwhiahRFwcnJiS64tM8455BlGZ1OB+12G91uF91ud4Yltc4oq5BfGbX9jxHz+BxGEYlEkEwmZ10MYs4g0UUQxNQ0Gg3fuAqtMm+5qIDJVh3O43MwQhRFbG5uQhBoiCTshdyLBEFMjd+sV1aYt1xUwGSrDufxOWgMxqrt7+8jEonMuljEHOL/1kIQxMyJRqMQBMFXsVpmsWvLIK9hddXhvD6HYbFqn3zyCUKhEAXQE7ZDoosgiKmRJAm7u7s4Pj52JEXELFfNeTEXld3Pw8z1vPgc7ICy0BNuQqKLIAhbiEajkCTJ9mSoXlg156VcVHY/DyvX89JzsAvKQk+4CYkugiBsoVwuO5J93q19BL3COKuT3c/D7uv5LZcXZaEn3ISWZhCER/FLJnfOOQqFAi4uLhy5/iKtmtOsTtq9aVancrmsH2P387DzembK7zXi8fjQz3O5nMslIRYBsnQRhIeQZRm3t7dotVpIJBJIJpMQRRHhcHjWRRtKu93G1dWVo/srztuquVGWIDNWJ7ufh53X86NVsl6vD/1cc7EShJ34s9ciiDmEc47Ly0tdwMiyjEKhgOfPn+uiS5Zl3N/fQ5IkJJNJfcVgp9PRE5AqigJRFCGKIgKBAILBIKLRKERRtK2sqqri9vYW9/f3tl3TiHlaNTcufmqU1eno6Airq6u2Pw87r+dHq6TVmC5VVSHLMlRVhSAICAaDtrYtYr4h0UUQM4Bzjmq1ikQioSdg7HQ6jyxGnHNEo1HEYjEAD4PDyckJut0uisUi4vE4ZFl+lAXeCMYY1tfXsby8PHXZZVlGo9HQBdekMTxmz5unVXNGlqB8Po/b21uIomiYZFYTaLlcDrlczrbnYefz9aNVclRMV7PZRKPRQKPRAOccgUAAtVrtSWqUUCiEbDaLdDpNCVWJkXi3JRCEz6nX62CMIRwOPxp0Wq0WLi8v0W63kUgksL29DVmWcX5+/uh8xpi+ZJ1zjlqt9igJqZFbZBicc3Q6nSnv6Ce/q5Vj0pV0Vs/z4qq5ScTmKIuP9h1jzDCeT3PV7e3tmX4eZtNB2PF8h1nNAOO4KS9gZOlbXl7G8fGxqWvIsqwL52fPniGRSDhVXMLnkOgiCJvpdDqo1Wq4vb3VZ8SZTAarq6uQZRknJyd6B1+r1XB6eopWq6Ufq21B0ul0wBhDt9tFu91GKBRCKBQyZdkaRq/XA+f8yfYvg2hl45yj2WxCFEW02220223U6/VH4m3SGB4/xv70M6nYNLKqWDnOiqvO7XQb6XQazWbzSeB8pVKBJEmefLdGlr5JhFOv10OpVCLRRRhCoosgbKRarT6xWAFAsVhEsVgces5gEPry8jI45+h2uzg7O9NjS7LZ7NRlOzo6QiKRQCwWw/X1NT7//HO0221EIhHs7u5iaWkJzWYTiqJAVdWxKygnFQZ+jP3pZ1LRaGQJGrzO3t4ejo6OpnbVzULcDrPAel1Q22lJ9eqiF8IbkOgiCBvgnKNUKuH6+nqq6ywvLyMYDA4VbuVyGZzzkdvtjHMlafFgx8fHjwb/druNzz77DLlcztLgM2kMjx9jf/oZF/Bu9PwHrSrD0J6BHQHusxC3fhfU0+JVYUl4A4r4IwgbuL+/Rz6fn2rvwfX1dUSjUVxeXg79XnMPGllJrORIGmUBscLq6uoTd6UZYTDpeV5hlDgc9/zT6TT29vawsbEx8hmk02nkcjn9twKBwESi2Gr5p2UWv+kVMpkMWbqIkcx/KyAIhymXy7i5uZnqGpoIGZdgdJTosuJKsssaMenKN7+vSDTjJgRGu9XMPINp3V6zSLcxTyk+rDJtCAAx/5DoIogJkWUZNzc3qFQqE1+DMYadnR1Uq1VTVqZRg7wVIWWne29SYeDFFYlmGSaYJhGyTj+DWYhbvwtqgnASEl0EMQH1eh2np6dTXyeTyejb6EyLFSG1yNYIuxgUTHYEvjvBOGHnxF6JfhbUkxIKhShHFzEWUzWEMXbKGDtkjH3EGDt489k/YoxdvvnsI8bYdwzO/buMsc8ZYy8ZY//QzsITxCzodrtDA92tEggEsLS0ZFv+LCtxUnbECxGP8WOcmh/3SvQqmUxm5gKb8D5Wasgvcc4H9/z4Q875HxidwBgTAfz3AP59ABcAPmCM/Tnn/IX1ohKEN2i321MFzCeTSf0/QRBs29jaqltnEa0RTuJHt9q0KSWcsJL5EcYYlpaWZl0Mwgc4Lct/FsBLzvkxADDG/icAvwqARBfhS7Q4rknJ5XL6VjzdbhfVahV3d3d2FW+uhZQfBni/Pf9pFlS4nXjVy3DO9T1PCWIUZkUXB/BXjDEO4I845++/+fy3GWN/D8ABgN/hnJcGznsG4HXfvy8A/NvTFJggZsnNzQ3a7balc/rFwsnJCdbW1pBOpyfOLL+I0ADvDNMsqPD7rgLT0t+uI5EIEomEvm0XQRhhNurv5zjnPw3gVwD8FmPsFwD8EwBvAfgWgCsA/3iagjDGfoMxdsAYO7Bz5k8QdrK2toZMJgNJkkwdPxgz02q1cHZ2Zjkf1qJjV14xL1Aul3F0dIQXL17g6OhopvFT08ShLXIS1MF23W63cXBwgLOzsxmXjPA6pkQX5/zyzf9vAXwPwM9yzm845wrnXAXwx3hwJQ5yCWCr79+bbz4b9hvvc87f45y/t7KyYuUeCMI1QqEQcrkcYrGYqePnSSzMEq8N8JMKJ68Frk+zoGKRk6AOa9eKouDw8HBGJSL8wtjWwRiLARA457U3f38bwO8zxnKc86s3h30XwI+GnP4BgHcYY7t4EFv/AYD/0J6iE4T7cM7x+vVrVKtVU8d7TSz4FS9tGzSNq9OLLrlJ49AWOe2IUfvV9kklCCPM9FhrAL73xgQdAPCnnPPvM8b+OWPsW3iI9zoF8JsAwBjbAPAnnPPvcM57jLHfBvB/ABAB/A+c808duA+CcIVWq2VKcDHGkEqlEA6Hh6aEGCYW/BAoPiu8NMBPI5zmSYT7cbWmXRhNAsyGHRCLy1jR9Wbl4btDPv81g+PzAL7T9++/BPCXU5SRIDyBqqpjt+kBHlyQOzs7qFQqWFlZweXl5VixQIHio/HSAD+NcPKSxc4O/LZa0y6GTQJEUcTe3h4450/i5AhCw58tnSBmgCAICAaDI1cd9m/rc3Nzg2QyCVVVx4oFL7qdnGJSi55XBvhphJOXLHZuMK/W28FJQCgUwsrKCmRZxvHxMRhjePHiBZrNJiRJwv7+Pq1sJACQ6CIIS6ytreH4+Njw+1gsBkEQHgXKmxEL8+R2GsU8WPSmEU5estg5jdV37TeBZtSur66ucH19rSdQbjabODg4AAASXgSJLoKwwqjs8dVqFScnJ/jBD35gedCYN7eTEfNg0ZtWODlpsfOScLHyrudBjGvc3t4+2bFCURR8/PHH2Nraov0ZF5z56tEJwkFUVdUHgkGq1Sry+bze2VodNBbB7VQul+fGoucVV2c/XhMuVt71PIhxDaP7brfbePnyJXZ2dhAKhVwuFeEVSHQRxBDOzs5weHj4JCYjnU7j+vr60bHr6+s4PT19Mru1MmjMu9tJEwRGzJtFzw6sWq28JlysWG/nRYwDo+9blmW8fPkSu7u7iEajMygdMWuopyOIAc7OznBwcABFUQD8JCZDVdUn6R9yuRwymYxhfh4rg4YXrSd2MUwQaMybRW8cZsTUJFYrrwkXK9bbeXKvj7tvVVVxfn6Od955h1yNCwi9cYIY4PDwUBdcGoqi4NNPP0UmkwHwMCi+evUKf/M3f4M///M/N9zo1o+DhhOMGvjNZkCfB8xmpJ9kJwOvZYi3ku1+mu2IvIaZ++52u0+EGbEY0IhAEAMYWa2azSZWVlZwfX39aHWSZv1ijM11TNY0jLJkLIrgAsy7ACexWnkxLtCs9Xbe3Otm7rtUKkEQBORyOZdKRXgBEl0EMYAkSUOFlyRJYIzh7OzsSfyWhiYu/D5o2I0XBcEsMCumJnG3+V24zLN73YhCoYBwOKxb0In5h0QXQQywv7//KKYLeBAImUwGR0dHaLVaQ8/jnGNvb8+tYvqKcYLAS6kOnMSsmJpUpC6icPE7Nzc3SCQSCAaDsy4K4QIkughigOXlZWxsbOixN5oISCaTkGV5roJ+3cRIEHgt1YGTmBVTfrdaEeZRFAW3t7d49uzZrItCuACNEgTRhyzLOD8/RyKRQCKRGHoMucrsxWupDpzEipgiq9XiUC6XsbKyQvm7FgASXQTRR7vdNozX0iArhL14LdWB05CYIgbhnKNWq2F5eXnWRSEchkQXQfRhNmGhXwZOP8RKkbvWu/ih/swLxWKRRNcCQL0aQfQRCAQQj8dRr9dnXZSp8Uus1Dy4a+dRnPil/swLnU4HlUoFqVRq1kUhHIREF0H0wRjD8vLyXIguv8RK+d1dO6/ixC/1xwg/CuFSqYRkMvkkUSwxP5DoIog+OOdzIbgAf8VK+cVdOww7xIkXBYKf6s8gfhTC5XIZR0dH+MEPfgBJkpDL5XB1dfVk/1fC35DoIog+7u/vUSgUZl0MW3ArVsqLgsFNphUnXhUIs461m6Ze+c1KN1gHms0mXr16pX+v7f8KgISXz6G9FwniDZzzuRFcgDv72ZndS3CemXbPw0n2WXSDYfUHeHjHR0dHjr7jaeuV36x0ozaE11AUBYeHhy6ViHAKEl0E0cc8bUBrZcPhSfGqYHCTacWtVwXCYP3px2lxPW298trm3+Mw+66N9oUl/IM3ayBBzADGmL6h9bzgdKyUVwWDmxgtBACAo6Ojse6xWbvxRqHVH+0++nHSXTdtvfLbilijOjCI2ZQ2hHeZfasmCA+xvLyMUqmETqfjyPXnLf7Jy4LBTQbFrZU4LT8IBLfF9bT1ym8rYofVgUEYY9jZ2XGvUIQjLFbPSBBjYIxhaWnJEWuXVwOmp8EPgmEWWAnkdkIg2C3u3RbXdtQrP62IHVYHtHyB/e8wGo2Cc04pJXwMiS6CcAm/ragyg98sCm5h1TJkp0BwQtxPK4KsisBFrFdm6kC73cbp6SnS6TTi8TiCwaBLpSPsgkQXQQzglMtkXuOf/GRRcItZul2dEPfjRNAoUTWpCKR6NZxGo4FGowHGGHZ3dyFJ0qyLRFiARBdB9KEoCmq12pNBZJip3+qAQPFPi8Ms3a5OiXsjETROVM2jhdcLlEolHB0dodvtUvJUH0G9PUG8QVVVnJ2d4ebm5skg0r80flJ3DcU/LQ6zdI85Ie6NLFnlchn5fP7J8f2ial4tvLNkWDJVSp7qD0h0EQQeBNfJyQlarZapRIWTzNQXMU5lkZmVe8xucW9kyWo2m6hUKobnaaKKLLz2M6yP0pKnaqJLVVUIwkMqzm63C8YYPXMPQG+AIPAwQLRaLf1vs+dYheJU5g+vpQHRfvvu7g7dbnfqMhm5B8clRtUGeLLw2o9R39NsNnF2dobDw0M0m01EIhG8++67WFpawvn5OaLRKFKpFJaWliCKosulJgASXQQBzvmjfc7MJiqkWSPh1TQg6XQamUwGwWBw6pxzk0wu+kUVWXgnY5SYN+qjgsEgDg4OoCgKgIfVjh988AG2trYQi8XQarXQarVwd3eH1dVVZDIZMMYeWcUIZ6FRg1h4bm9v9U4KMJ+okGbqhNUgcTetYqqq2pLPyewkpJ/B7abIwmuNcWLeyHrIOX/UlwEP9eDy8hJ7e3v6Z4qi6Ns4hcNhpNNpRCIRmki6AElbYqFpNpu4u7t79NmwPQvT6bSjexgS/sRKkLhfNwc32lsynU4PFXWiKCKfzzu+KfY8M27vSa2P0vJ0SZKEr3zlK5YXLbRaLZTLZZRKJXI3ugTJWmJhOTs7w0cffYROp/PE6kAzc8IMVoLEZ5E6QVGUiSxV/YxyD0qSpH+uCTDN0uIVV6sfMSOetGdaKBTQbDZxenqKYDCIbrf75LxxFqxKpaJPJglnIdFFLCSnp6f48MMPaYAgpsJKkPgsUid0u11EIhHHcnT1f+72ptjzjBkxP+iCbLVaEARBdzNqmA2FKBQKSCaTiMViNtwBYQSJLmIh+fjjj5/EPtAAQVjFSpD4LFInlMtl21YxjoPycdmHGTE/zHKqqipCoRACgQCazSYkScLXv/51JJNJFIvFsYsqXr9+jb29PQqqdxASXcTCIcuyYedDA4S/mUX6BrOuaLdTJ7i9spLycdmHGTFv1FfJsoyf+qmf0tNGfPrpp9joENpEAAAgAElEQVTf38dbb71lmMy2/5qFQgErKyv23hChQ62BWBg45yiVSri5uaEBYg5xWmRMK+i0Y/vLOIlFwWw53I4ho3xc9jJOzI/qw/rTRvRnq89mswiHwyMtXre3t0ilUgiFQlPeATEMUy2eMXbKGDtkjH3EGDsY+O53GGOcMZY1OPe/ZIx9yhj7MWPsv2V2rGEmCAuoqoqrqyt89tlnyOfzUBTFcEUWDRD+ZdyKr2lwauVh/9J9u8vhtrtv2Kpfq6t8y+Uyjo6O8OLFC1r9OAajPmxY2ghFUfDDH/4QjUYDOzs7yGQyhhNMzjlubm4cK/eiY2Va/0uc8/v+DxhjWwC+DeB82AmMsX8PwN8B8M03H/0bAL8I4F9ZLilBTECtVsPNzQ3a7fajzylh4/zhpMiwy2o07XWsnG9k0XDSmjvNql+vJpr1KkZ9mJH7UJZllMtllMtl5HI5LC8v49WrV1BV9cmxlUoF8XgcS0tLjt7DIjJt6/tDAL8L4M8MvucAIgBCABiAIACS0ISj1Ot1dDodtNttlEolw+MoLcR84aTL2C5BN+11zJ4fCoXw7rvvPlqhC3jbmjuLlBp+Y5hruT/pKfATETZIIBCAqqrIZDJQFAXhcBiZTAb39/dPjgWA+/t7El0OYLY34gD+ijHGAfwR5/x9xtivArjknH9s5DHknP8/jLH/C8AVHkTXf8c5/7EdBScIjf69xqLRKDY3N/WkgcTiYDamaJLYLLsE3bTXMXt+PB7HxsYGVFXFRx995AtrLq1+HI1ZS+CodtDr9dDtdvU2oa1qHGbt6nQ66Ha71JfajNkozp/jnP80gF8B8FuMsV8A8HsA/tNRJzHG3gbwVQCbAJ4B+GXG2M8bHPsbjLEDxtjBYIZwgjDi7OwMBwcHaDabAB5y1bx8+ZJiQRYQMzFFk8Zm2RUDOO11zJwfi8UQj8cBPARO7+3t4Wtf+xr29vY8K7gAY+FJi1seMBuzOK4dlEolFAoFAA+Z7J8/f274m5Sl3n5M1WbO+eWb/98yxr6Hh7isXQCalWsTwN8yxn6Wc37dd+p3Afy/nPM6ADDG/ncA/y6A/3vIb7wP4H0AeO+994w3vSOIPg4PDyfKtzWL1AKE84xzGU/qwrIrBnDa65g5f319HdFoFMDDJMQv0OrH0VixBI5rB1dXVwgEAkilUhBF8UlCVeBh82zK12U/Y0UXYywGQOCc1978/W0Av885X+075hTAe4OB9ngIsP/7jLH/Ag/uxV8E8F/bVXiC0Cxcg4xySVDA7mjmWZBO48KyKwZw2uuMO//09BRf+cpXwBhDLBbD/f39yM3bvQItbhnNKNeymTY7eEy1WsV7772HSCSCpaUlFIvFR8dLkuTo/SwqZixdawC+98aiFQDwp5zz7xsdzBh7D8A/4Jz/OoD/BcAvAzjEQ1zY9znn/9vUpSaIN0iSNFR4jXJJUMCuMfMuSP2Sn20a4ZvJZHQXZCwWQyKRQLVatf13nIAWtxhjZAmMx+Nj2+ywdn15eYloNIqvf/3rT7wFhHOM7Wk458cA3h1zzE7f3wcAfv3N3wqA35yuiARhzP7+/qNEgMB4lwQF7Boz74LUCReW3cJlWuGrqioURYEsyyMTXM67wJ43jCyBZtqs0TEnJyf42te+9iROEAAlR3UIb03vCMIiWhDoRx99hE6nY2rQWwRrx6TMuyC124XlhHCZVvi2220cHR3pAdS5XA7tdhuyLNv6O4T7DLMEGuXl6m+zo9r17e3t0NWLWlwgYS/eGmUIYgI2NzdRq9VMHz/M2gE8dEBHR0czd7EAs7NC+EWQToOdLiwnhMu0wrfRaAB4uE9BEFCpVCBJ0hPRNe8Ce1Ew02ZHHVOtVhEOh598Ry5HZ6ClCYTvEUXRUi6ZwSXV/di1vcu0OLmlzShoeyRrOCFc7EqdUCgUcHZ2huvra0uZ6edJYC8CZtrsqGM450927AAeVjiO2qORmAxqXcRcYHVLT83acXR09GSA9IKLZVZWCFpBZo1JLIPj3MZ2xp0VCgXD36IUDZPhxcUHwOg2O+6YYff01a9+leK6HIBEF+F7FEWZWIx41cUySzcfrSAzj1XhYsZtbJfwHfdbdv6Ol0SIk3h18YGZNmt0zLB7ur6+xtbWFpaXlx0p7yJDoouYCwRBGBoMOg6vxjCRFcIfWBUuZmPA7BC+Zn5r2t/xqghxinlcfDDsnlRVxeHh4chs9cRkkOgiZoqqqvqO9qPislRVRbvdhiAIiEQij74TRRF7e3u4ubnRt7cwi1fFDbn5/IMV4eK0ZVWSJH3C4IYVdx5FyCi8ahmfBqOyGyWeJqaDRBcxMyqVir4PHmMMS0tLWF5e1lfScM7R6XQQCoVQLBZxfX2NTCaDjY0NAA9CjDEGxhgEQYAkSSiVSpYsXl4WN+Tmmz+csqyGw2Gsrq4ilUrpn33yySeWEwdbZR5FyCh3qVct49NgdE+Ukd4Z/FtTCF/COUej0cDd3Z2+tF37vFgsolQqIRaLodvtotfrQVEUCIKg7wEmiiIuLi4gyzJarRZCoRC2t7dRqVQmXtlH4oZwCycsq8lkErlc7omleJLEwVaZNxEyzl3qVcv4NKyuruL6+vrRZFUURezv78+wVPOLP1sGMTGcc8sr/eyi0+ng+vp6ZE4tzjnq9fqjz1RV1TuEu7u7J9f84osv7C8sQTiA3ZbVtbU1ZLPZoW1ai8f55JNP0Gq1HLHizpsIGecu9bJlfJBxCxwEQUAsFsPq6io2Nzfxox/9CM1mE5IkYX9/n+K5HIJE1wLRbrd1K1EwGEQoFML6+vrQxHh2UywWhyYkJYhFw07LqiiKIydRz58/RyqVwsXFhS2/N4ifRIgZzLhL/WAZH2exE0URu7u7j+Jjd3Z2ZlHUhYNE1wKgqqoeE6XR6XTQ6XQQjUYdmZVqbsRKpQJZlh+5EucFJ5fKL9IyfGJyzFitu92uo2VwQoTMqv7Pi7t0nMVua2vryYIkwh38VZMIy3S7XRwfHxt2vLe3t5AkCfF4fKrfUVUVhUIB3W4Xoiii1+uhVCpNdU0v4+RS+UVbhu8XvCaEGWMIh8MjQwY452i1Wi6X7CmiKCKVSkEURcRiMUQiEZTLZZTL5SfZ0GdZ//3mLjWqk6Msdru7uxQkP0NIdM0xqqri/Px87Ez37OwMb731FkKhEDqdDkRRNJ2JWIvBMtpqZFq8NtBpOLlUftGW4fsBLwjh/rYQCoWwt7cHQRBGWrvq9Tqq1aor5dPQQhdarRZUVUU4HB5qWclms8hkMsjn84+23Zpl/feTu9SoTmqidtjWPpIkIRaLuV1Uog8SXXMK5xz5fN7ULJdzjpcvX4IxpjdgSZKwvr4+ckZUKpVwd3f3ZCNdu/DCQGeEk0vl53EZvt+ZtRAebAuyLOPHP/4xYrHYyIDnaDQ6ceJgs0SjUX2l8erqKpaXl8EYQ6vVQrPZRCqVMnTPCYKAjY0NKIqiL7CZdf33Q8wWYFwnLy8v8e677z5ZuUorEr0Bia45pVgsWt60ub8BN5tNFItFQ9FVKBRwfX3taGD8rAe6UTgZ+zEvcSXzxKyFwLC2oCjK2KzhgUAAy8vLKBaLjwZgu0gmk9ja2gLw0Da11C7AgxiLRqNjryEIAra3t/U+xaj+A8DR0dHElievWs0nZVRSU61OHB4e0opEj0G9+BxSr9d1i9A0lMtldDodhMNhxGIxBINBxGIxKIqCm5sbx1ciznqgG4WTsR9+iytZBGYthKfJGr62toZYLIZAIIBGo4FGo4GVlRUwxnB8fGzJCiaKIqLRqB5K8OzZM929OU0qGi05cqvVGlr/NSa1dnvZaj7IKHHIGEMqlUIqlcLJyclQT4Y2UX7+/DmJLA9CosuHaBnc2+02GGOIRCJoNptoNBoIBAJPcllNQ6vVQqvVQrlc1n+rP2+Wk8x6oBuFk7EffoorWRRmLYSnzRquLZQJh8NYWlrSLVJ7e3uQZRl3d3cIBAJoNpvodrsIhUJgjCEWi+ntvdVq4dmzZ5AkSX8Odub8Y4whEAg8qf+DTGLtdttqPko4jftulDh8++239RQ/3/zmN8mF6ENmP3oRlrm7u3u0x6Aoio64DgZxeyXUrAe6cTgZ+zHruJJ5c8VMy6yF8LC2MMkAq22bpREIBBAIBHSLiFkxZXeCZUVRUKlU9H5Nq/8vXrwYerxVa7ebVvNRwgnASFFlJA7v7++xv7//KKfiPLsQtTbWaDTmLvCfRJcPSSaTUFVVT8nghuCaBbMe6BYVP7li3GSWQniwLTg1wM5it4r7+/tHOQT7scva7abVfJRVTft72HejUj3IsvxoX02NeXQh9no9vHz5Eru7u0+2tpoHSHT5kFgshlgspufnqdVqnohzcoJZW3wWES8vYFhk+tvCO++848pOEk6jJVE2wi5rt13XMWMBnsSqpn1Hm08/PIMvf/nLM9uuzmlIdPmYzc1NcM5xfn4+cj9DgrCClxcwEA/c3d1hc3Nz1sWYClmW8fr165EhC3ZZu+24jh0W4FErM1+8eAFRFJ987pc4rbOzM9tcnfMquAASXb6m1+vh8vLS94KL4oe8hZuuGHr3k+F3Acw5x8XFhakYUbus3dNexw4LcDweH5nKR1EUfUFBt9u13Y1spzDq5/T0FB9++KEe6tJsNnFwcAAApq+vKAqq1Sri8fhcuhU1SHT5lFarZSrbvNeh+CHv4dYCBnr3k+PE7g9uoQkVM+kuvIRZC/CoSUu9Xh/7O5xzBINBfPe7352soAacnZ09Wu04iTAaRq/Xww9/+MMnscWKouDjjz9GKpVCMplEuVzG0tLSUCuWqqo4Pj5Gp9NBMBjE0tISstnso7xv88L83dGCwBjzveACxgedEu6TTqeRy+V0y1YgEEAul7NdCNG7n5xhbig/oKoqXr9+bWtaG7cwsvQOfr66uvpEWGiTFrMWSicE6SeffDJUGB0eHk51XUEQDMeidruNi4sLHB0dIZ/P48WLF0Otm5xzrK2tYX19Hd1uF7e3t57YM9QJyNLlUyKRCKLRqO8rJsUPeRM3FjC49e7n0YXZbrdxf3+PbDY766KYptPp4PLy0ncWLg2zFuBR8WNGuccGsRo4b+Q2VFUV1WoV5XLZcKxoNpt4+fIlNjc30Wq1EAwG0ev1kEgk0Ol09DyNP/7xj9FsNhEOh7GxsYGf+ZmfAfAQmxcMBocKL02QavfMOUepVEI4HH5kxRJFEclkEsDD2Nbtdk3tZuBHSHT5mN3dXcOsxH7BywlQCWdx493Pswtz2IbGXsVKDJdXsRKMbzRpGZVtX8Nq4Pwwt+EHH3yAYrGISCSifz4qiP+HP/whrq+vH5U5FAqh2+2iVCo9KnOn08Hp6SkAYGlpCe12GysrK6ZDEorFIgKBgL4rwiBaIt95hUY2HyMIAnZ2dnB5eYlqtTrr4kyE1xOgToIXLCteKMM43Hj3Xkp/Yfc7qdVqKJVKSKfTnl7tpaoqbm5uTAsuL9fdaS3Ag8ItGAxiY2MDd3d3loLb+y1bjLEndVxVVZycnGBvb0//bJTgG9YmZFnWyzqsDb1+/Vq3RlldHarF9OVyublIfWIFEl0+RxRFbG1t6QGa9XodvV4P1WrV8b0R7WDeEqB6wbLihTKYwY13b9WF6dSA78Q7URQFV1dXkGUZKysrngw61so4asVeP36pu9PQL9yWl5eRy+UsnT9o2TLq5wfruPab+Xze1PFWP7cqSOv1Ol69eoWVlRVEIhFIkuTbWEUrkOiaAxhjSCQSAKD/v9frodFooFaroVKpeFqAzVMCVC9YVrxQBrM4/e6tuDCdHPCdfCfpdNqTgkuWZZycnODu7s6SBWRWdddtC1s6ncb6+rrp4/utW2YYVsdHxZWNWijgVBiAZgUtl8soFotot9tztZ3RMLzXUglbCAQCSKVS2NzcnOucJ17DCwsDvFAGrzBqJdkgTq6mdOqdaEvtx8UJzYJOp4O7uztcXV3p96kJWSPL16zqria4zZZzWoLBINbX1027hTXrllnBNcpNb6VNTHK8VbRnr8Uoaqkszs7ObLm+1yDRtQCMWgUiSZInZ8l+xeyy8nkvg1ewkv7CyQHfyXeiKArq9brnRFc4HLYsZGdVd91OXyIIAqrVqun3dnh4aHqP3XEpXqymhBl3fLlcxtHREV68eIGjoyPLQnXYs7cjlYVXWbxeeMHgnBs21kQige3t7UeJ6Yjp8MLCAC+UwUuYdWE66UZx+p1sbm56bvLEObcsZGdVd922sHU6HeTzeTDGsL29jUQiod/zMOvXOAsXY8xSLj2zbWLQ5bqxsfHoPDtc8kbP2K+pRcZBomvO0TqsVquFZDIJURTR6/UQCoWQzWbBGNOD8QuFgt4Aut2u5SXpgiAgm80udHJLLywMsFoGL68WcxMnB3wn64UgCAiFQlNfx25qtZplIas9j5ubG9OWHTuYVeqazc1NSJKESqWCq6srrK2tIR6P4/z8HJxzhEIhRCKRkekenGqzZgSVHTF4i7bJN4muBSAcDuOdd94Z2YFEIhE8e/ZM/zfnHK9evTItvCRJwsrKCuLxOIrF4kLGD2l4YWGAlZnsvK8WM4vTgtlKvbAihBOJhOdWfamqikKhMLGQVVVV/5tz7nidnJWFrVwuo1qtolKpIJvN6oJLS6/RbrdRq9UMy+fEThEaZgSVHRbCYffml02+J4FE1wIwSYfMGMPW1hZOTk7Q6/UQDofBOddztwAPyfMymQwymYzu2uCce87NoUEWnaf4aaWjG3hBMFsVwqqqQlVVT7W729tbdLvdiYSsXXXSSnuflYW6VqshHA5jd3cXkiTh6OjoSWZ3zvlMymdGUNlhIRy8t3lfvUiiizAkHA5jZ2cHgiAgGAyiWq3i6uoKwWAQqqri7bfffhJ/0Ol0IMvy0IR9s4QsOsOhlY7ew6roqNVquL+/90zMXqfTQaFQ0P9tVcjaUScnae9uC+5wOIxIJIJYLIZ2u41OpzNyP123y2dGUNllIdTuTRAEbG1t6amP5hFToosxdgqgBkAB0OOcv9f33e8A+AMAK5zz+yHnbgP4EwBbADiA73DOT6cuOeEKkUhE/zuZTCKZTIIxBkVRhgZ8RiIRfO1rX0Ov18PR0ZGbRR0JWXSGQ9sweQ+roiMej3tmD0ZFUXBxcTHVhMuOOun19q4lAg2FQhBFEbe3t1heXp51sR5hRlDZbYErFot4+fLlXOfrstKz/tKgqGKMbQH4NoDzEef9MwD/Oef8rxljcQDqiGMJD9Mvska5LBljnttjzYsWHS+4O2mlo/ewKjpWV1c941q8vLwc2vYZY0in05BlGY1GY+Q17KiTXmzvGowxBAIBxGIxyLKMy8tLbG5uotFoIBQKPQrhmCVmBZVdFrhB66SWrwvAXAmvaaezfwjgdwH82bAvGWNfAxDgnP81AHDO61P+HuFRFEVBr9dDp9PBzc2N59JPeM2i4xV3J6109B5WREcwGPTU3nWZTAapVAqiKCIQCEBRFHS7XUiSpK+wrFarOD83nqfbYT3xYnvv329xd3cX7XZbF1jX19dQVRWMMU+FZrjp0hyVr2sRRRcH8FeMMQ7gjzjn7zPGfhXAJef84xFZdfcAlBlj/wLALoD/E8A/5Jy7txaYcIxer4dKpYJ6ve7J5Iz9eM2i4yX3h1dWOk4r6Mye73XhaFZ0hMNhfOlLX/LUysV4PD72GM2l5mRKCC+198F20+128fLlS+RyOaRSKQAPWyYJgvBo1aaV69tZn2fVPhYlX5dZ0fVznPNLxtgqgL9mjH0G4Pfw4Focd/2fB/BTeHBB/s8A/iMA/3TwQMbYbwD4DQDY3t42WSzCTTjnqFaraDQa6PV6qNVqnhZa/Xghf1Y/XnZ/GOGkUJxW0Jk93ysWxnGME8KCIGB9fd1TgssskUgE2WwWNzc3Q7+34x15qb0PazfanoOa6NI+s4rd9XmW7WNR8nWZEl2c88s3/79ljH0PwC/iwXKlWbk2AfwtY+xnOefXfadeAPiIc34MAIyxfwng38EQ0cU5fx/A+wDw3nvv+WMkXyC63S4uLi7GxmN4GS+kA9DwmvvDDE4KxWkFndnzvWRhnJRgMIjnz58/WuTiJzjnqFQqht/b9Y680t693G6cvp4VjPJ1feMb33D0d91mbPQlYyzGGEtof+PBuvUB53yVc77DOd/Bg7j66QHBBQAfAEgzxlbe/PuXAbywrfSEa9zf3/tacHkNpzeRdQIn98WbdmAye74fLYz9BAIBbG1t+VZwARgbs+T3dzSIl9uN09ezwrA9HtfW1tDr9Xz77odh5q2vAfjemwEiAOBPOeffNzqYMfYegH/AOf91zrnCGPtPAPwNe7jAhwD+2IZyEy7R6/VQrVZnXYy5w0vuD7M4GSczreXP7Pl2WxjdiH+JRqPI5XKIRqNQVdWXLsV+tJxURvjRCjwKL7cbp683CqO2M9h+2u022u22qXhBPzD2Sb5xDb475pidvr8PAPx637//GsA3Jy8i4SblchmhUAjtdluP3/JL3Jbf8Ir7wyxOCsVpByaz59s5ALoR/5JIJLC5uakLLT8LLi1rfrFYHHmcl4Lg7WCw3QSDQaysrHii3Zi5niAI2Nvbm7qs/VhtO41GY3FEF7E4NJtNXF9fz5Upl7AXp4TitILOSk6haX6nH6fjX7SN6L2Sg2sa6vU6Li8vkU6nR8ZzAf60Ao8jnU5jeXkZgiCMzDo/yXUB+57V4PWi0Si++c1v4vnz52i1Wjg+PrZlEm617dzd3QF4iGdMJpO+tXoCJLqIPkRRJMFFzIxpBZ3Z8+0Sjk7Gv4TDYSSTSSiK4jvRxTlHq9XStwMKh8OoVqvgnOuD5zj8ZgU2yyQrFMdh97NKp9NYWlpCLpdDJpPRP49Go3jrrbdwd3c3VjiPY5K2o9WdTqeDXC431e/PEhJdBDjn6Ha7yOfzsy4K4SJez1fldZyIf5EkCYlEAolEwtfB8qenp7rAaLfbMy6NN1AUBcFg0NH8ZHaRSCQeCS6NSCSCzc1NhMNh1Gq1iXcemabtaEJ+WPn8AImuBUbLu1UqldBsNh2ZhRHexC/5qryMXfE0muD1u9ukn3mNA512omKna9FJRllXtTq+srKCdruNm5sb1OvWNpuZtu3k83nEYjFP7cZglvlo4YRlOOe4uroaG9RK+JdRA8Q85KtyCrMDq13xNM+ePUMikbCl7LPi9vYWsizrIQqRSMRz+69OyzxMVMzW7WAwOPZajDFEo1Fsbm5CVVVUKhW0222oqjp2h5J5jNszC4muBURVVVxeXk7tl3cTcoVZY9wAMW+5kOzC6sA6bTxNMBj09aoszjnq9Tpub29nXRTH8ftExUrdtrJ3rmadXVlZ0a/daDRwfn4+0nsySdvpHwdOT0+xv7/vu30ZSXQtIPf3974TXH6fYbrNuAHCi7mQvCCsxz03u8sYjUafJMn1E8fHx7pFa9K9A/2C3ycqVkSjtjm5VbS6HI/HEY/H0Wq1bHOpDo4DzWYTBwcHAOAr4UWiawZoZvj+nDu9Xg+lUgnJZNJxP/Xy8jJCoRAuLi4c/R278PsMcxaMGyC8lgvJK8J61HNzoox+j+HKZDKo1WpIpVIIBAI4OTmZdZEcw4sTFSuYFY2hUMiWicDW1haAh0n+4D6bk0xeho0DiqLg8PCQRBdhjKIoOD09hSzLiEajCAaDj2YD5XIZKysrSKVSjs2AGWOWAx/tYpLG5vcZ5iwYN0B4LabCKWFttb6Nem52lzESifh+M9+lpSWkUinU63XfBIlPSjweR7lcfvK5oih48eKFK21oGkurUd0OhUKIRCLodrvY2tpCLBazZezRrhEIBCCKor5qc9LJi1F/32w2py6rm5DocpmrqyvIsgwAaLVaT4JNO50OLi4uoCgKlpeXn5zPOUev14Moimi1WgiHw3qF5pwjEAg8ajBanh/GGGq1GorFIhqNxkzcAJM2Nr/PMGeBGUuWl3IhOSGsJ6lvo56bUUqVScooiiK+9KUv+S4H1zAYY7i8vPRFKgQrDAoco/tzyzo7raV1VN0Oh8NYX1/X98W0c8K/tLSERCKBzz77DMDkEyyjccBvExcatVxEURTTK3o0cdZoNBCNRhGJRNDpdNBut58o+2AwCFVVoSiKLkRCoRAURYEsy1haWgIA1Go1MMb0BsUYQygUQq/X0zuUbDYLxhiKxaKpTtTKzGvSxuY1V5gf8JolaxxOCOtJ6tuo56Z9ZkcZVVVFr9ebOHZmlnQ6HXDOEYlEwDnH2dmZacHlhbg9MwwTOGZwMuxhWkurUd1OJpOoVCp6AttwOIyVlRXdE2PHxCAQCGB7exv5fH7iCdawcUAURezv709dPjch0eUSiqLg/Pzc0qqQQqEAYHxywX6zvlZxe70eGGPY3d2FJEngnGNjYwOqqkJVVbx8+RK5XA6pVAqyLOP+/h6RSASMMUQiEd2MrigKkskk4vE4qtXqI7ek1ZnXpI3NbwLCDuwYnLxkyRqHE8J6mvo27LnZWUbOOU5PT5FKpdBut5HNZhGLxSxfZxbc3d2h2WxidXUVzWbTdKiCV+L2zDBM4JjFquXTbFu3wxo8qk/Q7lfztgAPk/C1tTVbLF/xeBwrKyuQJGmoS3Dc5GVwHAiHw7R6kTAmn8+j0Wi49nvLy8vIZrN6vpV+61atVsPbb7+NcrmM+/t7dLtdyLKs5+zKZDLI5XKo1WrIZrN6YH8qlUKxWNSDIq3OvKaxZjglILw48/bT4GQXTghru61ndpdRlmV9a5Ner4ednR1fbGi9ubmJcrlseSGOXxbElMvlqeNFzcZ4WWnrswizuL+/RzAYHBrqYhVBEJDJZLC/v4+Dg4NH1lGzk5fBccCP+e1IdDkM5xzX19eupGhgjCGZTCKTyQydNXPOUSqVkM/nEYlEhlrQ0uk0stksisUiMpmMLrhUVcXr168RDofx1ltv4erqyvLMy73r0jkAACAASURBVGtuQq+KG78MTnZjt7B2or45Jf61zYRzuRwkSUK329UDkM3AOdfjNJvNJkRRdDTWZZLcYn5YEKP1CUaIogjGmO5JAIyz75vpT6y09Vn1n8ViEbIso9lsYmVlBZFIBLIsT1QHGGO6Zerw8BDNZhPBYBArKysTtSvKSE88oVwu625CpxBFEbFYDKqqIhaLPRJcvV5P33y2Vqvp1rZ2u4319XXEYjEUi0WUy2VsbGwglUpBEASsr68/+g1BELCzswPgweXIGLM88/Kam9Cr4sYPg5MXGWa1zOVyhvXNa1bOTqeDs7MzfTBfW1sba2HQJnX9qwc55xBFUc+VFAgERg6Qsixbji0btopvHNNYatx6V6PciowxrK2tPfrd/nINY1x/YqWtz6r/7HQ6eljM+fk5AoEAYrEYQqEQgsEgCoUCQqEQksmk6Ws+f/5cF1/FYnHifX/92CeS6HKQVqvl6CbS2iwnk8lAVVV0Oh0oioJKpYJgMIhSqYRKpfJopeL6+jqazSZisRji8TjC4TByuRyWl5dNbbDbbrdxf3+PRqMx0czLiqXA6Y7Wq+KGVmtax8hqmcvlsLe3Z/p4YLZWTs45OOfY29sDYwyKojyydvULJE1wDZvUaXnFyuUyQqEQvvSlLz2pP5ogKBQK+OpXv2opbkeSJKTTaX27FzOB9JNaatx8V6Pafi6Xe/J7/f3ZixcvLF9zkomr0T073V9GIhEoioLt7W202220223k83ksLS1ZElyDaFbDSWLotN/3U4Jh6sUdgnOOfD5vy8avkiQhGAw+clGGw2Gsrq4ilUrpHSzwMCvRLFvaqpNIJIJoNKoHzauqimQyqcd7CYIwVnApioK7uzsUCgX9npycebnR0bopbqx0iF5zw/oBq1ZLr1o5NY6OjgAAyWQS29vbUBQF9XodhUIBz549QygUQqlUMmVFl2UZR0dH+iSLMQZZllGv1/X0M6qqWoonkyRJX3hzenpqKl510v5imndlZ562cb81SX9iV1t3ur8MhUJ466239PJpqxwbjYYueLSJv1YvzKKtgp2EcrmMv/iLv0Cr1YIkSb4IrCfR5SBa4lOraCJoaWlJN+NqqR8EQUAoFNJjC4CHRr2ysvLoGqqqPlrq22w2USqVADx05FYDdu/u7nB/f//kc6diXNwYFN0SN5Ps5wd4xw3rB6xaLb1q5RykWq3iiy++gKIoetm++OILy5YBVVVRrVaHfqcoCkqlErLZ7MjzB1MHlMtllEolrK+vI5/Pm1qZPUl/Mem7sjtP2zgmtfwD07d1p/vLeDz+SEhJkoRCoQBJkpBMJiHLMi4uLiZa6ZhIJLC8vGw5DMev2wKR6HIIzTVg5XhJkpBIJCBJ0pMg2FAohEAgYDpnyuBxoigilUohGAyazr3COUelUkGr1XI9668bg6Jb4mbSfFGLslrTDqxaGfzkwh0mZuywoPdTLpeRyWSe9Ata/r+7uzvEYjE9frRcLqPZbKLVauHs7MzRZMuTviu787SNY9Jz7WjrTveX/QHrWkxv/6r3Xq+HXC43UdoT7VpW+ya/bgvkvR5mTuCcWxIq2tY/vV5Pj5vSMgW3Wi2Uy2WkUqmJc/mEw2HLKz0YY0ilUkin07rp+Pb2FrVaDcvLyxAEQV/ybjduDYpu5LLyilXFq3FMdmDVykAu3MdoMTqSJKFWqyEWi+Hm5gaKomBzcxO5XA71eh1nZ2cQBOHRhNLp3S0mfVd252kzw6xy4zndX15dXelhKdrK9d3dXQAPQmfaJL+dTgfX19d6XTLTNxm9R69vC0SiywJnZ2f6MlfNf7y9vT3UnNput03PRkVRRKFQQKlUwtraGpaWlvQEpYqiYG1tDRsbG3bfjikG83sxxvDOO++gUChAEATs7u6i1WqhVCpZSvw6jnkaFL1iVfF6HNM0WLUyDB7PGIMgCMjn87i9vZ0bC6AVNDFVKpUgSZIer5PP5yGKIiKRCCKRyEQhE2YwsnRMakHySrtzAzf6y5ubGxQKBf2Z3t7eIhaLmVqANY7PP//8iXgf1zcZvd9IJIL7+/uhllsvMH+1zyHOzs4eJXRrNpv4wQ9+gHw+j1wuB0EQoKoqut2uZQuGdk1RFFGr1XB3dwdBELC1teWpbULq9TqazSbW1taQzWbRbrcRCoX0wH07mae4Jq8ISK9Y3JzCqpVBO16zAGrtcJ4sgGbRJn6NRgOyLKPVaiEQCDzZH9apVWLjrLCTWJCM2p2bG1QbYbeb3+7+0qh8Wl+hJUwtl8u25IMzsk6N6puM3m8mk8H19bXlNBZuQaLLJIeHh09itDjnuLq6migrrraaUJtdAw+rjFKpFNbW1jwlthRFQaPRwPb2NjqdzqOYsHa7bXobkGGM6nz8tI3NKLwiIBdp5m+FebYAmkWzcGl0u91H24tp2B1LpuHEOxhsd6IoPurDZyWunXLz29Vfmilft9tFPp/Hs2fPbOk/JtkaaFS/qm2y7UUWu7c1SbfbnUiJDyORSGBjYwOBQACMMT0mShAE5HI5fXPqUWiNwa3cJIwxtFotXFxc4O2334YgCGg2m7i4uIAsyxNfd55jjAbxgoD0isXNa8y7BdBrDJtoOfUO+tudloajn1mI65ubG0+LfDMCmDGGcDiMQCCAarWKeDw+lStv0q2BhvWrgUAAy8vLns3dRaLLBLVazTYrQTwe1/NjAQ/7HCaTSXQ6HQQCAdTrdYiiqK8YbLVa6Ha7en6dSCSiHws8CEJVVREKhfRKzzlHJBJBPB7XA/O1vF1LS0uIRqOWyswYQzweRyaT0XP6MMYQDAanEl1kYXAXJyxu87AakiyAkzHu3Q/7HsDQidagFUrDznfgBXGtxelOWg432puZ56T1/51OB/f391Nv1v78+XN95aE2vk16b1YzB7jNwvYq3W5Xj1HSlkUrigJBEPT/RFHUsy3bZSWo1WpQFAWdTkcXQ2bQ4iqMLG6D+yhWKhV9Y+p+isUi4vE4tre3Tc9MGGN6o+r1enj58iWy2awebDspXugEFw07LW7zYqkkC6B1xr17o+8FQRg60dImck6+AyNxrd2Pne3CSBjd3t6OLN+467rR3sxMQuLxOCRJ0rdGsmOj9p2dHWQyGVxeXk6VLPX29hYff/yxZ5OlLqTo0tI53N/fmxY9dlkJ6vX6VDFQdtDtdic2vQYCAWxubuL29nbohtlWr+WmhWEerDJeYl4slV6JufMT49690fdGFgjOOTY2Nhx9B6urq4bbstlVZ8cJo3GB4aNwq72ZmYR0u11cXFxAURR9T956vT7RJtjAw31cXFwYJvA1g1+SpS6k6NLyT2mB8GZNkV6Iy7GDTqfzKKt1LBaDIAjIZDKmcnlpDavRaKDX6z0KwLWCmxaGebHKeAm/WSrtWLRBwv2Bce/eah3Qttlx8lmm02lD0WVXnR0njIwmmoyxsffuVnszMwnRPC/a2KF5jqyKrl6vB0EQ0Gq19D2ERxklxlkR/ZAsdSFFl0Y6nUYqlUK9Xke5XEa1WnVsdY7X6I/FkmUZkUgEyWQSiqIgHA6PNReHQiFcX19PZe1y08IwL1YZL+GnWCg7RPewa+TzeeTz+bkRYGZF5bh3P0pcAHBlojUMp+vsOGFkNNHM5XJjr+1mezMjgLU9gQGgVCohGAzqbmKznhRtOzstfGWUpWtSK6LXkqV6r3d0GcYYEokEEokEZFnG8fGxZ2fqTqIoCmq1GqLRqB7PNopQKITd3V188cUXUz0vt6yHfrPK+AE/xULZIbqHXUNjFpZTu61uVoTpuHc/TlzMylrodJ0dJ4ymmWjaUXY760y73YaqqqhUKlAUBbFYDCcnJ4jFYlhfXzd1jUFxtry8jFKpNLSdTWpFtCOPmJ0svOjqpz/b7qLR7XZxf38PSZKws7NjKi2FKIp455139Bn/YFC9l1wxfrLK+AU/xULZIbrHHeum5dQJd7kVYWrm3fdvF6QJrn537iyYts6O69PMCKNJJ5p2lH1YndE+s3o9VVUhyzK63S7S6bS+Pdw0OSZrtdrIic2oz9fX15+EC4miiP39/YnL4wQ04uAngmPS2KR5otls4rPPPgPnHIwxLC0tYWVlxVCciKIIURSxs7ODy8tLlMtlAN6LofKTVcZP+CXO0Q7RPWr1m4ZbkzYn3OVWhanRux9s+15j0jprpk9zeiIyTXszqjMak/TRqqoiFoshGo2i0WhMfZ+jUhCNa8PPnz/Hs2fPnmzV56V4LoBEF4CHLQ20xKQ3Nzd6kOCiWr20PbA45ygUCigUCkgmk1hbW8Pr16+RzWafNC7O+SOX5P39vadiqPxklXEaL1kg3cIO0T3sGoO4ZTl1wl1ulzV4XuMnzd6XVyciZurGJO+pXC6jVqtNtT/w3d3d2PxaRu1vdXUVOzs7iEQiCAQCnhNZg5Do6iMSiWBjYwP1ev1RHi/iIcAxFAohk8mg2WwiHA4jEono7kdBELC+vq4nen3x4sXQ61gZFJzYn8yLnaGbeM0C6RZ2iO7Bawzi9YBwO1xjZpjX+Em/35cZSy1g/X5arRaWlpYgy7LlxNvAwwS92+3qeb+MSKfTaDabujdFQ9uI2+tiS4NE1wDBYBBLS0vgnGNlZQWqquLq6urJi54HrIqaYrGIZDKJWCyGWq2GYDD4qJPXVqHEYrGJ9tIaLNsiigOnmVcrhBnsEN3915ilxdCqQHLTNTZOEPrV0ur3uFAzllrA2v3E43F96zor2wBxzvUt8O7u7vRthGq12sjzhqWT8GJaiFH4o7bMAE1xi6KIzc1NrK2t4erqCufn577sMAaZRNSoqqpnbk4kEqhWq8hkMkOPnXQvLY1FFgdOMovZup8G2Um2tvGDu9xN19goQejEZMqtd+L3uNDBOjNs6yWr96OlGwoEAqay0mvPTntnGo1GA91ud2zOTL+khRgFiS6TaBt7zov1ZRpRc3p6ikAggGQyaXjM8+fP0W638fnnn6PdbiMYDGJlZcX0c/K7KX+WjBqE7J6th8NhJBIJ3N/fG5bFL21mVFmBBzdG/6Awzb3YIRSsCCQ329MoQXh0dGTrZMrN+jUPcaGDdcZKPRx27Ne//nU0Go2x44EG5xzFYhHX19ePPldV1VTOR7+khRiFqZ6WMXYKoAZAAdDjnL/X993vAPgDACuc86E9L2MsCeAFgH/JOf/taQs9CxhjOD09nRvry7SdcK/XQ7FYhCAIWFtbA2MMsizrK1gYY/jyl7+ML3/5ywAeZiJnZ2ems//73ZQ/K8YNQnbN1kVRxNbWFmKxGBhjyGazuLy8RCAQQKPR0Fch+cliaVRW7fkNc8tMGnjsthB1uz0ZCUK7xZ/b9Wve4kLN3o9RnU2nHxKMP3v2zNTvCYIwVULtYf2XIAieSwsxCist7pcGRRVjbAvAtwGcjzn3PwPwry2WzXMYmTD9aH2xqxPWVilqy4avr6/RaDSwvr7+6FqSJCGbzQ7dhHsYfjflz4pxg9C0s/VwOIxcLqeLLY1AIICtrS0wxqCqKmq1Gi4uLnxlsTQq07gYGKv3Mgsh6pX2ZLf481P9GoZX3NXjMKqzx8fH+Pmf/3m0Wi09q/woWq3WVPHRw/qv58+f+yaeC5jevfiHAH4XwJ8ZHcAY+7cArAH4PoD3jI7zA9MGh3sJOzthLa2EJEkI/P/tnVuMI9l53/8fi8X7/drs+/Ts9GoXml0pGcsKIEdRoqyNvAjJg+MgQWQEysI2HCSGAcOxH5zISBAoFvwUGN44huEYTuxcNjZiR6vNQxLkwfHOCpLGXu327M52T9+7yW7er02ePHRXid3NIotksapY/f2AwbDJYvGweKrOv76r2416vY4PPvgA6+vr6onY6/UQDoeHVvXuxwmmfCvQswhNc7eeyWQ0+6spgbRKaw9ZluHxeAbW3pnmnJnVQqU3u2vQ+8bBCqFgl/PJaPE3zxZxsyyeRpwvWnOz2WyiWCzi3r17U+1nHG5ev3w+39T7NBO9M1MA+CYRCQC/LoR4g4i+BGBfCPEdrTRPInIB+DqAvwfgi0YM2EqmDQ63E7O4CNfrdUiShM3NTRwfH+Pw8BBLS0vw+/1oNBoolUpjFUx0minfDGa5CEUiEUSjUV3bRqNRhMNheL1evPvuu4adM7NcqLQEQX9l9ZtM8l2sEgp2OJ+Mvu7YxYI3CWZYPI06X4bdkHzrW9+Cy+XSZW2axY2F0v9xXtB7ln9OCLFPRBkAbxPR+wB+AZeuxWH8FIA/FkLsjWqASUSvA3gdAFZXV3UOy1yUSaVUvJ1368ssLsLdblet23J2dqYuJMFgUG0PUS6X58b8P2/MahHyer26+6kpuFwurK+vg4iuVYne2NiAy+WaaA7McqHSEgQABqba32xto5d5FgpGYOR1xy4WvEkww+Jp1PkyrNzEOCUb3G63pvV7UohI7aAyD+gSXUKI/av/T4joTQCfB3APgGLlWgbwLSL6jBCiPy3hLwH4ISL6KQAhAB4iqgohfn7AZ7wB4A0AePTokT37RwDX/McHBwc4OzuzeET2Y3t7W00jPj8/VxcTWZaxuLiIRqPBomtGzGIR8ng82NjY0JUSPohBMRc7Ozsja/IMYtYL1TBBYNQxnWehYEfsYMGbBDMsnkadL8rxPTg4GPi63pIN4XAYtVpNM9t5EsrlMqrVKsLhsGH7nCUjf10iCgJwCSEqV49fA/BVIUSmb5ttAI9uBtoLIf5u3zY/frXNLcE1r+RyOQBg4TUAJUPl9PQUkiQhHA7D4/GoqcF+vx+yLKNcLls6znkJZB0Hoxchn883seDSIpfLIRwOo9fr4fT01PZZrUYf03kTCnrPEyeeT8BsvpcZFk8jz5dYLKbZjWGckg2ZTAZ+v191dRpxbJvNpnNEFy6D4N+8smi5AfyuEOIbWhsT0SMAPyGE+IoxQ7QvRIRsNotSqaR70bhrKCn3kiTB4/GAiLC4uAghxMDqwmZidur+PC5IgUBgqp5qWigtpbrdLur1ujoXlL6fWtx115wVDDpPDg4OUK/Xr82NeajJNsk5OMvv1R8vOKm7ehhGny+D9idJ0siSDb1eD0SkxkgqsaHPnz+f6NhKkgSfz4darQbgMvxhXhgpuoQQzwC8OmKb9b7HjwHcElxCiN8C8FvjDtDuSJKE+/fv48MPPxy5YNxl6vW6Wr8rEolgf38f5XIZmUwGpVIJrVbL9DGZmbo/DwvSTVKplFqDbVZIkoTV1VV0u110u13s7e0NdVXcNdecUUJ9mv1oZRwXi0UEAoFrv4mda7JNeg7O4nvdHMusMPp8WVtbQzgcxs7OjuqxeOWVV26FDygxVr1eD/v7+6hUKmqv3m63i3v37mFvbw8ffvjh2MdWSdaSJAnVahVut9tZoosZjcfjQSqVutbWgLmO4m4UQuCjjz5CIpEAESGfz1smVs1M3bf7gnSTaDSKdDptWnCqJEk4OTmB3+9HJpNBoVDQjPmaN9fcpBgl1Kfdz7DzoX/+2r1m1qTn4Cy+l96xmN25QAul80Q2m8XKygpeffVVFAoFlMtlLC8vq9vVajUUCgVUq1XEYjF0u12USiUA34/7CgQC2N3dxbvvvqspOocd26WlJTXcQat8jZ1h0WUQyWQSzWbT8hglu9JoNFCpVNQYg0gkgnq9bql10Mz4ILsvSAqBQACZTOZW8VMzUGIkgcts1w8//NASC6hdMEqoT7ufYeUC+p+3e82sSc9BJTvuJtN8Lz1jmVYsG2UlzeVykGUZkUgEpVIJsiyjWCwim80imUyi0WjA5XLh8PDwWsjIoFhnpYjyW2+9NTQkZ9ixrdVquloO2RV7nA0OQJIkLC4uol6v224htQNCCOzs7GBjYwOxWAydTmei7DUjMTM+yO4Lks/nQzKZVF3AVkNEWFpawrNnz6weimXoFQmjFtdR+xn1/kwmo5m11j9/7R5vN8k5OKx6+jTfS89YphHLRoYz5PN5JBIJtFot9eY5Go1CkiQcHR2hWCyO1T7ugw8+GBpCMGzOZDIZpNPpscZvN1xWD8BJuN1ubGxs4N69e/B6vWqFbub71Ot1tFot3ZXpZ0ksFkMul1MvdG632/BAVoVMJnNLzNhpQep0OmrMhV1Q3BJ3FS0x0P+8srgqi15/Rpie/eh5v5Z76ub81XM+FYtFbG1t4b333sPW1tZULWHGZZJzUOs6JUnSVNcJPWOZxjo+TLCNS6fTwfHxMZ4+farOmb29Pezv748luPpRajYOYmlpSfPYKmvHPHuU7HGb7SA8Hg88Hg8ePHiAWq2G7e1teL1eEBEajQai0Sii0SiOj49t4ToxO6PO5XJBCKG7rsusMSs+yO4B4N1uF7u7u3jw4IFthFcmk0Gr1dKd5WqX7FCjxqHHcqTHGjJsP3qtKYuLiwgEAiO/17DzyepkkknOQS1BMW22up6xTGMdn1U4w9HRZRnObreL8/PzifeTSqUGZkE+evQIyWQS29vbA99XKpVARIhGo3PrYmTRNUOCwaCaZQFcTlSlZYHP58PW1paVw7PkInizzotdFkozsHMAuNfrRTwet43gAi4vwnoXt3Hn8qzmnZHnlJ6FWW+vTa39aLkNB+132vlrh2SScb/DLMMCRo1lGnetUeOe1Xlyc04GAgE8fPgQa2trKBQKmu+Lx+NIp9NzXSmARdeM6e8L1e9uNNOsroUVF0EjA0WZ6ZAkCalUSi1cazd3uDIvwuGw6tbQckmPM5dnOe+MPqduLk6Ke0h5Xu/iqrXAczLJcKyMU5vGOm7EuGd9fe6fk/fu3UMwGBy6fTAYRDKZHOqanAdYdFlEJBJBq9VCvV5Hp9OxZAxWXwTtcOd7V5EkCdlsFolEwuqhaEJEuH//vvp3LBZDuVwe6HIcZy7Pct4ZfU6NWvimXVw5mWQ4VocFaInlURYoI8Zt5vW5fw74/f6B21xcXMDn8xn6uVZg39nucHw+H1ZWViCEwPPnzy3J5LP6Imi16LuLEBFeeOGFuSomqBAMBhEMBq9VsFcYVtZga2vr2oIzy3ln9Dk1auGbdnHV+34j3Ex2z27Uwm5hAVpCXHmu//eZZtxmXp93d3dx7949SJKklq3p9XoIhULY2dmBEGLusxYVWHRZDBEhnU5bIrqsvghaLfqcSDabVZvK1mo1tFotdLtdXFxcIJlMIp1Oz/3xlWX5Vu2kQXNZ4aZ1aJbzzuhzSm/M1jR1m0a93yg3k9VWI6egJcQVjKrnZeb1udlsolQqqZZ35XwRQqitkuwUbzoN8331dQh+vx/r6+tqRohZPQmtvghaLfqcSD6fV2MfkskkgMsLV6fTmftYCAVZlrG8vIy9vT117tycyzfptw7Nct4ZfU4ZGRA9qXAy0s1kN6vRPKLH0mREPS8zr89KRuKg51dWVrC3t2eLbH8jYNFlA4hIbWcQDodxeHg4VTruOFh5ETRygbpLWZDD6Ha7aDQaCAQC6nNE5BjBpRCNRtHpdNQUduD7c/m9994b+B5lsZr1zYaR55RRC980wonDAOzFMFd6P9PW89rc3FS3mfV1VQiBcrmMeDx+67VQKITNzU3bJfpMCosum6F0YDdLdFmNEQuUGVmQ8yTqnHJHOAqtoFo91qF5sbgYJRCnEU4cBmAvhrnS+zGinpeZ58mwhDKnCC6ARZctCYVCWFtbw8HBgWWZjfPErLNs5q20RbvdtnoIpqBlvXOa29qIhW/SFjha7tp5Pp7zzk0hPqiendn1vG4yyU2qz+eDEMIxsVtasOiyKeFwGA8ePIAQAoVCYaL2DXeFWbs/5q20RbPZvBsXL7d74IJjdayiHRlXiN680ejHiuM5T5bmWTDo+yvuP63XzarnNWisk9yk7u7uQpIkLCwswO/3z2WGtR5YdNkYxaQqyzIkSUKv17O8X6EdmbX7Yx5iWjweD/x+P5rNJlwul+MFF3B5fnziE5/A1tbWLYvwvLgP9WCE4BhXiGr1HHS73dcWezPQu4g7VZjp+f6TzvdZ3KDovUm9+XstLy9jc3MT5+fnaDQayOVyE4/BzrDomgOUE0oIgXa7rabXNhoNCCHmVoyZ2aNums+3e0xLIBDA6uqqOh47icFZc3Fx4WgXvNFthfS+x043GnoW8XkLARiHWVvajb5B0TN3Bv1eu7u7yGazWF9fd/RNoz1WDWYoygQkIvh8PrjdbvR6PQQCAfj9fpTLZXQ6HXQ6HTSbTYtHqw+ze9RN8/l2jhGKx+NYWlq69pxdxKAZuFwu1Go17O/vTyTe7W4dscq1rXWjYcViqGcRn7cQgHGwkwDWg56b1EG/V7fbxZMnT7C2tjbzMVrJ3bk6Owi3232tfYtSbqLVauHp06fq8z6fz7YibBY96mbV4sKuMUJK/MNdZm9vD3t7e2pc1zjifR6sI1YtuJlMRrMZdrFYNPX46FnE502YjMOwEhFm/xZ60HOTqvV96vX6zMdnNSy6HIQsy/D5fOr/6XRadb9sb29DCKHGhykxYm63Gy6XC+Vy2VQXpdUXyXE/344xQt1uF3t7ewgGgwiHw44NPB3GkydPbgXS6xXv82Adscq1HYvFcHx8PPGxNRI9i7jdQwCmYZgAttNcVdBzk6r1e/XXF3Qq8z8jGRWXy4WNjQ21bUKz2USv1wMAvPzyy+j1eiAiNUBfKS0gyzKq1arqojEDqy+SVn++UVQqFVQqFRwdHSESiSCbzcLj8Tg6JqIfrTvjaYpH2sk6YqVr+6bgUjD7+OhZxI08TnZzOcdiMU3RZae52s+om9RBv5ckSXj48KEZw7OU+VphmJEogiqfz+P09BQAkE6nEQqFrmVACiFQr9fhdrtRq9VQqVQ0L7KzwOo4Kas/fxaUy2VUKhX4fD74/X5kMpm5E5F6KJVKODo6wsbGBrxe78BisHq+9zwIbytd23Y6PqMW8UG1q3q9Hg4ODnBycqL7mNnV5az1WwzqQzoPxGIx+P1+HB4eol6vIxAI4OHDh46P5wJYdDkSIQRKQYlIqwAAIABJREFUpZL6dz6fR6VSQa/XQ7fbVd2M4XAYRIRqtYpGo2HqGK2Ok7L682eFEAKNRgPtdtux8V69Xg+dTgcHBwdYX1/H1tbWROJ5XoS3Va7teTk+CspxskufSSMZ9Fu4XC689NJLtrV2DSORSCCXy90Zi3w/LLociizLqvtQCHEroL7ValneLsbqOCmrP39WeL1erK2tOap1Rj9utxvBYBDVahWSJCGXy00knp0qvI3CrONjtDvPiX0mb/4WHo8Hr776KmKxGPb39y0d27gEAoE7K7gAFl2OhIgcXbuIGY7y+5+dneHi4gKBQOBatuu8Ew6HEQ6HcXp6iuPj46nEs1OFt1HM+vjMwp1n5z6T0wjM/t8iGo1iZWXlWra6XdD6jrIsIxKJIJVK3VnBBbDocizz5uOflnmMa5gVzWYTH3/8sfp3o9FAKBTS7FU4r0SjUXi9XnQ6HXWhlmWZbzjmiFm486YRTrMMyA+FQiiVShMJzP59ybKMT37ykwAug8/thJaIdrlc+MEf/EHbjdcKWHQ5lIWFBezv76vZi/OGcnIOCu5PpVLI5/Nwu93IZrNqDFO1WjV7mHNBq9XC2dmZ42K8PB6PKiQDgYD6+NmzZ5a7zhl9zMKdN41wMsqlOkh8FIvFW9vpEZg399XpdPDd734XHo8HoVDIstpWgyxaWiI6n8+z4LqCRZdDiUajcLvd2N/fV2O75gVJkpBIJHB6eopMJoPT01MIIRAMBhGLxdBsNhEOhxEKhSDLMvL5PNrtNiRJQigUUkXYJNgtXdwozs/PkUwmIcuy1UOZCX6/X338wgsv4ODgAOfn54Z+hlPnhpXMwp03rXAywqWq1btyEKME5rDq7a+99hpOTk4mHuekaFm0tL6zXYt0WwGLLgcTDAbn0tIlyzIajQaCwSAqlQri8Tj8fj+ICI1GA9VqFSsrK/D5fGqJhOXlZbTbbVQqFQQCAfR6PUQiEZydnen+XLumixtBt9vF06dPkUqlbJt9ZhREZPiNhpPnhpXMKkPS6li9cSx1owTmsOrtH3300VjjMgoti5YWd6HoqV5YdDmceQtY9Hg8iMfjqNfryGQyODs7gyRJcLvdCIfDty6k4XBYXQAbjQY8Hg8ePHiAdrutWVBQC7umi4/DMGtMOBy+ZhFyMkbPeyfMDTvi1AzSYa17biKEwHvvvaf53YdZA8etrRgMBhGPx9X6Xm63G51OB0dHRwAuW8d1u91rN7n95YcUhn23m/G1d6XoqV5YdDmcUChkuJtllrTbbdWCcHFxgXA4jHg8PrT8QSQSgcvlQrvdRjAYRLvdRj6fH9uVZtd0cb1oWWOUi57So/MuEAqFDI3xm/e5MQ2zdqtOapWys7tXy4IXjUZRrVZxcXGh3hiM6huqVaNreXn51ue6XC7Isgy32412uw0hhJpEI0kSAoHArRsvj8eDjY0NzRuVeDyOs7MzlMtl9blhbXzW1tbw8ccfo9ls3qmip3ph0eVwfD6f1UOYmFqthlqtplaUTiaTAy8MkiSh3W7j9PQUnU4HLpdrLLeigp0qcE+CljXm6OgI6+vr1wLPnU4ymUSlUkGtVjNkf/M+NybFrm5VM8Y1bXkHYLgFb2tr69acGmQ9HbSvT3ziE3jw4AGq1Sq63S68Xi/8fv+1+SiE0G3xHbad0s2kWq2q4SrD2visra2xZWsIzr5iMKa29tHLuBczSZIQDAYHviaEUKvtb2xsoFqtqsH241o65q0C9020rC6dTgeFQgHlchkvvviiyaOyBiLC6uoq3n//fUNKicz73JgUu7pVZz0uI0TdKAveONZTZV+SJGFxcRGRSAREhHg8rrl/I13sPp8PoVBItXYp36tQKKDVarFFawxYdDkcuwXST3Ix6/V6KJVKyOfziMfj19xknU4HvV4P1WoVQghks1kQEVZWVlAul1EsFtHpdFRz/jAROu/xJaOsMU4rGTEKIyvya80N4PsWi3mbL3qwq1t11uMyQ2xqna+DxJLH40EqlUI0GrWk9AIRIRgMQpZlFAoFAJdux89+9rOOt/YaDR8th2O3QPpJLmbdbhf5fB7AZVPncDiMbDYLt9uN7e1tuN1uLCwsqEGhsixDkiTE43HE43E0m00QEU5PTyHLMsrlsmYdJz3xJXaNJRlljTk/P0c0GrVqeKajfPfj42ND9ndzbtjV9XaTaearXd2qsx6XGWIzk8loJvsUi0XVspXJZJBIJCy/lieTSTQaDRQKBYTDYWQyGcvnwTzCR8zhxGIxFAoF21i8pr2YCSFQLpdRLpfVC2+73cb29jY8Hg9arRYWFxevtb1R4toUoZbJZFCr1dDpdHB8fDzWhdTOC206nYbf78fOzs7ABdbv948V5+EEfD6f+r2NrhVkV9dbP9POV7u6VWc9LjPEZiwWw/Hx8S3ruzKH1tbWkMvlbCVsfD4fVldXEQ6H79R1xEjs82syM6Hdbtvq5DDyYta/HyGEar06OTmBy+VCp9NBOp1Wt1GyGfP5POr1+rXAUL3YdaF1uVxYX18HESGXy6mJBEq2UigUQjgctmx8VqH0aRRCYG9vb2D6+6TY1fXWz7Tz1a4u91mPyyyxqRXucHFxgZWVFUM/ywiICJFIxOphzDW6Vjoi2gZQAdAFcCGEeNT32s8C+BUAaSFE/sb7PgXg1wBErt77L4QQv2fM0Bk9uFwuBIPBa+m+VjLri1kqlUIkEkGlUlFjenq9HrrdLlqtFkKhEFKpFE5OTiY6JnZYaGVZhsfjUTPz/H4/YrEYvF4vAGBxcRELCwvodruOrUA/LpM0gR/llrOr660fI+ar1YVGtZjluMwSm8NKLzDOZJyrwxcGiKoVAK8BeK7xnjqAvy+EeEpEiwDeJaK3hBC3m1AxMyEYDCIYDKLVauHk5MTQO/1JmPXFLJ/P4+zsDPfu3YPX60Wj0cDBwQEajQaWl5dVi8ekFcutXmjT6bQqUDudjlrI8CYul8vQQHInsLS0hMPDQ11ZrXrccnZ1vfVj9XydZ8wQm8NKLzDOZNoz71cB/ByAPxj0ohBiq+/xARGdAEgDYNFlMl6vFysrK8hmszg/P1ez+hSU5qmKK1IppFev19VsmUgkAkmS8NFHH2kGoisFACuVCohIbenTz6wvZr1eDx9//DGSySTS6TQWFhZwdnaGcDiMvb09tFothMNheDweVYRKkgQiGmkBsGqhVeLS+gNq70rNLaPwer1YWlpCvV7HycnJ0KbYetxydnW99TPufLVrksgo5nXcyhiVGoNcesH56BVdAsA3iUgA+HUhxBtE9CUA+0KI7+iJGSKizwDwALCmWRQD4HKhzmazajD52dkZ2u021tfXB979Dqpivr6+jmq1CrfbDUmS0Gw2IcsyLi4u1MDlbreLi4sLfPzxx2Z8rVsoMV4ffPABgsEglpaWUKlUUCqVcP/+fVSrVTWw2uv1QpZlXYU0rVho79+/f2fa98waWZYRjUYRCoWwt7eHSqUycDu9bjkjbyBmIRzGma92ThIZxryOWyEWiyGRSOCll16yVfwtMxv0iq7PCSH2iSgD4G0ieh/AL+DStTgSIsoB+PcAviyEGBi5TESvA3gdAFZXV3UOi5kUIkIoFEIoFBo7o02W5WtF+QbFH0iSpFrLrIgnU7IcX3jhBRAR8vk8fD6fGlh/fHwMWZaRSCSGlpAYhJkxLrIso1Qq4fT0FNFo9E6VfJglkiRheXkZxWLxmjX29PQUgLZbzuv14v79+6p7end315DxzFI46J2vdk0SGcW8jrufXq+H/f195HI5S+pwMeahS3QJIfav/j8hojcBfB7APQCKlWsZwLeI6DNCiKP+9xJRBMAfAfhFIcSfDPmMNwC8AQCPHj2avoQ0o5tZ3l2l02m0Wq2xRI2RlMtl5PN5pFIpeDwehMNhuFwuJJNJNebJiCD4WVgplNYejUYDQgiO0TIYSZKQTCYBQM3I8vv9eP78uWa/u0996lPw+/2q5fHi4gL1el0V+ZIkTdQFwgjhMO0ctEOSyCTM67hvUiwW0ev1sLKywhYvBzNSdBFREIBLCFG5evwagK8KITJ922wDeDQg0N4D4E0Avy2E+M+GjpyZC/x+PzKZjGEWgXHJ5/MIBoMoFArI5/Pw+/1YWlrCwsIC2u026vU6fD7fVDWcZmWlSCQSqihgzCEcDl9rOaWIGFmW8fLLL9+KtUkmk0gmk+pv32638eGHH47demha4TDNHFTEmhZmBd1PKhqdlCxQLpdxenpqq2QMxlj0zMosgDevlLcbwO8KIb6htTERPQLwE0KIrwD4UQB/GUCSiH78apMfF0J8e6pRM3OFYhXwer1qPNj+/r4pn93r9a7F7dRqNRweHiKVSqmFCdPpNEqlkmZ8zyhm5d5QSkAw5kFEyGazePbsmSrOm80mNjY2hqbxK5YJr9eLhYUFHB0djSW8phUOk87Bm2LtJmYF3U8jGuchi3Qczs7OkE6n2drlUEae0UKIZwBeHbHNet/jxwC+cvX4dwD8znRDZOYdj8eDXC6HUCikxoO5XC7s7+9bUim/UqkgFAohHo+rWYvTXOBm5d5oNpsDExmY2eL3+7GysoJgMAiXy4VisTiWAE4mk/D5fNjb28PFxYUu8TWtcJh0Dg4SawpmBt1Pc+MyD1mk46B02eCbLmcyf/ZXZi656SaLRqNq78RxXTFGcHh4iKWlJbV5q1KSYRJm5d64uLhAq9Xii6/JKGVPFPpbSuklGAxic3MT+XxeV+/HaYXDpHNwmCjb3NzUfM1o6+60Ny52LeA6KbVajc97h8Kii7EMZWE6PT1Vg0jNwO12Y3l5+VovwkgkojbDrtfrt94TjUbRarWutRtSmNZKIcvywGrp+XwezWbzVsV5Zj4gIqRSKdTrdV2u62mEw6Rz0GixNql110lxWUbArkXnwulQjKXIsozFxUW8+OKLphX7vLi4wMXFBba2ttBut9FsNnF2doZarXZNcLndbvj9foTDYdRqNTSbTXQ6nVsuv1gsdq0xrdvtRi6X01xAJUmC3++HJElYWlrC5uYmFhcXB6aKdzqdO7vwOAGlF+asGXcOKmQymVsLvF6xNs7zo5h0HE7FqmxvZvbw1ZyxBZIkIZFI4OjoaPTGUxAIBNBsNnF0dITl5WUcHBwgFAqh0Wiolol8Pg9ZlhEIBG61Ter1epAkCQsLCzg9PVXLA+i1UrhcLqyuriIYDF6rj6YUlO0nl8tdq0DPzCeyLGtaM41kEkvZpG5No4PXnRaXNS1cDNm5sOhibIMZ4kKWZcRiMbTbbRSLRQgh4PV6QURotVrIZDJqxmOj0UAgEECv14PP50OpVIIQAqVSCaVSCel0Wi2mqZf19XU1C67/+56dnd3attlsqiKPmV+ICD6fb+aia1LMFGtGj8OpcAKNc2HRxdgGM0SX0uqn1+shEokglUqh2WyiXC6jUqlACIFwOAwiUgupVqtVRCIRBAIBnJ6eIhgM4uLiYqBQGkY2m9W8gx0Uz9ZsNtHtdll0OYBkMjlxSRK7oogkl8sFSZJsKyrnDbfbzYWQHQyLLsY2xGIxCCFweno6s2rSy8vLajHUTqeD8/Pza+JJ6cunVCgHvt/mqL9FjMvlgt/vx9nZGYgILpcLFxcXA8UTESGdTqstiBR6vR56vR6azebABXlxcZGbWjsEKzJ0zaLX64GI4Ha71TnNTE4sFuOQAgfDoouxDUp7nlgsNrQZ8aS43W6cnJwMzE4ELlsWDTLrd7td5PN5lMtlCCFQKBSwsLCAarUKSZJUAXZ+fn7rvalUCslkErIs33qtUCholhNIp9MD38PMH61WC8Vi0ephzJRut6t2n9jZ2bF6OHOLJElIpVJWD4OZISy6GNuhBKqHQiG0Wi2USiXIsqzGxSi97sZFyVrsR5ZlhEIhxGKxgRXHm80mtre34Xa7EQwGVdfi8fExXC4X4vE43G43SqUSPB6P2ghZoVAooN1uD+ynFg6H0e12US6Xb71PlmXOWnQAQggcHR0NvYGYRd9OK2g0Guh0OkgkEkNd7075vrNgcXGRz3uHw78uY0u8Xq9alyqXy6mCpdPp4IMPPjDsc2RZxtLS0tDXFxYWri0KvV4P4XAYsizD6/Wi2+2iVCqpVaT7072VRsjtdhuVSkWtgg9cFmRdWFjAwsICdnZ21IWZiNjK5SCG9fWcVd9Oq8jn87h//75m3T2nfV8j8fl814ryMs6ERRdje/otREoh03K5PHDbYDCIxcVFHB8fa27Tv694PD50G0mSbi0GLpcLoVAIvV4Ph4eHqttRlmXNWLSnT58CuHTDpFIpNBoNNBoNxOPxa30fQ6EQlpeX+W7XIYxqMTWrvp1W0W63USgUkEgkkM/nb73utO9rJNzc/m7AV3ZmrnC73VhdXcX+/r5a8gEAIpEIOp0O1tbW4HK5sLS0hHg8DiEEisXiQAHm9XpHii4tut0unj9/jlqthnQ6rcZhtFot7O3todPpDHSBFotFpFIplEolnJ+fX1uEwuEwVldXOYjWIRQKBRSLxVuu435m1bfTSk5PT/HgwQPUajU0Go1rrznx+xoFH4O7AYsuZi7J5XJYXFxURU4sFruWcShJEsLhMIBLQdZqtdBqtXB0dAQhBC4uLqa6szw6OkKr1cLCwgISiYSa4h0IBLC2tob9/f1rAftKxmS328XR0REikQjOz8+vCbNQKMSCywEohXbr9fot0XETJ7a/UeLY0uk0nj9/fu01J35fo8jn87cynBnnwTOdmUsUkePz+bCxsTFSrCgxYpFIBEKIqYuOhkIhZLPZgYuF1+vF+vo63nvvPQCX1bvT6TS2trbUMhUejwdra2sol8twuVxIpVJcj8shHB4eotFo6IrLM7qyu10ol8tIJpOIRqPXujrMw/c1M9C//7O8Xq9608Y4FxZdzNwzbiFBIppa4OgJeM1ms/D5fAgGg2r8WKlUQiaTQSgUumaNY5xDMBhEvV4f6lZUcHL7m+3tbeRyOVSr1WvtsgD7fl8zA/1vflar1cLjx48BgIWXg2HRxTAzwOVy3XIVKLFfXG3a2SSTSRQKBd1FQuel/Y1SrLdQKCCTyaDVaqFQKGi6UJUA+Y2NDTQaDVSrVRSLxVvC6+TkBMBgUWN2eQkzA/0HfVa328WTJ09YdDkYFl0MYxKjMtkYZ+B2u7G+vo6dnZ1bTcznlWKxiGfPnqHZbCIQCODhw4dYW1tDIBDA9vb2LatePB5HNBqF3++HJEnwer2IxWLw+/343ve+p8uaZEV5CTMD/bX2qVW8mXEGfMvNMAxjMIFAwDE1lxTxo9Qbq9frePz4MXZ2duDxeAa66pXixjdfSyaTODs7G2hNutk8fpjVaVZoBfTPItBfa5+DijQzzoFFF8MwzAzI5XKOyMq7GfgOfN8NBty22PQXAB6EVrHYTqeDzc1NvPTSS3jxxRctKS+RyWRuWaNnFei/vLx8K9RAkiQ8fPjQ8M9i7MP8XxEYhmFsxOHhIQKBABqNxljuxVnGL0267/5aeDdR3GDRaBSNRgP1el3tsjCMQCAw0IUWCATUBu+SJGluN0sha0agv9vtRiwWQyaTQTabxZMnT1Cv16+5bRnnwqKLYRjGQDqdDnZ3dzVfHySAAMwsfmma2KhhrjzFDaaIrG63i4uLi5GZwQ8fPsTjx4+vCdJBFp5B25lRXsKIxAYtkRuPx5HL5VQL19raGousOwaLLoZhGANZWFhArVYbaOUaJoBmlTU3TUbeMFfeTZEkSZKuUiyKyBhl4Rm0nRKgb2e0fuNMJjO0zytzN2DRxTAMYyCdTkfTraglgLQwIn5pmtgorQrySnHfSdFr4bm5XaFQUEWqXdH6jbe2trC5uWnRqBi7wIH0DMMwBjIsjmtcETVp/JLf71fdf9Nk5A0KLJckCZ/+9KcnGte0JBIJ25dd4VIQzDDY0sUwDGMAnU4Hz58/R7vd1ozp0bIcSZKEXq9nWHuceDyOeDyOer2OTqeDjz766FqxVr37vhlY7vf78corr1gWh0RE2NzcRK1Ww+Hhoel10PQkJGj9xlwKggFYdDEMwxiCLMuIRqN4//33NeO2tHoPZrNZAMZkzRERzs/P0e12kUwm8elPfxrxeBxPnjxBo9EYa9+JRAKrq6vwer2QZdkW3RRkWVYb3G9vb5tmQdKbkJDJZHB0dHRN5HIpCEaBRRfDMIxBRKNRnJ6eagauKzE9WuJq2qB5r9eLXC6HUCh07fn19XWsr69je3sb1Wr11vvcbrdqoVGsNLIsI5fL2dad53K5sLGxgXa7jV6vByLC2dkZKpUKFhYWEAgE0Ov1cHJyglqtpv4mkiSh1WqN/Xl6EhIkScLy8jJWVla4FAQzEBZdDMMwBiHLMjqdzsDXFDEzTUkCr9eLQCCA8/Nz9TmPx4NoNAoiGtnbM5FIoF6vQ5ZlhMNhVZwpTdmBy5g0xSJmV8HVj1LbC7gsSLuwsHBt3MvLywCgCjMhBHZ3d1GtVocmMdxkWEJCKpVCLBaD1+tVP5tFFjMIFl0MwzAGMm5RT6VXY7vdRqVSQblcHhirlEgkkM1mIUkSkskkDg8PUavVsLKyAr/fr2tskUgEL774Ilwul6agkiTplqVsntD6XooYJSKsra2hUqlgZ2dH936HxWqNKgjLMAosuhiGYQxk3KKeiUQCPp8PPp8PkUgEi4uLyOfzaLVa6HQ6CIfD8Pv9CAaD6nt8Ph/W19fR7XZ11cbqZ9ztncDOzs41d98nP/lJrK+vY2FhAUdHR7r2MSgej2O1mHFh0cUwDGMgN4t6er1eJJPJWy5Fl8sFWZZvWbWICOl0euTnEJEjejvOmp2dnWsiuF6v45133sHp6SkymQxcLte1oHctYrEYJElCPp9Ho9HgWC1mIviMZRiGMZj+op5CCDSbTezu7qLdbqvxU6FQCKlUyuKROp8nT57cErZKXJdetyxw6V58+eWXbV8Rn7E3LLoYhmFmCBHB7/djaWkJvV4Pfr8fbrd7rCBuZnK0SkroLVTrdruRSCQQj8chy7KRQ2PuICy6GIZhTKA/JgvQDvhmjEUrsaE/63EQoVAI8Xgc4XDYFvXJGGfAoothGIZxLIMSGyRJwiuvvIJEIgGXy4VarYZCoQAACIfDyGQyY7keGUYvLLoYhmEYx3IzsWFQAHw4HEa73UYoFEIymbRqqMwdgEUXwzAM42j6ExsGodTuYphZo8tRTUTbRPSEiL5NRI9vvPazRCSIaGAaDhF9mYieXv37shGDZhiGYRiGmTfGsXR9QQiR73+CiFYAvAbg+aA3EFECwC8BeARAAHiXiP5QCHE+aHuGYRiGYRinMm1Kxq8C+DlcCqpB/DCAt4UQZ1dC620APzLlZzIMwzAMw8wdekWXAPBNInqXiF4HACL6EoB9IcR3hrxvCcBu3997V88xDMMwDMPcKfS6Fz8nhNgnogyAt4nofQC/gEvXoiFcibnXAWB1ddWo3TIMwzAMw9gCXZYuIcT+1f8nAN4E8HkA9wB8h4i2ASwD+BYR3Wy1vg9gpe/v5avnBn3GG0KIR0KIR3r6jjEMwzAMw8wTI0UXEQWJKKw8xqV16x0hREYIsS6EWMel2/AvCCFutmt/C8BrRBQnovjVe98y9BswDMMwDMPMAXrci1kAb161rHAD+F0hxDe0NiaiRwB+QgjxFSHEGRH9MoB3rl7+qhDibNpBMwzDMAzDzBtkx6arjx49Eo8fPx69IcMwDMMwjMUQ0btCiEejtuMungzDMAzDMCbAoothGIZhGMYEWHQxDMMwDMOYAIsuhmEYhmEYE2DRxTAMwzAMYwK2zF4kolMAO1aPwwRSAPIjt2KMgo+3ufDxNhc+3ubCx9tc7H6814QQIyu721J03RWI6LGeFFPGGPh4mwsfb3Ph420ufLzNxSnHm92LDMMwDMMwJsCii2EYhmEYxgRYdFnLG1YP4I7Bx9tc+HibCx9vc+HjbS6OON4c08UwDMMwDGMCbOliGIZhGIYxARZdJkJEnyKiPyGibxPRYyL6jMZ2Xyaip1f/vmz2OJ0CEf3e1bH+NhFtE9G3NbbbJqInyu9i9jidwhjH+0eI6AMi+pCIft7scToJIvpHRPQ+Ef05EX1NYxue3wah83jz/DYAIvpnRLTfd035GxrbzdX8dls9gDvG1wD8cyHE/7iaQF8D8Ff6NyCiBIBfAvAIgADwLhH9oRDi3OzBzjtCiL+tPCairwMoDdn8C0IIO9eAsT16jjcRSQD+DYC/DmAPwDtX8/s90wbqEIjoCwC+BOBVIUSLiDJDNuf5PSV6jjfPb8P5VSHEr+jYbm7mN1u6zEUAiFw9jgI4GLDNDwN4WwhxdiW03gbwIyaNz5EQEQH4UQD/weqx3AVGHO/PAPhQCPFMCNEG8B9xuZAx4/OTAP6VEKIFAEKIE4vH43T0HG+e38xQWHSZyz8B8K+JaBfArwD4pwO2WQKw2/f33tVzzOT8EIBjIcRTjdcFgG8S0btE9LqJ43Iqw443z2/j2ATwQ0T0/4jofxPRD2hsx/PbGPQcb57fxvLTRPRdIvpNIoprbDNX85vdiwZDRP8TwMKAl34RwF8D8DNCiP9CRD8K4N8B+KKZ43Maw463EOIPrh7/HQy3cn1OCLF/5S54m4jeF0L8H6PH6gQMOt6MTkZcT9wAEgA+C+AHAPw+EW2I2ynpPL91YtDxZnQy4nj/GoBfxqWo+mUAXwfwDwZsO1fzm0WXwQghNEUUEf02gH989ed/AvAbAzbbx/U4r2UA/8ug4TmOYccbAIjIDeBvAfiLQ/axf/X/CRG9iUsXgW1PWisx4HjvA1jp+3v56jlmACOuJz8J4L9eLfp/SkQ9XPanO72xD57fOjHgePP8HoNR1xMFIvq3AP67xj7man6ze9FcDgB8/urxXwUwyP3yFoDXiCh+ZU597eo5ZjK+COB9IcTeoBeJKEhEYeUxLo/3n5k4Pqcx9HgDeAfJd16KAAABF0lEQVTAAyK6R0QeAD8G4A9NG52z+G8AvgAARLQJwIMbDYF5fhvKyOMNnt+GQUS5vj//JgbM23mc3yy6zOUfAvg6EX0HwL8E8DoAENEjIvoNABBCnOHSlPrO1b+vXj3HTMaP4Yari4gWieiPr/7MAvi/V7/JnwL4IyHEN0weo5MYeryFEBcAfhqXNxLfA/D7Qog/N32UzuA3AWwQ0Z/hMmD7y0IIwfN7Zow83jy/DeVrV6UgvotLsfszwPxfv7kiPcMwDMMwjAmwpYthGIZhGMYEWHQxDMMwDMOYAIsuhmEYhmEYE2DRxTAMwzAMYwIsuhiGYRiGYUyARRfDMAzDMIwJsOhiGIZhGIYxARZdDMMwDMMwJvD/AR43BF02OsUvAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "base_map.plot(ax=ax, color=\"lightgray\")\n", "town_lookup.plot(ax=ax, color='darkgray')" ] }, { "cell_type": "code", "execution_count": 128, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:17:22.848086Z", "start_time": "2018-06-08T18:17:22.718557Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "towns = set(reference.minor_xs('town').values.ravel('k'))\n", "\n", "en_df= pd.DataFrame.from_dict({\n", " town:\n", " enrolment[:,reference.major_axis[(reference.minor_xs('town')==town).any(axis=1)],:].sum().sum()\n", " for town in towns\n", "}).T.drop(np.nan)\n", "\n", "av_df= pd.DataFrame.from_dict({\n", " town:\n", " available[:,reference.major_axis[(reference.minor_xs('town')==town).any(axis=1)],'available places'].sum()\n", " for town in towns\n", "}).T.drop(np.nan)" ] }, { "cell_type": "code", "execution_count": 129, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:17:23.358977Z", "start_time": "2018-06-08T18:17:23.326781Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
av_2017en_2017av_2017_rat
town
dungiven18.083.00.216867
crumlin286.0126.02.269841
aughnacloy86.0166.00.518072
crossgar230.0235.00.978723
tandragee68.0287.00.236934
\n", "
" ], "text/plain": [ " av_2017 en_2017 av_2017_rat\n", "town \n", "dungiven 18.0 83.0 0.216867\n", "crumlin 286.0 126.0 2.269841\n", "aughnacloy 86.0 166.0 0.518072\n", "crossgar 230.0 235.0 0.978723\n", "tandragee 68.0 287.0 0.236934" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "source": [ "town_stats = gp.GeoDataFrame(geometry=geometry)\n", "\n", "for c in av_df:\n", " town_stats[f\"av_{c}\"] = av_df[c]\n", " town_stats[f\"av_{c}_rat\"] = (av_df[c]/en_df[c])\n", "for c in en_df:\n", " town_stats[f\"en_{c}\"] = en_df[c]\n", " \n", "town_stats[[\"av_2017\",\"en_2017\", \"av_2017_rat\"]]\\\n", ".dropna().sort_values('av_2017_rat').sort_values('en_2017').head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Enough Code, show me the mappys!" ] }, { "cell_type": "code", "execution_count": 130, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:17:25.844256Z", "start_time": "2018-06-08T18:17:25.433538Z" }, "scrolled": false, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 130, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize = graph_figsize)\n", "base_map.plot(color='lightgray', ax=ax)\n", "town_stats.plot(column=\"en_2017\", \n", " ax=ax, legend=True, \n", " cmap='RdYlGn_r')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Points aren't really very good for seeing trends though...\n", "Need some regions" ] }, { "cell_type": "code", "execution_count": 131, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:17:31.585599Z", "start_time": "2018-06-08T18:17:31.309824Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "cons_map_zip=\"http://osni-spatial-ni.opendata.arcgis.com/datasets/563dc2ec3d9943428e3fe68966d40deb_3.zip\"\n", "cons_map_shp = \"OSNI_Open_Data_Largescale_Boundaries__Parliamentary_Constituencies_2008.shp\"\n", "if not Path('data/'+cons_map_shp).exists():\n", " urllib.request.urlretrieve(cons_map_zip, 'data/_tmp.zip')\n", " with zipfile.ZipFile('data/_tmp.zip') as z:\n", " z.extractall('data/')\n", " Path('data/_tmp.zip').unlink()\n", " \n", "cons_map=gp.GeoDataFrame.from_file('data/'+cons_map_shp)\n", "cons_map.rename(columns={'PC_NAME':'constituency'}, inplace=True)\n", "cons_map.drop(['OBJECTID','PC_ID'], axis=1, inplace=True)\n", "cons_map['constituency'] = cons_map['constituency'].str.lower().str.strip()\n", "cons_map.set_index('constituency', inplace=True)" ] }, { "cell_type": "code", "execution_count": 132, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:17:35.521595Z", "start_time": "2018-06-08T18:17:35.018766Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "cons_map.plot(ax=ax)\n", "cons_map.apply(lambda x: ax.annotate(s=x.name, \n", " xy=x.geometry.centroid.coords[0], \n", " ha='center'),\n", " axis=1);" ] }, { "cell_type": "code", "execution_count": 133, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:17:41.765271Z", "start_time": "2018-06-08T18:17:38.986292Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "{'belfast east': ['dundonald'],\n", " 'belfast north': ['newtownabbey'],\n", " 'belfast south': ['belfast', 'carryduff'],\n", " 'belfast west': ['dunmurry'],\n", " 'east antrim': ['ballycarry',\n", " 'ballygalley',\n", " 'ballylumford',\n", " 'beltoy',\n", " 'carncastle',\n", " 'carnlough',\n", " 'carrickfergus',\n", " 'cushendall',\n", " 'cushendun',\n", " 'eden',\n", " 'glenariff',\n", " 'glenarm',\n", " 'glenoe',\n", " 'glynn',\n", " 'greenisland',\n", " 'larne',\n", " 'magheramorne',\n", " 'millbrook',\n", " 'monkstown',\n", " 'whiteabbey',\n", " 'whitehead'],\n", " 'east londonderry': ['aghadowey',\n", " 'agivey',\n", " 'articlave',\n", " 'ballykelly',\n", " 'bolea',\n", " 'bovedy',\n", " 'bovevagh',\n", " 'castlerock',\n", " 'claudy',\n", " 'coleraine',\n", " 'downhill',\n", " 'drumsurn',\n", " 'dungiven',\n", " 'feeny',\n", " 'garvagh',\n", " 'gortnahey',\n", " 'greysteel',\n", " 'kilrea',\n", " 'limavady',\n", " 'macosquin',\n", " 'milltown',\n", " 'milltown',\n", " 'moneydig',\n", " 'mullan',\n", " 'portballintrae',\n", " 'portrush',\n", " 'portstewart'],\n", " 'fermanagh and south tyrone': ['augher',\n", " 'aughnacloy',\n", " 'ballinamallard',\n", " 'ballygawley',\n", " 'bellanaleck',\n", " 'belleek',\n", " 'benburb',\n", " 'boho',\n", " 'brookeborough',\n", " 'caledon',\n", " 'castlecaulfield',\n", " 'clogher',\n", " 'clonfeacle',\n", " 'derrygonnelly',\n", " 'donagh',\n", " 'dungannon',\n", " 'ederney',\n", " 'eglish',\n", " 'enniskillen',\n", " 'fivemiletown',\n", " 'garrison',\n", " 'irvinestown',\n", " 'kesh',\n", " 'killadeas',\n", " 'kinawley',\n", " 'lack',\n", " 'lisbellaw',\n", " 'lisnaskea',\n", " 'maguiresbridge',\n", " 'minterburn',\n", " 'moy',\n", " 'moygashel',\n", " 'newtownbutler',\n", " 'rosslea',\n", " 'tedd',\n", " 'tempo'],\n", " 'foyle': ['drumahoe', 'eglinton', 'londonderry', 'new buildings'],\n", " 'lagan valley': ['aghalee',\n", " 'annahilt',\n", " 'baileysmill',\n", " 'ballyskeagh',\n", " 'boardmills',\n", " 'culcavy',\n", " 'dromara',\n", " 'dromore',\n", " 'drumbeg',\n", " 'drumbo',\n", " 'finnis',\n", " 'hillsborough',\n", " 'lambeg',\n", " 'lisburn',\n", " 'maghaberry',\n", " 'mazetown',\n", " 'moira',\n", " 'the temple',\n", " 'waringsford'],\n", " 'mid ulster': ['ballyronan',\n", " 'bellaghy',\n", " 'cappagh',\n", " 'castledawson',\n", " 'coagh',\n", " 'coalisland',\n", " 'cookstown',\n", " 'desertmartin',\n", " 'donaghmore',\n", " 'draperstown',\n", " 'dunnamore',\n", " 'gulladuff',\n", " 'knockcloghrim',\n", " 'maghera',\n", " 'magherafelt',\n", " 'moneymore',\n", " 'moneyneany',\n", " 'newferry',\n", " 'newmills',\n", " 'orritor',\n", " 'pomeroy',\n", " 'sandholes',\n", " 'stewartstown',\n", " 'swatragh',\n", " 'tamlaght',\n", " 'the diamond',\n", " 'the rock',\n", " 'tobermore',\n", " 'upperlands'],\n", " 'newry and armagh': ['acton',\n", " 'armagh',\n", " 'belcoo',\n", " 'belleek',\n", " 'bessbrook',\n", " 'blackwatertown',\n", " 'camlough',\n", " 'carnagh',\n", " 'charlemont',\n", " 'clare',\n", " 'creggan',\n", " 'crossmaglen',\n", " 'cullaville',\n", " 'cullyhanna',\n", " 'darkley',\n", " 'flurrybridge',\n", " 'forkhill',\n", " 'hamiltonsbawn',\n", " 'jerrettspass',\n", " 'jonesborough',\n", " 'keady',\n", " 'killylea',\n", " 'kingsmills',\n", " 'laurelvale',\n", " 'loughgall',\n", " 'markethill',\n", " 'middletown',\n", " 'milltown',\n", " 'newry',\n", " 'newtownhamilton',\n", " 'poyntz pass',\n", " 'richhill',\n", " 'tandragee',\n", " 'tynan'],\n", " 'north antrim': ['ahoghill',\n", " 'armoy',\n", " 'ballintoy',\n", " 'ballybogy',\n", " 'ballycastle',\n", " 'ballymena',\n", " 'ballymoney',\n", " 'balnamore',\n", " 'bendooragh',\n", " 'broughshane',\n", " 'buckna',\n", " 'bushmills',\n", " 'clogh mills',\n", " 'clogh',\n", " 'corkey',\n", " 'craigs',\n", " 'cullybackey',\n", " 'dervock',\n", " 'dunloy',\n", " 'dunseverick',\n", " 'galgorm',\n", " 'garryduff',\n", " 'gracehill',\n", " '\"kells connor\"',\n", " 'killybegs',\n", " 'kilraghts',\n", " 'loughguile',\n", " 'martinstown',\n", " 'moss-side',\n", " 'portglenone',\n", " 'rasharkin',\n", " 'stranocum',\n", " 'the drones',\n", " 'the dry arch'],\n", " 'north down': ['bangor',\n", " 'conlig',\n", " 'craigavad',\n", " 'crawfordsburn',\n", " 'cultra',\n", " 'donaghadee',\n", " 'groomsport',\n", " \"helen's bay\",\n", " 'holywood',\n", " 'millisle',\n", " 'six road end'],\n", " 'south antrim': ['antrim',\n", " 'ballyclare',\n", " 'carnmoney',\n", " 'clady',\n", " 'crumlin',\n", " 'doagh',\n", " 'dundrod',\n", " 'glenavy',\n", " 'killead',\n", " 'mallusk',\n", " 'moneyglass',\n", " 'mossley',\n", " 'muckamore',\n", " 'randalstown',\n", " 'templepatrick',\n", " 'the diamond',\n", " 'toome'],\n", " 'south down': ['annaclone',\n", " 'annacloy',\n", " 'annadorn',\n", " 'annalong',\n", " 'annsborough',\n", " 'ardglass',\n", " 'attical',\n", " 'ballyhornan',\n", " 'ballymartin',\n", " 'ballyroney',\n", " 'ballyward',\n", " 'bishops court',\n", " 'burren',\n", " 'castlewellan',\n", " 'clough',\n", " 'crossgar',\n", " 'downpatrick',\n", " 'drumaness',\n", " 'greencastle',\n", " 'hilltown',\n", " 'katesbridge',\n", " 'kilcoo',\n", " 'kilkeel',\n", " 'killough',\n", " 'loughinisland',\n", " 'maghera',\n", " 'mayobridge',\n", " 'milltown',\n", " 'newcastle',\n", " 'rathfriland',\n", " 'rostrevor',\n", " 'saul',\n", " 'seaforde',\n", " 'strangford',\n", " 'the spa',\n", " 'warrenpoint'],\n", " 'strangford': ['ballygowan',\n", " 'ballyhalbert',\n", " 'ballynahinch',\n", " 'ballywalter',\n", " 'carrowdore',\n", " 'comber',\n", " 'derryboy',\n", " 'greyabbey',\n", " 'killinchy',\n", " 'killyleagh',\n", " 'kircubbin',\n", " 'kirkistown',\n", " 'moneyreagh',\n", " 'newtownards',\n", " 'portaferry',\n", " 'raffrey',\n", " 'saintfield',\n", " 'shrigley'],\n", " 'upper bann': ['banbridge',\n", " 'craigavon',\n", " 'dollingstown',\n", " 'donaghcloney',\n", " 'dunbarton',\n", " 'gilford',\n", " 'lawrencetown',\n", " 'lurgan',\n", " 'magheralin',\n", " 'portadown',\n", " 'scarva',\n", " 'scotch street',\n", " 'waringstown'],\n", " 'west tyrone': ['artigarvan',\n", " 'ballymagorry',\n", " 'beragh',\n", " 'carrickmore',\n", " 'castlederg',\n", " 'clady',\n", " 'cranagh',\n", " 'dromore',\n", " 'drumquin',\n", " 'dunnamanagh',\n", " 'fintona',\n", " 'garvaghy',\n", " 'gortin',\n", " 'greencastle',\n", " 'killen',\n", " 'magheramason',\n", " 'milltown',\n", " 'mountfield',\n", " 'mountjoy',\n", " 'newtownstewart',\n", " 'omagh',\n", " 'plumbridge',\n", " 'seskinore',\n", " 'sion mills',\n", " 'sixmilecross',\n", " 'strabane',\n", " 'trillick',\n", " 'victoria bridge']}" ] }, "execution_count": 133, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cons_lookup = {\n", " r.name: list(\n", " town_stats.index[town_stats.geometry.intersects(r.geometry)]\n", " )\n", " for i, r in cons_map.iterrows()\n", "}\n", "cons_lookup" ] }, { "cell_type": "code", "execution_count": 134, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:18:12.091325Z", "start_time": "2018-06-08T18:18:12.051564Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
200920102011201220132014201520162017
de ref
1210014belfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast east
1210015belfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast east
1210021belfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast north
1210022belfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast north
1210266belfast eastbelfast eastbelfast eastbelfast eastbelfast eastNaNNaNNaNNaN
1230026belfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northNaN
1230053belfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast west
1230089belfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northNaN
1230104belfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast north
1230130belfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast west
1230146belfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast west
1230155belfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast west
1230173belfast northbelfast northbelfast northbelfast northNaNNaNNaNNaNNaN
1230182belfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast west
1230262belfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast west
1230275belfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast south
1230321NaNNaNNaNNaNNaNNaNNaNNaNbelfast north
1240291belfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast west
1260269belfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast north
1260294belfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast south
1410079belfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast east
1410270belfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast south
1410315NaNNaNNaNNaNNaNbelfast eastbelfast eastbelfast eastbelfast east
1420018belfast eastbelfast eastbelfast eastbelfast eastbelfast eastNaNNaNNaNNaN
1420020belfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast eastbelfast east
1420021belfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast west
1420022belfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast south
1420027belfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast southbelfast south
1420028belfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast northbelfast north
1420029belfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast westbelfast west
..............................
5230152fermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyrone
5230157newry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armagh
5230160newry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghNaNNaNNaN
5230167newry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armagh
5230187newry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armagh
5230192mid ulstermid ulstermid ulstermid ulstermid ulstermid ulstermid ulstermid ulstermid ulster
5230213upper bannupper bannupper bannupper bannupper bannupper bannupper bannupper bannupper bann
5230218newry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armagh
5230256upper bannupper bannupper bannupper bannupper bannupper bannupper bannupper bannNaN
5230278mid ulstermid ulstermid ulstermid ulstermid ulstermid ulstermid ulstermid ulstermid ulster
5230293fermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyrone
5230321NaNNaNNaNNaNNaNNaNNaNNaNupper bann
5250216upper bannupper bannupper bannupper bannupper bannupper bannupper bannupper bannupper bann
5260285upper bannupper bannupper bannupper bannupper bannupper bannupper bannupper bannupper bann
5260286fermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyrone
5410013upper bannupper bannupper bannupper bannupper bannupper bannupper bannupper bannupper bann
5410057upper bannupper bannupper bannupper bannupper bannupper bannupper bannupper bannupper bann
5410067upper bannupper bannupper bannupper bannupper bannupper bannupper bannupper bannupper bann
5420045south downsouth downsouth downsouth downsouth downsouth downsouth downsouth downsouth down
5420056upper bannupper bannupper bannupper bannupper bannupper bannNaNNaNNaN
5420059newry and armaghnewry and armaghsouth downsouth downsouth downsouth downsouth downsouth downsouth down
5420060newry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armagh
5420062newry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armagh
5420073mid ulstermid ulstermid ulstermid ulstermid ulstermid ulstermid ulstermid ulstermid ulster
5420076newry and armaghnewry and armaghsouth downsouth downsouth downsouth downsouth downsouth downsouth down
5420260fermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyrone
5420263newry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armagh
5420268newry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armaghnewry and armagh
5420304fermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyronefermanagh and south tyrone
5420314NaNNaNNaNNaNNaNNaNupper bannupper bannupper bann
\n", "

232 rows × 9 columns

\n", "
" ], "text/plain": [ " 2009 2010 \\\n", "de ref \n", "1210014 belfast east belfast east \n", "1210015 belfast east belfast east \n", "1210021 belfast north belfast north \n", "1210022 belfast north belfast north \n", "1210266 belfast east belfast east \n", "1230026 belfast north belfast north \n", "1230053 belfast west belfast west \n", "1230089 belfast north belfast north \n", "1230104 belfast north belfast north \n", "1230130 belfast west belfast west \n", "1230146 belfast west belfast west \n", "1230155 belfast west belfast west \n", "1230173 belfast north belfast north \n", "1230182 belfast west belfast west \n", "1230262 belfast west belfast west \n", "1230275 belfast south belfast south \n", "1230321 NaN NaN \n", "1240291 belfast west belfast west \n", "1260269 belfast north belfast north \n", "1260294 belfast south belfast south \n", "1410079 belfast east belfast east \n", "1410270 belfast south belfast south \n", "1410315 NaN NaN \n", "1420018 belfast east belfast east \n", "1420020 belfast east belfast east \n", "1420021 belfast west belfast west \n", "1420022 belfast south belfast south \n", "1420027 belfast south belfast south \n", "1420028 belfast north belfast north \n", "1420029 belfast west belfast west \n", "... ... ... \n", "5230152 fermanagh and south tyrone fermanagh and south tyrone \n", "5230157 newry and armagh newry and armagh \n", "5230160 newry and armagh newry and armagh \n", "5230167 newry and armagh newry and armagh \n", "5230187 newry and armagh newry and armagh \n", "5230192 mid ulster mid ulster \n", "5230213 upper bann upper bann \n", "5230218 newry and armagh newry and armagh \n", "5230256 upper bann upper bann \n", "5230278 mid ulster mid ulster \n", "5230293 fermanagh and south tyrone fermanagh and south tyrone \n", "5230321 NaN NaN \n", "5250216 upper bann upper bann \n", "5260285 upper bann upper bann \n", "5260286 fermanagh and south tyrone fermanagh and south tyrone \n", "5410013 upper bann upper bann \n", "5410057 upper bann upper bann \n", "5410067 upper bann upper bann \n", "5420045 south down south down \n", "5420056 upper bann upper bann \n", "5420059 newry and armagh newry and armagh \n", "5420060 newry and armagh newry and armagh \n", "5420062 newry and armagh newry and armagh \n", "5420073 mid ulster mid ulster \n", "5420076 newry and armagh newry and armagh \n", "5420260 fermanagh and south tyrone fermanagh and south tyrone \n", "5420263 newry and armagh newry and armagh \n", "5420268 newry and armagh newry and armagh \n", "5420304 fermanagh and south tyrone fermanagh and south tyrone \n", "5420314 NaN NaN \n", "\n", " 2011 2012 \\\n", "de ref \n", "1210014 belfast east belfast east \n", "1210015 belfast east belfast east \n", "1210021 belfast north belfast north \n", "1210022 belfast north belfast north \n", "1210266 belfast east belfast east \n", "1230026 belfast north belfast north \n", "1230053 belfast west belfast west \n", "1230089 belfast north belfast north \n", "1230104 belfast north belfast north \n", "1230130 belfast west belfast west \n", "1230146 belfast west belfast west \n", "1230155 belfast west belfast west \n", "1230173 belfast north belfast north \n", "1230182 belfast west belfast west \n", "1230262 belfast west belfast west \n", "1230275 belfast south belfast south \n", "1230321 NaN NaN \n", "1240291 belfast west belfast west \n", "1260269 belfast north belfast north \n", "1260294 belfast south belfast south \n", "1410079 belfast east belfast east \n", "1410270 belfast south belfast south \n", "1410315 NaN NaN \n", "1420018 belfast east belfast east \n", "1420020 belfast east belfast east \n", "1420021 belfast west belfast west \n", "1420022 belfast south belfast south \n", "1420027 belfast south belfast south \n", "1420028 belfast north belfast north \n", "1420029 belfast west belfast west \n", "... ... ... \n", "5230152 fermanagh and south tyrone fermanagh and south tyrone \n", "5230157 newry and armagh newry and armagh \n", "5230160 newry and armagh newry and armagh \n", "5230167 newry and armagh newry and armagh \n", "5230187 newry and armagh newry and armagh \n", "5230192 mid ulster mid ulster \n", "5230213 upper bann upper bann \n", "5230218 newry and armagh newry and armagh \n", "5230256 upper bann upper bann \n", "5230278 mid ulster mid ulster \n", "5230293 fermanagh and south tyrone fermanagh and south tyrone \n", "5230321 NaN NaN \n", "5250216 upper bann upper bann \n", "5260285 upper bann upper bann \n", "5260286 fermanagh and south tyrone fermanagh and south tyrone \n", "5410013 upper bann upper bann \n", "5410057 upper bann upper bann \n", "5410067 upper bann upper bann \n", "5420045 south down south down \n", "5420056 upper bann upper bann \n", "5420059 south down south down \n", "5420060 newry and armagh newry and armagh \n", "5420062 newry and armagh newry and armagh \n", "5420073 mid ulster mid ulster \n", "5420076 south down south down \n", "5420260 fermanagh and south tyrone fermanagh and south tyrone \n", "5420263 newry and armagh newry and armagh \n", "5420268 newry and armagh newry and armagh \n", "5420304 fermanagh and south tyrone fermanagh and south tyrone \n", "5420314 NaN NaN \n", "\n", " 2013 2014 \\\n", "de ref \n", "1210014 belfast east belfast east \n", "1210015 belfast east belfast east \n", "1210021 belfast north belfast north \n", "1210022 belfast north belfast north \n", "1210266 belfast east NaN \n", "1230026 belfast north belfast north \n", "1230053 belfast west belfast west \n", "1230089 belfast north belfast north \n", "1230104 belfast north belfast north \n", "1230130 belfast west belfast west \n", "1230146 belfast west belfast west \n", "1230155 belfast west belfast west \n", "1230173 NaN NaN \n", "1230182 belfast west belfast west \n", "1230262 belfast west belfast west \n", "1230275 belfast south belfast south \n", "1230321 NaN NaN \n", "1240291 belfast west belfast west \n", "1260269 belfast north belfast north \n", "1260294 belfast south belfast south \n", "1410079 belfast east belfast east \n", "1410270 belfast south belfast south \n", "1410315 NaN belfast east \n", "1420018 belfast east NaN \n", "1420020 belfast east belfast east \n", "1420021 belfast west belfast west \n", "1420022 belfast south belfast south \n", "1420027 belfast south belfast south \n", "1420028 belfast north belfast north \n", "1420029 belfast west belfast west \n", "... ... ... \n", "5230152 fermanagh and south tyrone fermanagh and south tyrone \n", "5230157 newry and armagh newry and armagh \n", "5230160 newry and armagh newry and armagh \n", "5230167 newry and armagh newry and armagh \n", "5230187 newry and armagh newry and armagh \n", "5230192 mid ulster mid ulster \n", "5230213 upper bann upper bann \n", "5230218 newry and armagh newry and armagh \n", "5230256 upper bann upper bann \n", "5230278 mid ulster mid ulster \n", "5230293 fermanagh and south tyrone fermanagh and south tyrone \n", "5230321 NaN NaN \n", "5250216 upper bann upper bann \n", "5260285 upper bann upper bann \n", "5260286 fermanagh and south tyrone fermanagh and south tyrone \n", "5410013 upper bann upper bann \n", "5410057 upper bann upper bann \n", "5410067 upper bann upper bann \n", "5420045 south down south down \n", "5420056 upper bann upper bann \n", "5420059 south down south down \n", "5420060 newry and armagh newry and armagh \n", "5420062 newry and armagh newry and armagh \n", "5420073 mid ulster mid ulster \n", "5420076 south down south down \n", "5420260 fermanagh and south tyrone fermanagh and south tyrone \n", "5420263 newry and armagh newry and armagh \n", "5420268 newry and armagh newry and armagh \n", "5420304 fermanagh and south tyrone fermanagh and south tyrone \n", "5420314 NaN NaN \n", "\n", " 2015 2016 \\\n", "de ref \n", "1210014 belfast east belfast east \n", "1210015 belfast east belfast east \n", "1210021 belfast north belfast north \n", "1210022 belfast north belfast north \n", "1210266 NaN NaN \n", "1230026 belfast north belfast north \n", "1230053 belfast west belfast west \n", "1230089 belfast north belfast north \n", "1230104 belfast north belfast north \n", "1230130 belfast west belfast west \n", "1230146 belfast west belfast west \n", "1230155 belfast west belfast west \n", "1230173 NaN NaN \n", "1230182 belfast west belfast west \n", "1230262 belfast west belfast west \n", "1230275 belfast south belfast south \n", "1230321 NaN NaN \n", "1240291 belfast west belfast west \n", "1260269 belfast north belfast north \n", "1260294 belfast south belfast south \n", "1410079 belfast east belfast east \n", "1410270 belfast south belfast south \n", "1410315 belfast east belfast east \n", "1420018 NaN NaN \n", "1420020 belfast east belfast east \n", "1420021 belfast west belfast west \n", "1420022 belfast south belfast south \n", "1420027 belfast south belfast south \n", "1420028 belfast north belfast north \n", "1420029 belfast west belfast west \n", "... ... ... \n", "5230152 fermanagh and south tyrone fermanagh and south tyrone \n", "5230157 newry and armagh newry and armagh \n", "5230160 NaN NaN \n", "5230167 newry and armagh newry and armagh \n", "5230187 newry and armagh newry and armagh \n", "5230192 mid ulster mid ulster \n", "5230213 upper bann upper bann \n", "5230218 newry and armagh newry and armagh \n", "5230256 upper bann upper bann \n", "5230278 mid ulster mid ulster \n", "5230293 fermanagh and south tyrone fermanagh and south tyrone \n", "5230321 NaN NaN \n", "5250216 upper bann upper bann \n", "5260285 upper bann upper bann \n", "5260286 fermanagh and south tyrone fermanagh and south tyrone \n", "5410013 upper bann upper bann \n", "5410057 upper bann upper bann \n", "5410067 upper bann upper bann \n", "5420045 south down south down \n", "5420056 NaN NaN \n", "5420059 south down south down \n", "5420060 newry and armagh newry and armagh \n", "5420062 newry and armagh newry and armagh \n", "5420073 mid ulster mid ulster \n", "5420076 south down south down \n", "5420260 fermanagh and south tyrone fermanagh and south tyrone \n", "5420263 newry and armagh newry and armagh \n", "5420268 newry and armagh newry and armagh \n", "5420304 fermanagh and south tyrone fermanagh and south tyrone \n", "5420314 upper bann upper bann \n", "\n", " 2017 \n", "de ref \n", "1210014 belfast east \n", "1210015 belfast east \n", "1210021 belfast north \n", "1210022 belfast north \n", "1210266 NaN \n", "1230026 NaN \n", "1230053 belfast west \n", "1230089 NaN \n", "1230104 belfast north \n", "1230130 belfast west \n", "1230146 belfast west \n", "1230155 belfast west \n", "1230173 NaN \n", "1230182 belfast west \n", "1230262 belfast west \n", "1230275 belfast south \n", "1230321 belfast north \n", "1240291 belfast west \n", "1260269 belfast north \n", "1260294 belfast south \n", "1410079 belfast east \n", "1410270 belfast south \n", "1410315 belfast east \n", "1420018 NaN \n", "1420020 belfast east \n", "1420021 belfast west \n", "1420022 belfast south \n", "1420027 belfast south \n", "1420028 belfast north \n", "1420029 belfast west \n", "... ... \n", "5230152 fermanagh and south tyrone \n", "5230157 newry and armagh \n", "5230160 NaN \n", "5230167 newry and armagh \n", "5230187 newry and armagh \n", "5230192 mid ulster \n", "5230213 upper bann \n", "5230218 newry and armagh \n", "5230256 NaN \n", "5230278 mid ulster \n", "5230293 fermanagh and south tyrone \n", "5230321 upper bann \n", "5250216 upper bann \n", "5260285 upper bann \n", "5260286 fermanagh and south tyrone \n", "5410013 upper bann \n", "5410057 upper bann \n", "5410067 upper bann \n", "5420045 south down \n", "5420056 NaN \n", "5420059 south down \n", "5420060 newry and armagh \n", "5420062 newry and armagh \n", "5420073 mid ulster \n", "5420076 south down \n", "5420260 fermanagh and south tyrone \n", "5420263 newry and armagh \n", "5420268 newry and armagh \n", "5420304 fermanagh and south tyrone \n", "5420314 upper bann \n", "\n", "[232 rows x 9 columns]" ] }, "execution_count": 134, "metadata": {}, "output_type": "execute_result" } ], "source": [ "reference.minor_xs('parliamentary constituency')" ] }, { "cell_type": "code", "execution_count": 135, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:18:40.574465Z", "start_time": "2018-06-08T18:18:40.484872Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "cons = set(reference.minor_xs('parliamentary constituency').values.ravel('k'))\n", "\n", "en_df= pd.DataFrame.from_dict({\n", " con:\n", " enrolment[:,reference.major_axis[(reference.minor_xs('parliamentary constituency')==con).any(axis=1)],:].sum().sum()\n", " for con in cons\n", "}).T.drop(np.nan)\n", "av_df= pd.DataFrame.from_dict({\n", " con:\n", " available[:,reference.major_axis[(reference.minor_xs('parliamentary constituency')==con).any(axis=1)],'available places'].sum()\n", " for con in cons\n", "}).T.drop(np.nan)\n", "\n", "cons_stats = gp.GeoDataFrame(geometry=cons_map.geometry)\n", "for c in av_df:\n", " cons_stats[f\"av_{c}\"] = av_df[c]\n", " cons_stats[f\"av_{c}_rat\"] = (av_df[c]/en_df[c])\n", "for c in en_df:\n", " cons_stats[f\"en_{c}\"] = en_df[c]\n", " cons_stats[f\"en_{c}_pk\"] = en_df[c]/cons_map[\"Area_sqkm\"]" ] }, { "cell_type": "code", "execution_count": 136, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:18:43.956128Z", "start_time": "2018-06-08T18:18:43.431747Z" }, "scrolled": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "ax.set_title(\"Per Constituency Total Enrolments [2017]\")\n", "cons_stats.plot(column='en_2017',ax=ax, legend=True)\n", "cons_stats.apply(lambda x: ax.annotate(s=x.name, xy=x.geometry.centroid.coords[0], ha='center', color='white'),axis=1);" ] }, { "cell_type": "code", "execution_count": 137, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:18:47.680234Z", "start_time": "2018-06-08T18:18:47.049696Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "ax.set_title(\"Per Constituency Total Enrolments per $km^2$[2017]\")\n", "cons_stats.plot(column='en_2017_pk',ax=ax, legend=True)\n", "cons_stats.apply(lambda x: ax.annotate(s=x.name, xy=x.geometry.centroid.coords[0], ha='center', color='white'),axis=1);" ] }, { "cell_type": "code", "execution_count": 138, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:18:52.161900Z", "start_time": "2018-06-08T18:18:52.154887Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "constituency\n", "belfast south 204.103113\n", "belfast north 188.638143\n", "belfast west 168.999917\n", "belfast east 142.627717\n", "foyle 50.799751\n", "north down 49.887102\n", "upper bann 20.446435\n", "lagan valley 11.912162\n", "newry and armagh 11.243427\n", "strangford 10.671039\n", "east antrim 10.611417\n", "south down 8.404405\n", "south antrim 7.097824\n", "north antrim 6.583296\n", "mid ulster 6.462817\n", "east londonderry 5.307115\n", "fermanagh and south tyrone 3.857524\n", "west tyrone 3.768899\n", "Name: en_2017_pk, dtype: float64" ] }, "execution_count": 138, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cons_stats[\"en_2017_pk\"].sort_values(ascending=False)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## But what does it all mean\n", "\n", "Gather data from other sources to put things in context; \n", "\n", "How many people are in each region?\n", "\n", "![](img/pop_cons.png)" ] }, { "cell_type": "code", "execution_count": 139, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:18:56.836479Z", "start_time": "2018-06-08T18:18:56.710664Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "# This is very very slow, not my fault!\n", "if not Path('data/cons_pop.csv').exists():\n", " population_resource = \"67c25586-b9aa-4717-9a4b-42de21a403f2\"\n", " cons_pop = pd.DataFrame.from_records(dataset_generator(population_resource))\n", " cons_pop.set_index('_id', inplace=True)\n", " cons_pop.to_csv('data/cons_pop.csv', index=False)\n", "\n", "cons_pop = pd.read_csv('data/cons_pop.csv')\n", "cons_pop['Mid_Year_Ending'] = cons_pop.Mid_Year_Ending.astype(int)\n", "cons_pop['Population_Estimate'] = cons_pop.Population_Estimate.astype(float)\n", "cons_pop['Age'] = cons_pop.Age.astype(int)\n", "cons_pop.rename(columns={'Geo_Name':'constituency'}, inplace=True)\n", "cons_pop['constituency']= cons_pop.constituency.str.strip().str.lower()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### What's the distribution of ages in NI?" ] }, { "cell_type": "code", "execution_count": 140, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:18:59.180702Z", "start_time": "2018-06-08T18:18:58.978160Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 140, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "ax.set_title('Population Distribution (2016)')\n", "cons_pop[(cons_pop.Gender == 'All People') & (cons_pop.Mid_Year_Ending == 2016)]\\\n", ".groupby('Age')['Population_Estimate'].sum().plot.line(ax=ax)\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Constituency breakdown" ] }, { "cell_type": "code", "execution_count": 141, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:19:05.832898Z", "start_time": "2018-06-08T18:19:02.036036Z" }, "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 141, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "ax.set_title('Constituency Population Distribution (2016)')\n", "cons_pop[(cons_pop.Gender == 'All People') & (cons_pop.Mid_Year_Ending == 2016)]\\\n", ".groupby(['Age','constituency'])['Population_Estimate'].sum().unstack().plot.bar(stacked=True, ax=ax)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### That's not a great way of summarising age distributions...." ] }, { "cell_type": "code", "execution_count": 142, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:19:08.531203Z", "start_time": "2018-06-08T18:19:08.290123Z" }, "code_folding": [ 0 ] }, "outputs": [ { "data": { "text/plain": [ "[22, 45, 67]" ] }, "execution_count": 142, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def idxquantile(s, q=0.5, *args, **kwargs):\n", " qv = s.quantile(q, *args, **kwargs)\n", " return (s.sort_values()[::-1] <= qv).idxmax()\n", "\n", "f,ax = plt.subplots(figsize=graph_figsize)\n", "ax.set_title('Cumulative Population Distribution (2016)')\n", "pop_cumsum = cons_pop[(cons_pop.Gender == 'All People') & (cons_pop.Mid_Year_Ending == 2016)]\\\n", ".groupby('Age')['Population_Estimate'].sum().cumsum()\n", "pop_cumsum.plot(ax=ax)\n", "age_quartiles = [idxquantile(pop_cumsum, q) for q in [0.25,0.5,0.75]]\n", "ax.vlines(age_quartiles, ymin=pop_cumsum.min(), ymax = pop_cumsum[age_quartiles])\n", "age_quartiles" ] }, { "cell_type": "code", "execution_count": 143, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:19:17.122551Z", "start_time": "2018-06-08T18:19:16.491440Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 143, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "ax.set_title('Cumulative Population Distribution (2009-2016)')\n", "yrs=sorted(cons_pop.Mid_Year_Ending.unique())\n", "colors = plt.cm.jet(np.linspace(0,1,len(yrs)))\n", "for yr,c in zip(yrs,colors):\n", " pop_cumsum = cons_pop[(cons_pop.Gender == 'All People') \\\n", " & (cons_pop.Mid_Year_Ending == yr)]\\\n", " .groupby('Age')['Population_Estimate'].sum().cumsum()\n", " pop_cumsum.plot(ax=ax, label=yr, c=c)\n", " age_quartiles = [idxquantile(pop_cumsum, q) for q in [0.25,0.5,0.75]]\n", " ax.vlines(age_quartiles, ymin=pop_cumsum.min(), ymax = pop_cumsum[age_quartiles],color=c,alpha=0.2)\n", "ax.legend()" ] }, { "cell_type": "code", "execution_count": 144, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:19:36.194127Z", "start_time": "2018-06-08T18:19:36.167006Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def constituency_age_profile(constituency=None):\n", " # I have a hunch we might was to do this\n", " # with lists....\n", " if constituency is None:\n", " constituency = cons_pop.constituency.unique()\n", " label = f\"Population profile for NI\"\n", " elif not isinstance(constituency, list):\n", " label = f\"Population profile for {constituency}\"\n", " constituency = [constituency]\n", " else: \n", " label = f\"Population profile for {constituency}\"\n", " f,ax = plt.subplots(figsize=graph_figsize)\n", " yrs=sorted(cons_pop.Mid_Year_Ending.unique())\n", " colors = plt.cm.jet(np.linspace(0,1,len(yrs)))\n", " for yr,c in zip(yrs,colors):\n", " pop_cumsum = cons_pop[(cons_pop.Gender == 'All People') \\\n", " & (cons_pop.constituency.isin(constituency))\\\n", " & (cons_pop.Mid_Year_Ending == yr)]\\\n", " .groupby('Age')['Population_Estimate'].sum().cumsum()\n", " pop_cumsum.plot(ax=ax, label=yr, c=c)\n", " age_quartiles = [idxquantile(pop_cumsum, q) for q in [0.25,0.5,0.75]]\n", " ax.vlines(age_quartiles, ymin=pop_cumsum.min(), ymax = pop_cumsum[age_quartiles],color=c,alpha=0.2)\n", " for i,age in enumerate(age_quartiles):\n", " ax.annotate(f\"<={age}\", xy=(age, i))\n", " ax.legend()\n", " ax.set_title(label)\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### South Belfast: Kinky Bastard" ] }, { "cell_type": "code", "execution_count": 146, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:19:57.338477Z", "start_time": "2018-06-08T18:19:56.685937Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "constituency_age_profile('belfast south')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Newry and Armagh: Middle Class Mourneing" ] }, { "cell_type": "code", "execution_count": 147, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:20:15.933769Z", "start_time": "2018-06-08T18:20:15.273238Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "constituency_age_profile('newry and armagh')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Foyled Again: Cross-generational Brain Drain" ] }, { "cell_type": "code", "execution_count": 148, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:20:24.648369Z", "start_time": "2018-06-08T18:20:24.004921Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "constituency_age_profile('foyle')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### North Antrim: 40 is the new 30" ] }, { "cell_type": "code", "execution_count": 149, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:20:51.835695Z", "start_time": "2018-06-08T18:20:51.180322Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "constituency_age_profile('north antrim')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Growing Up in the (Lagan) Valley" ] }, { "cell_type": "code", "execution_count": 151, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:22:03.859208Z", "start_time": "2018-06-08T18:22:03.190367Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "constituency_age_profile('lagan valley')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Fast times at Belfast Unis/Colleges" ] }, { "cell_type": "code", "execution_count": 239, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:25:00.240392Z", "start_time": "2018-06-09T09:25:00.188204Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "line": { "color": "rgba(255, 153, 51, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "belfast east", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1190, 1206, 1221, 1182, 1227, 1238, 1167, 1221, 1173, 1091, 1047, 974, 979, 986, 958, 1029, 1033, 1076, 1098, 1022, 964, 912, 1068, 1106, 1243, 1288, 1266, 1276, 1286, 1490, 1453, 1490, 1518, 1415, 1505, 1469, 1425, 1340, 1279, 1230, 1300, 1245, 1296, 1247, 1260, 1278, 1329, 1294, 1326, 1406, 1376, 1405, 1407, 1288, 1308, 1316, 1254, 1189, 1163, 1106, 1058, 971, 925, 949, 886, 845, 799, 769, 847, 854, 770, 777, 834, 789, 727, 651, 625, 641, 621, 604, 527, 496, 475, 490, 468, 426, 412, 327, 290, 239, 879 ] }, { "line": { "color": "rgba(55, 128, 191, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "belfast north", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1421, 1463, 1389, 1464, 1553, 1496, 1475, 1492, 1435, 1356, 1317, 1197, 1254, 1214, 1174, 1199, 1222, 1260, 1277, 1301, 1238, 1218, 1350, 1391, 1467, 1515, 1424, 1389, 1473, 1518, 1583, 1562, 1447, 1398, 1428, 1463, 1466, 1331, 1290, 1207, 1252, 1261, 1242, 1246, 1278, 1369, 1296, 1351, 1366, 1436, 1413, 1456, 1508, 1435, 1405, 1398, 1318, 1324, 1285, 1204, 1166, 1114, 1035, 982, 925, 915, 890, 934, 900, 881, 847, 842, 832, 824, 763, 623, 624, 673, 638, 640, 592, 519, 499, 473, 427, 393, 346, 329, 247, 204, 797 ] }, { "line": { "color": "rgba(50, 171, 96, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "belfast south", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1262, 1229, 1315, 1305, 1332, 1279, 1264, 1196, 1249, 1101, 1046, 1026, 1047, 1029, 978, 1012, 1071, 1131, 1270, 3125, 3602, 3268, 2619, 2113, 2312, 2365, 2182, 2000, 1999, 1780, 1958, 1884, 1772, 1808, 1732, 1679, 1629, 1618, 1421, 1395, 1373, 1390, 1318, 1406, 1385, 1290, 1286, 1306, 1366, 1410, 1424, 1421, 1374, 1411, 1395, 1416, 1310, 1260, 1282, 1189, 1077, 988, 1006, 960, 917, 907, 838, 816, 847, 830, 789, 762, 771, 735, 666, 583, 570, 587, 562, 575, 527, 521, 456, 476, 424, 400, 380, 327, 273, 236, 845 ] }, { "line": { "color": "rgba(128, 0, 128, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "belfast west", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1461, 1438, 1473, 1471, 1555, 1436, 1389, 1426, 1398, 1340, 1202, 1216, 1268, 1177, 1215, 1237, 1340, 1466, 1469, 1461, 1366, 1319, 1412, 1427, 1533, 1478, 1297, 1293, 1358, 1477, 1399, 1345, 1298, 1273, 1238, 1216, 1172, 1155, 1044, 1077, 970, 998, 1081, 1056, 1040, 1190, 1194, 1166, 1214, 1284, 1326, 1304, 1282, 1298, 1317, 1266, 1216, 1129, 1120, 1074, 1031, 964, 929, 834, 777, 781, 791, 762, 737, 731, 623, 639, 623, 625, 592, 508, 512, 508, 505, 465, 416, 382, 359, 314, 270, 300, 255, 191, 170, 152, 559 ] }, { "line": { "color": "rgba(219, 64, 82, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "east antrim", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 917, 939, 979, 1017, 1075, 1008, 1053, 1079, 1118, 1144, 1115, 1098, 1053, 1078, 1022, 1054, 1099, 1179, 1127, 1354, 1189, 1125, 1167, 1125, 1068, 1022, 1068, 1033, 1043, 1048, 1036, 1004, 964, 932, 967, 1033, 1068, 1060, 973, 1013, 984, 1116, 1164, 1244, 1252, 1302, 1342, 1394, 1370, 1364, 1446, 1397, 1466, 1483, 1415, 1290, 1282, 1310, 1279, 1175, 1131, 1036, 1035, 1023, 964, 960, 982, 921, 1027, 1030, 894, 856, 889, 880, 762, 654, 650, 616, 572, 548, 485, 485, 427, 383, 342, 352, 270, 245, 230, 171, 675 ] }, { "line": { "color": "rgba(0, 128, 128, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "east londonderry", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1175, 1278, 1213, 1218, 1320, 1320, 1229, 1316, 1389, 1296, 1213, 1217, 1258, 1176, 1277, 1259, 1285, 1406, 1390, 1442, 1531, 1448, 1391, 1320, 1140, 1146, 1140, 1118, 1175, 1188, 1222, 1181, 1147, 1157, 1180, 1222, 1217, 1166, 1183, 1199, 1181, 1196, 1307, 1458, 1422, 1472, 1455, 1477, 1562, 1528, 1567, 1587, 1512, 1402, 1366, 1373, 1313, 1307, 1250, 1189, 1153, 1171, 1120, 1112, 1081, 1059, 1071, 1104, 1035, 1044, 974, 954, 933, 885, 789, 768, 693, 663, 622, 588, 534, 458, 432, 442, 390, 354, 309, 269, 206, 189, 728 ] }, { "line": { "color": "rgba(255, 255, 51, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "fermanagh and south tyrone", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1602, 1458, 1532, 1595, 1541, 1493, 1596, 1551, 1521, 1455, 1440, 1385, 1354, 1367, 1404, 1362, 1408, 1449, 1415, 1155, 1071, 1108, 1205, 1253, 1327, 1346, 1405, 1497, 1432, 1561, 1446, 1431, 1506, 1459, 1464, 1497, 1460, 1432, 1312, 1356, 1377, 1384, 1420, 1506, 1503, 1469, 1471, 1441, 1417, 1438, 1428, 1485, 1435, 1480, 1435, 1364, 1343, 1288, 1281, 1251, 1175, 1161, 1138, 1131, 1086, 1053, 1037, 1094, 1032, 1020, 905, 885, 884, 819, 746, 652, 610, 624, 577, 590, 505, 462, 451, 388, 358, 331, 313, 270, 222, 196, 682 ] }, { "line": { "color": "rgba(128, 128, 0, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "foyle", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1428, 1475, 1507, 1458, 1590, 1533, 1465, 1498, 1491, 1350, 1326, 1266, 1246, 1305, 1326, 1349, 1372, 1480, 1512, 1484, 1460, 1351, 1294, 1429, 1370, 1340, 1437, 1427, 1436, 1433, 1427, 1487, 1414, 1357, 1319, 1295, 1326, 1258, 1211, 1258, 1263, 1285, 1290, 1323, 1413, 1453, 1474, 1506, 1497, 1513, 1543, 1532, 1462, 1449, 1445, 1395, 1301, 1237, 1187, 1143, 1091, 1079, 1086, 981, 971, 973, 994, 917, 920, 921, 805, 794, 773, 706, 605, 565, 509, 535, 496, 494, 421, 391, 327, 326, 257, 236, 182, 177, 154, 134, 445 ] }, { "line": { "color": "rgba(251, 128, 114, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "lagan valley", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1327, 1394, 1370, 1409, 1421, 1474, 1446, 1484, 1458, 1422, 1340, 1305, 1276, 1215, 1195, 1193, 1259, 1276, 1298, 1123, 1067, 1127, 1214, 1236, 1209, 1196, 1306, 1317, 1303, 1353, 1412, 1421, 1418, 1367, 1449, 1468, 1462, 1405, 1352, 1370, 1325, 1350, 1419, 1483, 1471, 1544, 1557, 1563, 1617, 1647, 1562, 1606, 1567, 1515, 1484, 1522, 1379, 1320, 1347, 1288, 1206, 1103, 1097, 1095, 1054, 1028, 1093, 1062, 1081, 1093, 1005, 949, 1017, 1006, 887, 782, 748, 725, 661, 632, 622, 558, 484, 479, 403, 357, 282, 289, 224, 211, 775 ] }, { "line": { "color": "rgba(128, 177, 211, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "mid ulster", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1484, 1525, 1515, 1566, 1511, 1631, 1606, 1592, 1539, 1521, 1449, 1458, 1363, 1326, 1335, 1331, 1392, 1449, 1440, 1143, 1156, 1250, 1301, 1370, 1465, 1413, 1462, 1431, 1453, 1426, 1430, 1446, 1439, 1415, 1427, 1501, 1457, 1393, 1384, 1335, 1342, 1381, 1418, 1450, 1457, 1452, 1429, 1393, 1383, 1384, 1414, 1337, 1337, 1302, 1248, 1234, 1186, 1178, 1146, 1083, 1044, 979, 954, 993, 944, 955, 909, 830, 863, 901, 804, 834, 752, 696, 620, 592, 585, 542, 480, 433, 433, 391, 377, 356, 313, 275, 256, 220, 179, 183, 632 ] }, { "line": { "color": "rgba(128, 177, 211, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "newry and armagh", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1883, 1815, 1822, 1846, 1922, 1875, 1840, 1769, 1855, 1693, 1538, 1555, 1560, 1525, 1552, 1478, 1565, 1636, 1649, 1284, 1214, 1368, 1419, 1514, 1665, 1607, 1613, 1642, 1737, 1592, 1617, 1654, 1577, 1574, 1538, 1559, 1585, 1516, 1490, 1455, 1473, 1502, 1525, 1572, 1610, 1583, 1583, 1602, 1647, 1616, 1531, 1654, 1572, 1569, 1509, 1496, 1423, 1390, 1393, 1327, 1223, 1246, 1168, 1105, 1071, 1033, 1116, 1078, 1031, 1011, 939, 953, 911, 863, 765, 691, 661, 628, 617, 588, 559, 504, 440, 400, 344, 310, 290, 249, 211, 164, 677 ] }, { "line": { "color": "rgba(255, 153, 51, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "north antrim", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1352, 1420, 1368, 1439, 1373, 1480, 1425, 1404, 1535, 1433, 1409, 1389, 1332, 1378, 1353, 1351, 1387, 1392, 1429, 1220, 1131, 1200, 1307, 1351, 1368, 1363, 1433, 1400, 1457, 1466, 1395, 1398, 1371, 1411, 1365, 1419, 1501, 1391, 1280, 1316, 1296, 1399, 1495, 1567, 1614, 1621, 1661, 1723, 1729, 1647, 1601, 1643, 1590, 1529, 1456, 1465, 1428, 1366, 1321, 1361, 1326, 1242, 1214, 1245, 1179, 1166, 1176, 1157, 1043, 1099, 1069, 1058, 1060, 1030, 954, 807, 779, 812, 691, 642, 629, 585, 529, 470, 456, 406, 359, 328, 276, 243, 809 ] }, { "line": { "color": "rgba(55, 128, 191, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "north down", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1008, 960, 1071, 1056, 1100, 1165, 1125, 1169, 1161, 1138, 1060, 1023, 1043, 993, 964, 954, 1002, 1059, 1063, 891, 816, 804, 880, 907, 948, 1008, 974, 977, 1032, 1009, 1090, 1040, 1102, 1099, 1069, 1139, 1198, 1115, 1071, 1020, 1079, 1135, 1153, 1232, 1250, 1291, 1286, 1335, 1341, 1297, 1255, 1276, 1348, 1349, 1286, 1274, 1233, 1218, 1218, 1202, 1140, 1055, 1120, 1117, 1097, 1151, 1140, 1145, 1239, 1205, 1129, 1089, 1090, 1024, 847, 703, 658, 641, 643, 593, 538, 519, 474, 462, 460, 371, 306, 344, 261, 250, 904 ] }, { "line": { "color": "rgba(50, 171, 96, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "south antrim", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1385, 1368, 1334, 1422, 1483, 1444, 1470, 1561, 1581, 1414, 1355, 1353, 1332, 1228, 1323, 1298, 1327, 1355, 1314, 1187, 1093, 1128, 1170, 1186, 1235, 1285, 1234, 1272, 1254, 1256, 1292, 1289, 1321, 1341, 1394, 1474, 1432, 1388, 1345, 1343, 1408, 1372, 1356, 1445, 1505, 1465, 1522, 1524, 1547, 1473, 1465, 1579, 1530, 1417, 1383, 1364, 1268, 1194, 1215, 1125, 1083, 1046, 1052, 1030, 1017, 1063, 1039, 1029, 974, 964, 903, 888, 851, 872, 712, 638, 614, 621, 546, 512, 462, 440, 374, 343, 312, 266, 239, 201, 176, 170, 576 ] }, { "line": { "color": "rgba(128, 0, 128, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "south down", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1564, 1536, 1541, 1615, 1666, 1612, 1672, 1710, 1687, 1685, 1523, 1495, 1460, 1470, 1435, 1486, 1515, 1539, 1590, 1257, 1195, 1224, 1319, 1344, 1343, 1409, 1441, 1430, 1457, 1452, 1454, 1428, 1412, 1413, 1433, 1488, 1483, 1370, 1364, 1376, 1356, 1361, 1481, 1488, 1554, 1627, 1553, 1554, 1664, 1563, 1601, 1633, 1590, 1514, 1484, 1463, 1403, 1374, 1345, 1289, 1293, 1226, 1233, 1125, 1133, 1139, 1073, 1115, 1072, 1020, 947, 912, 890, 828, 739, 672, 655, 619, 595, 580, 505, 487, 446, 438, 392, 352, 315, 253, 213, 210, 721 ] }, { "line": { "color": "rgba(219, 64, 82, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "strangford", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1024, 1037, 993, 1029, 1085, 1077, 1065, 1106, 1150, 1144, 1105, 1121, 1099, 1041, 1030, 1072, 1120, 1205, 1198, 1018, 945, 896, 1004, 1060, 1044, 1060, 1039, 1109, 1117, 1017, 1009, 998, 956, 1030, 1043, 1034, 1026, 1102, 1038, 1017, 1051, 1120, 1116, 1175, 1195, 1278, 1255, 1337, 1397, 1404, 1408, 1450, 1400, 1386, 1374, 1357, 1371, 1251, 1266, 1210, 1156, 1114, 1062, 1091, 1066, 1048, 1097, 1132, 1161, 1096, 1038, 1052, 920, 917, 791, 682, 631, 649, 588, 559, 492, 480, 399, 391, 347, 322, 276, 254, 242, 198, 720 ] }, { "line": { "color": "rgba(0, 128, 128, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "upper bann", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1784, 1731, 1817, 1874, 1902, 1898, 1827, 1888, 1826, 1793, 1739, 1591, 1506, 1436, 1474, 1477, 1541, 1593, 1604, 1368, 1372, 1433, 1540, 1554, 1646, 1702, 1754, 1819, 1800, 1805, 1798, 1799, 1810, 1811, 1790, 1846, 1843, 1755, 1627, 1602, 1640, 1584, 1640, 1686, 1725, 1736, 1736, 1750, 1769, 1757, 1771, 1816, 1741, 1677, 1629, 1537, 1541, 1511, 1435, 1365, 1325, 1231, 1188, 1185, 1107, 1118, 1146, 1099, 1103, 1085, 1022, 992, 976, 943, 819, 744, 728, 747, 673, 656, 582, 545, 486, 444, 362, 353, 331, 285, 231, 194, 731 ] }, { "line": { "color": "rgba(255, 255, 51, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "west tyrone", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1219, 1226, 1196, 1189, 1318, 1322, 1348, 1347, 1264, 1267, 1246, 1191, 1189, 1202, 1201, 1255, 1325, 1352, 1383, 1050, 977, 1044, 1125, 1129, 1151, 1171, 1145, 1227, 1168, 1204, 1190, 1165, 1203, 1172, 1148, 1198, 1217, 1192, 1220, 1154, 1117, 1215, 1239, 1276, 1320, 1341, 1311, 1321, 1339, 1291, 1352, 1360, 1341, 1301, 1212, 1206, 1122, 1141, 1122, 1110, 1066, 1013, 985, 963, 894, 928, 928, 880, 826, 885, 809, 777, 770, 663, 616, 605, 580, 542, 512, 469, 441, 377, 355, 343, 340, 277, 238, 224, 181, 178, 576 ] } ], "layout": { "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "titlefont": { "color": "#4D5663" }, "xaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" }, "yaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df = cons_pop[(cons_pop.Gender == 'All People') \\\n", " & (cons_pop.Mid_Year_Ending == 2016)]\\\n", ".groupby(['Age','constituency'])['Population_Estimate'].sum().unstack()\n", "df.iplot()" ] }, { "cell_type": "code", "execution_count": 154, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:23:04.509429Z", "start_time": "2018-06-08T18:23:03.962238Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 154, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "sns.heatmap(df.T, ax=ax)" ] }, { "cell_type": "code", "execution_count": 240, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T09:25:09.206455Z", "start_time": "2018-06-09T09:25:09.143131Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "line": { "color": "rgba(255, 153, 51, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "belfast east", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.743549648162627, 0.7560594214229867, 0.7677873338545739, 0.7372947615324472, 0.7724784988272088, 0.781078967943706, 0.72556684910086, 0.7677873338545739, 0.7302580140734949, 0.6661454261141517, 0.6317435496481626, 0.5746677091477717, 0.5785770132916341, 0.5840500390930414, 0.562157935887412, 0.617670054730258, 0.6207974980453479, 0.6544175136825645, 0.671618451915559, 0.6121970289288506, 0.5668491008600469, 0.5261923377638781, 0.6481626270523847, 0.6778733385457388, 0.7849882720875684, 0.8201720093823299, 0.8029710711493354, 0.8107896794370602, 0.818608287724785, 0.9781078967943706, 0.9491790461297889, 0.9781078967943706, 1, 0.9194683346364347, 0.9898358092259578, 0.9616888193901486, 0.9272869429241595, 0.8608287724784989, 0.8131352619233776, 0.7748240813135262, 0.8295543393275997, 0.7865519937451134, 0.8264268960125097, 0.7881157154026583, 0.7982799061767005, 0.8123534010946052, 0.8522283033620016, 0.8248631743549648, 0.8498827208756842, 0.9124315871774824, 0.8889757623143081, 0.9116497263487099, 0.9132134480062549, 0.8201720093823299, 0.8358092259577795, 0.8420641125879593, 0.7935887412040656, 0.7427677873338546, 0.7224394057857702, 0.6778733385457388, 0.6403440187646599, 0.5723221266614542, 0.5363565285379203, 0.5551211884284597, 0.5058639562157936, 0.473807662236122, 0.43784206411258797, 0.4143862392494136, 0.47537138389366695, 0.4808444096950743, 0.4151681000781861, 0.42064112587959346, 0.4652071931196247, 0.4300234558248632, 0.3815480844409695, 0.32212666145426117, 0.3017982799061767, 0.31430805316653637, 0.2986708365910868, 0.28537920250195464, 0.2251759186864738, 0.20093823299452698, 0.18451915559030493, 0.1962470680218921, 0.17904612978889758, 0.1462079749804535, 0.1352619233776388, 0.0688037529319781, 0.0398749022673964, 0, 0.5003909304143862 ] }, { "line": { "color": "rgba(55, 128, 191, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "belfast north", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.8825235678027556, 0.9129804205946338, 0.8593183466279913, 0.9137055837563451, 0.9782451051486585, 0.9369108049311095, 0.9216823785351704, 0.934010152284264, 0.892675852066715, 0.8353879622915156, 0.8071065989847716, 0.7200870195794054, 0.7614213197969543, 0.7324147933284989, 0.7034082668600435, 0.7215373459028281, 0.73821609862219, 0.7657722987672226, 0.7781000725163162, 0.7955039883973894, 0.7498187092095722, 0.7353154459753445, 0.8310369833212473, 0.860768672951414, 0.9158810732414794, 0.9506889050036258, 0.8846990572878898, 0.8593183466279913, 0.9202320522117476, 0.9528643944887599, 1, 0.9847715736040609, 0.9013778100072516, 0.8658448150833937, 0.8875997099347354, 0.9129804205946338, 0.9151559100797679, 0.817258883248731, 0.7875271936185642, 0.7273386511965192, 0.7599709934735316, 0.766497461928934, 0.7527193618564177, 0.7556200145032632, 0.7788252356780275, 0.8448150833937635, 0.7918781725888325, 0.8317621464829587, 0.8426395939086294, 0.8934010152284264, 0.8767222625090645, 0.9079042784626541, 0.9456127628716461, 0.892675852066715, 0.8709209572153734, 0.8658448150833937, 0.807831762146483, 0.8121827411167513, 0.7839013778100072, 0.7251631617113851, 0.6976069615663524, 0.6598984771573604, 0.602610587382161, 0.5641769398114576, 0.5228426395939086, 0.5155910079767948, 0.49746192893401014, 0.5293691080493111, 0.504713560551124, 0.4909354604786077, 0.4662799129804206, 0.4626540971718637, 0.45540246555474984, 0.44960116026105873, 0.40536620739666424, 0.30384336475707036, 0.30456852791878175, 0.3401015228426396, 0.3147208121827411, 0.3161711385061639, 0.2813633067440174, 0.22842639593908629, 0.2139231327048586, 0.19506889050036258, 0.16171138506163887, 0.13705583756345177, 0.10297316896301668, 0.09064539521392313, 0.03118201595358956, 0, 0.43002175489485134 ] }, { "line": { "color": "rgba(50, 171, 96, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "belfast south", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.3048128342245989, 0.29500891265597146, 0.3205585264408794, 0.3175876411170529, 0.3256090314913844, 0.30986333927510396, 0.3054070112893642, 0.28520499108734404, 0.30095068330362446, 0.2569815805109923, 0.24064171122994651, 0.23469994058229351, 0.24093879976232918, 0.2355912061794415, 0.22043969102792632, 0.23054070112893643, 0.24806892453951276, 0.2658942364824718, 0.30718954248366015, 0.8582887700534759, 1, 0.9007724301841948, 0.707961972667855, 0.557635175282234, 0.6167557932263814, 0.6325014854426619, 0.5781342840166369, 0.5240641711229946, 0.523767082590612, 0.45870469399881164, 0.5115864527629234, 0.48960190136660725, 0.4563279857397504, 0.46702317290552586, 0.4444444444444444, 0.428698752228164, 0.4138443256090315, 0.41057635175282237, 0.3520499108734403, 0.3443256090314914, 0.33778966131907306, 0.34284016636957815, 0.3214497920380273, 0.34759358288770054, 0.3413547237076649, 0.31313131313131315, 0.31194295900178254, 0.31788472964943554, 0.33571004159239454, 0.34878193701723115, 0.35294117647058826, 0.3520499108734403, 0.33808674985145576, 0.3490790255496138, 0.3443256090314914, 0.35056446821152704, 0.31907308377896615, 0.30421865715983365, 0.3107546048722519, 0.28312537136066546, 0.24985145573380868, 0.22341057635175282, 0.22875816993464052, 0.21509209744503863, 0.20231729055258468, 0.19934640522875818, 0.17884729649435532, 0.17231134878193702, 0.18152109328579916, 0.17647058823529413, 0.16428995840760546, 0.1562685680332739, 0.15894236482471777, 0.14824717765894235, 0.12774806892453952, 0.10308972073677956, 0.0992275698158051, 0.10427807486631016, 0.09685086155674391, 0.10071301247771836, 0.08645276292335116, 0.08467023172905526, 0.06535947712418301, 0.07130124777183601, 0.055852644087938205, 0.0487225193107546, 0.0427807486631016, 0.02703505644682115, 0.010992275698158051, 0, 0.18092691622103388 ] }, { "line": { "color": "rgba(128, 0, 128, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "belfast west", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.9330007127583749, 0.9166072701354241, 0.9415538132573058, 0.940128296507484, 1, 0.9151817533856023, 0.8816821097647898, 0.9080541696364932, 0.8880969351389879, 0.8467569493941554, 0.7483962936564504, 0.7583749109052031, 0.7954383464005702, 0.7305773342836779, 0.7576621525302922, 0.7733428367783322, 0.8467569493941554, 0.9365645046329294, 0.9387027797576621, 0.9330007127583749, 0.8652886671418389, 0.8317890235210263, 0.8980755523877405, 0.9087669280114041, 0.9843193157519601, 0.9451176051318603, 0.8161083392729864, 0.8132573057733429, 0.8595866001425517, 0.9444048467569494, 0.8888096935138988, 0.8503207412687099, 0.8168210976478973, 0.7990021382751248, 0.7740555951532431, 0.7583749109052031, 0.7270135424091233, 0.714896650035638, 0.6357804704205274, 0.6593014967925873, 0.5830363506771205, 0.6029935851746258, 0.662152530292231, 0.6443335709194583, 0.6329294369208838, 0.7398431931575196, 0.7426942266571632, 0.7227369921596579, 0.7569493941553813, 0.8068424803991446, 0.8367783321454028, 0.8210976478973628, 0.8054169636493229, 0.8168210976478973, 0.8303635067712045, 0.7940128296507484, 0.7583749109052031, 0.6963649322879544, 0.6899501069137562, 0.6571632216678546, 0.6265146115466856, 0.5787598004276551, 0.5538132573057734, 0.48610121168923737, 0.44547398431931573, 0.4483250178189594, 0.45545260156806844, 0.43478260869565216, 0.41696364932287955, 0.4126870990734141, 0.33570919458303633, 0.3471133285816108, 0.33570919458303633, 0.33713471133285816, 0.3136136849607983, 0.25374198146828225, 0.25659301496792586, 0.25374198146828225, 0.25160370634354956, 0.22309337134711332, 0.18816821097647898, 0.16393442622950818, 0.14754098360655737, 0.11546685673556664, 0.08410548823948681, 0.10548823948681398, 0.07341411261582323, 0.027797576621525304, 0.012829650748396294, 0, 0.2900926585887384 ] }, { "line": { "color": "rgba(219, 64, 82, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "east antrim", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.5685975609756098, 0.5853658536585366, 0.6158536585365854, 0.6448170731707317, 0.6890243902439024, 0.6379573170731707, 0.6722560975609756, 0.6920731707317073, 0.7217987804878049, 0.7416158536585366, 0.7195121951219512, 0.7065548780487805, 0.6722560975609756, 0.6913109756097561, 0.6486280487804879, 0.6730182926829268, 0.7073170731707317, 0.7682926829268293, 0.7286585365853658, 0.9016768292682927, 0.7759146341463414, 0.7271341463414634, 0.7591463414634146, 0.7271341463414634, 0.6836890243902439, 0.6486280487804879, 0.6836890243902439, 0.6570121951219512, 0.6646341463414634, 0.6684451219512195, 0.6592987804878049, 0.6349085365853658, 0.604420731707317, 0.5800304878048781, 0.6067073170731707, 0.6570121951219512, 0.6836890243902439, 0.6775914634146342, 0.6112804878048781, 0.6417682926829268, 0.6196646341463414, 0.7202743902439024, 0.756859756097561, 0.8178353658536586, 0.8239329268292683, 0.8620426829268293, 0.8925304878048781, 0.9321646341463414, 0.9138719512195121, 0.9092987804878049, 0.9717987804878049, 0.9344512195121951, 0.9870426829268293, 1, 0.948170731707317, 0.8528963414634146, 0.8467987804878049, 0.868140243902439, 0.8445121951219512, 0.7652439024390244, 0.7317073170731707, 0.6592987804878049, 0.6585365853658537, 0.649390243902439, 0.604420731707317, 0.6013719512195121, 0.618140243902439, 0.5716463414634146, 0.6524390243902439, 0.6547256097560976, 0.5510670731707317, 0.5221036585365854, 0.5472560975609756, 0.5403963414634146, 0.4504573170731707, 0.36814024390243905, 0.36509146341463417, 0.3391768292682927, 0.30564024390243905, 0.28734756097560976, 0.23932926829268292, 0.23932926829268292, 0.1951219512195122, 0.16158536585365854, 0.13033536585365854, 0.13795731707317074, 0.07545731707317073, 0.056402439024390245, 0.04496951219512195, 0, 0.38414634146341464 ] }, { "line": { "color": "rgba(0, 128, 128, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "east londonderry", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.7052932761087267, 0.778969957081545, 0.7324749642346209, 0.7360515021459227, 0.8090128755364807, 0.8090128755364807, 0.7439198855507868, 0.8061516452074392, 0.8583690987124464, 0.7918454935622318, 0.7324749642346209, 0.7353361945636624, 0.7646638054363376, 0.7060085836909872, 0.7782546494992847, 0.765379113018598, 0.7839771101573677, 0.8705293276108726, 0.8590844062947067, 0.8962804005722461, 0.9599427753934192, 0.9005722460658083, 0.8597997138769671, 0.8090128755364807, 0.6802575107296137, 0.6845493562231759, 0.6802575107296137, 0.6645207439198856, 0.7052932761087267, 0.7145922746781116, 0.7389127324749643, 0.709585121602289, 0.6852646638054364, 0.6924177396280401, 0.7088698140200286, 0.7389127324749643, 0.7353361945636624, 0.6988555078683834, 0.7110157367668097, 0.7224606580829757, 0.709585121602289, 0.7203147353361946, 0.7997138769670958, 0.907725321888412, 0.8819742489270386, 0.9177396280400573, 0.9055793991416309, 0.9213161659513591, 0.9821173104434907, 0.957796852646638, 0.9856938483547926, 1, 0.9463519313304721, 0.8676680972818311, 0.8419170243204578, 0.8469241773962805, 0.804005722460658, 0.7997138769670958, 0.7589413447782547, 0.7153075822603719, 0.6895565092989986, 0.7024320457796852, 0.6659513590844063, 0.6602288984263234, 0.6380543633762518, 0.6223175965665236, 0.630901287553648, 0.6545064377682404, 0.6051502145922747, 0.6115879828326181, 0.5615164520743919, 0.5472103004291845, 0.5321888412017167, 0.4978540772532189, 0.4291845493562232, 0.41416309012875535, 0.3605150214592275, 0.33905579399141633, 0.30972818311874106, 0.2854077253218884, 0.24678111587982832, 0.19241773962804007, 0.17381974248927037, 0.18097281831187412, 0.14377682403433475, 0.11802575107296137, 0.08583690987124463, 0.05722460658082976, 0.012160228898426323, 0, 0.3855507868383405 ] }, { "line": { "color": "rgba(255, 255, 51, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "fermanagh and south tyrone", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 1, 0.8975817923186344, 0.9502133712660028, 0.9950213371266002, 0.9566145092460882, 0.922475106685633, 0.9957325746799431, 0.9637268847795164, 0.9423897581792319, 0.895448079658606, 0.8847795163584637, 0.8456614509246089, 0.8236130867709816, 0.8328591749644382, 0.8591749644381224, 0.829302987197724, 0.8620199146514936, 0.8911806543385491, 0.8669985775248933, 0.682076813655761, 0.6223328591749644, 0.6486486486486487, 0.7176386913229018, 0.751778093883357, 0.8044096728307255, 0.817923186344239, 0.8598862019914651, 0.9253200568990043, 0.8790896159317212, 0.9708392603129445, 0.8890469416785206, 0.8783783783783784, 0.9317211948790897, 0.8982930298719772, 0.9018492176386913, 0.9253200568990043, 0.89900426742532, 0.8790896159317212, 0.7937411095305832, 0.8250355618776671, 0.8399715504978663, 0.844950213371266, 0.8705547652916074, 0.9317211948790897, 0.9295874822190612, 0.9054054054054054, 0.9068278805120911, 0.8854907539118065, 0.868421052631579, 0.883357041251778, 0.8762446657183499, 0.9167852062588905, 0.8812233285917497, 0.9132290184921764, 0.8812233285917497, 0.8307254623044097, 0.8157894736842105, 0.7766714082503556, 0.7716927453769559, 0.7503556187766715, 0.6963015647226174, 0.686344238975818, 0.6699857752489331, 0.6650071123755334, 0.6330014224751067, 0.6095305832147937, 0.5981507823613087, 0.6386913229018493, 0.5945945945945946, 0.5860597439544808, 0.5042674253200569, 0.4900426742532006, 0.48933143669985774, 0.44310099573257467, 0.3911806543385491, 0.32432432432432434, 0.29445234708392604, 0.30440967283072545, 0.2709815078236131, 0.2802275960170697, 0.2197724039829303, 0.1891891891891892, 0.1813655761024182, 0.13655761024182078, 0.11522048364153627, 0.09601706970128022, 0.08321479374110953, 0.05263157894736842, 0.01849217638691323, 0, 0.3456614509246088 ] }, { "line": { "color": "rgba(128, 128, 0, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "foyle", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.8887362637362637, 0.9210164835164835, 0.9429945054945055, 0.9093406593406593, 1, 0.9608516483516484, 0.9141483516483516, 0.9368131868131868, 0.9320054945054945, 0.8351648351648352, 0.8186813186813187, 0.7774725274725275, 0.7637362637362637, 0.8042582417582418, 0.8186813186813187, 0.834478021978022, 0.8502747252747253, 0.9244505494505495, 0.9464285714285714, 0.9271978021978022, 0.9107142857142857, 0.8358516483516484, 0.7967032967032966, 0.8894230769230769, 0.8489010989010989, 0.8282967032967034, 0.8949175824175825, 0.8880494505494505, 0.8942307692307693, 0.8921703296703297, 0.8880494505494505, 0.9292582417582418, 0.8791208791208791, 0.8399725274725275, 0.8138736263736264, 0.7973901098901099, 0.8186813186813187, 0.771978021978022, 0.7396978021978022, 0.771978021978022, 0.7754120879120879, 0.790521978021978, 0.7939560439560439, 0.8166208791208791, 0.8784340659340659, 0.9059065934065934, 0.9203296703296703, 0.9423076923076923, 0.9361263736263736, 0.9471153846153846, 0.9677197802197802, 0.9601648351648352, 0.9120879120879121, 0.9031593406593407, 0.9004120879120879, 0.8660714285714286, 0.801510989010989, 0.757554945054945, 0.7232142857142857, 0.6929945054945055, 0.6572802197802198, 0.6490384615384616, 0.6538461538461539, 0.5817307692307693, 0.5748626373626373, 0.5762362637362637, 0.5906593406593407, 0.5377747252747253, 0.5398351648351648, 0.540521978021978, 0.4608516483516483, 0.4532967032967033, 0.43887362637362637, 0.39285714285714285, 0.323489010989011, 0.2960164835164835, 0.25755494505494503, 0.27541208791208793, 0.24862637362637363, 0.24725274725274726, 0.1971153846153846, 0.17651098901098902, 0.13255494505494506, 0.13186813186813187, 0.08447802197802198, 0.07005494505494506, 0.03296703296703297, 0.029532967032967032, 0.013736263736263736, 0, 0.2135989010989011 ] }, { "line": { "color": "rgba(251, 128, 114, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "lagan valley", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.7771587743732591, 0.8238161559888579, 0.8071030640668524, 0.8342618384401114, 0.8426183844011143, 0.8795264623955432, 0.8600278551532033, 0.8864902506963789, 0.8683844011142061, 0.8433147632311978, 0.7862116991643454, 0.7618384401114207, 0.7416434540389972, 0.6991643454038997, 0.6852367688022284, 0.6838440111420613, 0.7298050139275766, 0.7416434540389972, 0.7569637883008357, 0.6350974930362117, 0.596100278551532, 0.637883008356546, 0.6984679665738162, 0.7137883008356546, 0.6949860724233984, 0.685933147632312, 0.7625348189415042, 0.7701949860724234, 0.7604456824512534, 0.7952646239554317, 0.8363509749303621, 0.8426183844011143, 0.8405292479108635, 0.8050139275766016, 0.862116991643454, 0.8753481894150418, 0.8711699164345403, 0.8314763231197771, 0.7945682451253482, 0.8071030640668524, 0.775766016713092, 0.7931754874651811, 0.841225626740947, 0.8857938718662952, 0.8774373259052924, 0.9282729805013927, 0.9373259052924791, 0.9415041782729805, 0.979108635097493, 1, 0.9408077994428969, 0.9714484679665738, 0.9442896935933147, 0.9080779944289693, 0.8864902506963789, 0.9129526462395543, 0.8133704735376045, 0.7722841225626741, 0.7910863509749304, 0.75, 0.6928969359331476, 0.6211699164345403, 0.616991643454039, 0.6155988857938719, 0.5870473537604457, 0.5689415041782729, 0.6142061281337048, 0.5926183844011143, 0.6058495821727019, 0.6142061281337048, 0.552924791086351, 0.5139275766016713, 0.5612813370473537, 0.5536211699164345, 0.47075208913649025, 0.39763231197771587, 0.37395543175487467, 0.3579387186629526, 0.31337047353760444, 0.2931754874651811, 0.2862116991643454, 0.2416434540389972, 0.19011142061281336, 0.18662952646239556, 0.13370473537604458, 0.10167130919220056, 0.04944289693593315, 0.054317548746518104, 0.009052924791086351, 0, 0.39275766016713093 ] }, { "line": { "color": "rgba(128, 177, 211, 1.0)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "mid ulster", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.8987603305785123, 0.9269972451790633, 0.9201101928374655, 0.9552341597796143, 0.9173553719008265, 1, 0.9827823691460055, 0.9731404958677686, 0.9366391184573003, 0.9242424242424242, 0.8746556473829201, 0.8808539944903582, 0.8154269972451791, 0.7899449035812672, 0.7961432506887053, 0.7933884297520661, 0.8353994490358126, 0.8746556473829201, 0.8684573002754821, 0.6639118457300276, 0.6728650137741047, 0.737603305785124, 0.7727272727272727, 0.8202479338842975, 0.8856749311294766, 0.849862258953168, 0.8836088154269972, 0.8622589531680441, 0.8774104683195593, 0.8588154269972452, 0.8615702479338843, 0.8725895316804407, 0.8677685950413223, 0.8512396694214877, 0.859504132231405, 0.9104683195592287, 0.8801652892561983, 0.8360881542699724, 0.8298898071625345, 0.7961432506887053, 0.8009641873278237, 0.8278236914600551, 0.8533057851239669, 0.8753443526170799, 0.8801652892561983, 0.8767217630853994, 0.8608815426997245, 0.8360881542699724, 0.8292011019283747, 0.8298898071625345, 0.8505509641873278, 0.7975206611570248, 0.7975206611570248, 0.7734159779614325, 0.7362258953168044, 0.7265840220385675, 0.6935261707988981, 0.6880165289256198, 0.6659779614325069, 0.6225895316804407, 0.5957300275482094, 0.5509641873278237, 0.5337465564738292, 0.5606060606060606, 0.5268595041322314, 0.5344352617079889, 0.5027548209366391, 0.44834710743801653, 0.47107438016528924, 0.4972451790633609, 0.43044077134986225, 0.4511019283746556, 0.39462809917355374, 0.3560606060606061, 0.3037190082644628, 0.284435261707989, 0.2796143250688705, 0.25, 0.20730027548209368, 0.174931129476584, 0.174931129476584, 0.14600550964187328, 0.13636363636363635, 0.12190082644628099, 0.09228650137741047, 0.06611570247933884, 0.05303030303030303, 0.028236914600550965, 0, 0.0027548209366391185, 0.3119834710743802 ] }, { "line": { "color": "rgba(128, 177, 211, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "newry and armagh", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.9778156996587031, 0.9391353811149032, 0.9431171786120591, 0.9567690557451649, 1, 0.9732650739476678, 0.9533560864618885, 0.9129692832764505, 0.9618885096700797, 0.8697383390216155, 0.7815699658703071, 0.7912400455062572, 0.7940841865756542, 0.7741751990898749, 0.7895335608646189, 0.7474402730375427, 0.7969283276450512, 0.8373151308304891, 0.8447098976109215, 0.6370875995449374, 0.5972696245733788, 0.6848691695108078, 0.7138794084186576, 0.7679180887372014, 0.853811149032992, 0.8208191126279863, 0.8242320819112628, 0.8407281001137656, 0.8947667804323094, 0.8122866894197952, 0.8265073947667805, 0.8475540386803185, 0.8037542662116041, 0.8020477815699659, 0.7815699658703071, 0.7935153583617748, 0.8083048919226393, 0.7690557451649602, 0.7542662116040956, 0.7343572241183163, 0.7445961319681457, 0.7610921501706485, 0.7741751990898749, 0.800910125142207, 0.8225255972696246, 0.8071672354948806, 0.8071672354948806, 0.8179749715585893, 0.8435722411831627, 0.825938566552901, 0.7775881683731513, 0.8475540386803185, 0.800910125142207, 0.7992036405005688, 0.7650739476678043, 0.757679180887372, 0.7161547212741752, 0.6973833902161547, 0.699089874857793, 0.661547212741752, 0.6023890784982935, 0.6154721274175199, 0.571103526734926, 0.5352673492605233, 0.5159271899886234, 0.4943117178612059, 0.5415244596131968, 0.5199089874857793, 0.4931740614334471, 0.48179749715585896, 0.44084186575654155, 0.44880546075085326, 0.4249146757679181, 0.39761092150170646, 0.34186575654152446, 0.29977246871444824, 0.282707622298066, 0.26393629124004553, 0.257679180887372, 0.24118316268486917, 0.22468714448236632, 0.19340159271899887, 0.15699658703071673, 0.1342434584755404, 0.10238907849829351, 0.08304891922639362, 0.07167235494880546, 0.04835039817974972, 0.026734926052332197, 0, 0.29180887372013653 ] }, { "line": { "color": "rgba(255, 153, 51, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "north antrim", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.7462987886944819, 0.7920592193808883, 0.7570659488559892, 0.8048452220726783, 0.7604306864064603, 0.8324360699865411, 0.7954239569313594, 0.7812920592193809, 0.8694481830417228, 0.800807537012113, 0.784656796769852, 0.7711978465679677, 0.7328398384925976, 0.7637954239569313, 0.746971736204576, 0.7456258411843876, 0.7698519515477793, 0.7732166890982504, 0.7981157469717362, 0.6574697173620457, 0.5975773889636609, 0.6440107671601615, 0.7160161507402423, 0.7456258411843876, 0.7570659488559892, 0.7537012113055181, 0.800807537012113, 0.778600269179004, 0.8169582772543742, 0.823014804845222, 0.775235531628533, 0.7772543741588156, 0.7590847913862718, 0.7860026917900403, 0.7550471063257066, 0.7913862718707941, 0.8465679676985195, 0.7725437415881561, 0.6978465679676985, 0.7220726783310901, 0.7086137281292059, 0.7779273216689099, 0.8425302826379543, 0.8909825033647375, 0.9226110363391655, 0.927321668909825, 0.9542395693135935, 0.9959623149394348, 1, 0.9448183041722745, 0.9138627187079408, 0.9421265141318977, 0.9064602960969045, 0.8654104979811574, 0.8162853297442799, 0.8223418573351279, 0.797442799461642, 0.7557200538358008, 0.7254374158815612, 0.7523553162853297, 0.7288021534320323, 0.6722745625841184, 0.6534320323014805, 0.6742934051144011, 0.629878869448183, 0.6211305518169583, 0.6278600269179004, 0.6150740242261103, 0.5383580080753702, 0.576043068640646, 0.5558546433378196, 0.5484522207267833, 0.5497981157469717, 0.5296096904441454, 0.4784656796769852, 0.3795423956931359, 0.360699865410498, 0.382907133243607, 0.30148048452220727, 0.26850605652759085, 0.2597577388963661, 0.23014804845222073, 0.19246298788694483, 0.15275908479138628, 0.14333781965006728, 0.10969044414535666, 0.07806191117092867, 0.05720053835800808, 0.02220726783310902, 0, 0.38088829071332436 ] }, { "line": { "color": "rgba(55, 128, 191, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "north down", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.6897179253867152, 0.6460418562329391, 0.7470427661510464, 0.7333939945404914, 0.7734303912647862, 0.8325750682438581, 0.7961783439490446, 0.8362147406733395, 0.8289353958143767, 0.8080072793448589, 0.7370336669699727, 0.7033666969972703, 0.721565059144677, 0.6760691537761602, 0.6496815286624203, 0.640582347588717, 0.6842584167424932, 0.7361237488626023, 0.7397634212920837, 0.5832575068243858, 0.5150136487716106, 0.5040946314831665, 0.5732484076433121, 0.5978161965423112, 0.635122838944495, 0.6897179253867152, 0.6587807097361238, 0.6615104640582348, 0.7115559599636033, 0.6906278434940856, 0.7643312101910829, 0.718835304822566, 0.7752502274795269, 0.7725204731574158, 0.7452229299363057, 0.8089171974522293, 0.8626023657870792, 0.7870791628753412, 0.7470427661510464, 0.7006369426751592, 0.7543221110100091, 0.805277525022748, 0.821656050955414, 0.8935395814376706, 0.9099181073703366, 0.9472247497725205, 0.9426751592356688, 0.9872611464968153, 0.9927206551410374, 0.9526842584167425, 0.9144676979071884, 0.9335759781619655, 0.9990900818926297, 1, 0.9426751592356688, 0.9317561419472248, 0.8944494995450409, 0.8808007279344859, 0.8808007279344859, 0.8662420382165605, 0.8098271155595996, 0.732484076433121, 0.7916287534121929, 0.7888989990900819, 0.7707006369426752, 0.8198362147406734, 0.8098271155595996, 0.8143767060964513, 0.899909008189263, 0.8689717925386715, 0.7998180163785259, 0.7634212920837125, 0.7643312101910829, 0.7042766151046406, 0.543221110100091, 0.4121929026387625, 0.37124658780709735, 0.35577797998180166, 0.3575978161965423, 0.31210191082802546, 0.26205641492265697, 0.24476797088262056, 0.20382165605095542, 0.19290263876251137, 0.1910828025477707, 0.11010009099181074, 0.050955414012738856, 0.08553230209281165, 0.010009099181073703, 0, 0.5950864422202001 ] }, { "line": { "color": "rgba(50, 171, 96, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "south antrim", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.8610914245216159, 0.8490432317505315, 0.8249468462083629, 0.88731396172927, 0.930545712260808, 0.9029057406094968, 0.9213323883770376, 0.9858256555634302, 1, 0.8816442239546421, 0.8398299078667611, 0.8384124734231042, 0.8235294117647058, 0.7498228206945429, 0.8171509567682494, 0.7994330262225372, 0.8199858256555634, 0.8398299078667611, 0.810772501771793, 0.7207654145995748, 0.6541459957476967, 0.6789510985116939, 0.7087172218284904, 0.7200566973777462, 0.7547838412473423, 0.7902197023387668, 0.7540751240255138, 0.7810063784549964, 0.7682494684620836, 0.7696669029057406, 0.7951807228915663, 0.7930545712260808, 0.8157335223245925, 0.8299078667611623, 0.8674698795180723, 0.9241672572643516, 0.8944011339475549, 0.8632175761871014, 0.8327427356484762, 0.8313253012048193, 0.8773919206236711, 0.8518781006378455, 0.8405386250885897, 0.9036144578313253, 0.9461374911410347, 0.9177888022678952, 0.9581856839121191, 0.959603118355776, 0.9759036144578314, 0.923458540042523, 0.9177888022678952, 0.9985825655563431, 0.963855421686747, 0.8837703756201276, 0.8596739900779589, 0.8462083628632175, 0.7781715095676824, 0.7257264351523742, 0.7406094968107725, 0.6768249468462083, 0.6470588235294118, 0.6208362863217576, 0.6250885896527285, 0.6094968107725017, 0.6002834868887313, 0.632884479092842, 0.6158752657689582, 0.6087880935506733, 0.5698086463501063, 0.5627214741318214, 0.5194897236002834, 0.5088589652728561, 0.48263642806520196, 0.49751948972360027, 0.3841247342310418, 0.3316796598157335, 0.3146704464918498, 0.3196314670446492, 0.2664776754075124, 0.24238128986534374, 0.2069454287739192, 0.1913536498936924, 0.14457831325301204, 0.12260807937632884, 0.10063784549964565, 0.06803685329553508, 0.04890148830616584, 0.021970233876683204, 0.004252303330970942, 0, 0.2877391920623671 ] }, { "line": { "color": "rgba(128, 0, 128, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "south down", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.9026666666666666, 0.884, 0.8873333333333333, 0.9366666666666666, 0.9706666666666667, 0.9346666666666666, 0.9746666666666667, 1, 0.9846666666666667, 0.9833333333333333, 0.8753333333333333, 0.8566666666666667, 0.8333333333333334, 0.84, 0.8166666666666667, 0.8506666666666667, 0.87, 0.886, 0.92, 0.698, 0.6566666666666666, 0.676, 0.7393333333333333, 0.756, 0.7553333333333333, 0.7993333333333333, 0.8206666666666667, 0.8133333333333334, 0.8313333333333334, 0.828, 0.8293333333333334, 0.812, 0.8013333333333333, 0.802, 0.8153333333333334, 0.852, 0.8486666666666667, 0.7733333333333333, 0.7693333333333333, 0.7773333333333333, 0.764, 0.7673333333333333, 0.8473333333333334, 0.852, 0.896, 0.9446666666666667, 0.8953333333333333, 0.896, 0.9693333333333334, 0.902, 0.9273333333333333, 0.9486666666666667, 0.92, 0.8693333333333333, 0.8493333333333334, 0.8353333333333334, 0.7953333333333333, 0.776, 0.7566666666666667, 0.7193333333333334, 0.722, 0.6773333333333333, 0.682, 0.61, 0.6153333333333333, 0.6193333333333333, 0.5753333333333334, 0.6033333333333334, 0.5746666666666667, 0.54, 0.49133333333333334, 0.468, 0.4533333333333333, 0.412, 0.3526666666666667, 0.308, 0.2966666666666667, 0.27266666666666667, 0.25666666666666665, 0.24666666666666667, 0.19666666666666666, 0.18466666666666667, 0.15733333333333333, 0.152, 0.12133333333333333, 0.09466666666666666, 0.07, 0.028666666666666667, 0.002, 0, 0.3406666666666667 ] }, { "line": { "color": "rgba(219, 64, 82, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "strangford", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.6597444089456869, 0.6701277955271565, 0.6349840255591054, 0.6637380191693291, 0.7084664536741214, 0.702076677316294, 0.6924920127795527, 0.7252396166134185, 0.7603833865814696, 0.755591054313099, 0.7244408945686901, 0.737220447284345, 0.7196485623003195, 0.6733226837060703, 0.6645367412140575, 0.6980830670926518, 0.7364217252396166, 0.8043130990415336, 0.7987220447284346, 0.6549520766773163, 0.5966453674121406, 0.5575079872204473, 0.6437699680511182, 0.6884984025559105, 0.6757188498402555, 0.6884984025559105, 0.6717252396166135, 0.7276357827476039, 0.7340255591054313, 0.6541533546325878, 0.6477635782747604, 0.6389776357827476, 0.6054313099041534, 0.6645367412140575, 0.6749201277955271, 0.6677316293929713, 0.6613418530351438, 0.7220447284345048, 0.670926517571885, 0.6541533546325878, 0.6813099041533547, 0.7364217252396166, 0.7332268370607029, 0.7803514376996805, 0.7963258785942492, 0.8626198083067093, 0.8442492012779552, 0.9097444089456869, 0.957667731629393, 0.963258785942492, 0.9664536741214057, 1, 0.9600638977635783, 0.9488817891373802, 0.939297124600639, 0.9257188498402555, 0.9369009584664537, 0.8410543130990416, 0.853035143769968, 0.8083067092651757, 0.7651757188498403, 0.731629392971246, 0.6900958466453674, 0.713258785942492, 0.6932907348242812, 0.6789137380191693, 0.7180511182108626, 0.7460063897763578, 0.7691693290734825, 0.7172523961661342, 0.670926517571885, 0.6821086261980831, 0.5766773162939297, 0.5742811501597445, 0.4736421725239617, 0.3865814696485623, 0.34584664536741216, 0.36022364217252395, 0.31150159744408945, 0.28833865814696485, 0.23482428115015974, 0.22523961661341854, 0.16054313099041534, 0.15415335463258786, 0.11900958466453675, 0.09904153354632587, 0.06230031948881789, 0.04472843450479233, 0.03514376996805112, 0, 0.4169329073482428 ] }, { "line": { "color": "rgba(0, 128, 128, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "upper bann", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.9309133489461359, 0.8998829039812647, 0.9502341920374707, 0.9836065573770492, 1, 0.9976580796252927, 0.9560889929742389, 0.9918032786885246, 0.955503512880562, 0.9361826697892272, 0.9045667447306791, 0.8179156908665105, 0.7681498829039812, 0.7271662763466042, 0.7494145199063232, 0.7511709601873536, 0.7886416861826698, 0.8190866510538641, 0.8255269320843092, 0.6873536299765808, 0.689695550351288, 0.7254098360655737, 0.788056206088993, 0.7962529274004684, 0.8501170960187353, 0.882903981264637, 0.9133489461358314, 0.9514051522248244, 0.9402810304449649, 0.9432084309133489, 0.9391100702576113, 0.939695550351288, 0.9461358313817331, 0.9467213114754098, 0.9344262295081968, 0.9672131147540983, 0.9654566744730679, 0.9139344262295082, 0.8389929742388759, 0.8243559718969555, 0.8466042154566745, 0.8138173302107728, 0.8466042154566745, 0.8735362997658079, 0.8963700234192038, 0.9028103044496487, 0.9028103044496487, 0.9110070257611241, 0.9221311475409836, 0.9151053864168618, 0.9233021077283372, 0.949648711943794, 0.9057377049180327, 0.8682669789227166, 0.8401639344262295, 0.7862997658079626, 0.7886416861826698, 0.7710772833723654, 0.7265807962529274, 0.6855971896955504, 0.6621779859484778, 0.6071428571428571, 0.5819672131147541, 0.5802107728337237, 0.5345433255269321, 0.5409836065573771, 0.5573770491803278, 0.5298594847775175, 0.5322014051522248, 0.5216627634660421, 0.4847775175644028, 0.4672131147540984, 0.45784543325526933, 0.4385245901639344, 0.3659250585480094, 0.32201405152224827, 0.3126463700234192, 0.3237704918032787, 0.28044496487119436, 0.27049180327868855, 0.22716627634660422, 0.20550351288056207, 0.17096018735362997, 0.14637002341920374, 0.09836065573770492, 0.09309133489461359, 0.08021077283372366, 0.05327868852459016, 0.021662763466042154, 0, 0.31440281030444966 ] }, { "line": { "color": "rgba(255, 255, 51, 0.8999999999999999)", "dash": "solid", "width": 1.3 }, "mode": "lines", "name": "west tyrone", "text": "", "type": "scatter", "x": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ], "y": [ 0.8639004149377594, 0.8697095435684647, 0.8448132780082988, 0.8390041493775934, 0.946058091286307, 0.9493775933609958, 0.970954356846473, 0.9701244813278008, 0.9012448132780083, 0.9037344398340249, 0.8863070539419087, 0.8406639004149378, 0.8390041493775934, 0.8497925311203319, 0.8489626556016597, 0.8937759336099586, 0.9518672199170124, 0.9742738589211618, 1, 0.7236514522821577, 0.6630705394190871, 0.7186721991701245, 0.7858921161825726, 0.7892116182572614, 0.8074688796680498, 0.8240663900414937, 0.8024896265560166, 0.870539419087137, 0.8215767634854771, 0.8514522821576763, 0.8398340248962656, 0.8190871369294606, 0.8506224066390041, 0.8248962655601659, 0.8049792531120332, 0.8464730290456431, 0.862240663900415, 0.84149377593361, 0.8647302904564316, 0.8099585062240664, 0.779253112033195, 0.8605809128630706, 0.8804979253112033, 0.9112033195020747, 0.9477178423236514, 0.9651452282157676, 0.9402489626556016, 0.9485477178423236, 0.9634854771784233, 0.9236514522821577, 0.9742738589211618, 0.9809128630705394, 0.9651452282157676, 0.9319502074688797, 0.8580912863070539, 0.8531120331950207, 0.783402489626556, 0.7991701244813278, 0.783402489626556, 0.7734439834024897, 0.7369294605809129, 0.6929460580912863, 0.6697095435684647, 0.6514522821576764, 0.5941908713692946, 0.6224066390041494, 0.6224066390041494, 0.5825726141078839, 0.537759336099585, 0.5867219917012448, 0.5236514522821577, 0.4970954356846473, 0.4912863070539419, 0.4024896265560166, 0.3634854771784232, 0.35435684647302906, 0.33360995850622405, 0.3020746887966805, 0.27717842323651454, 0.24149377593360996, 0.21825726141078838, 0.16514522821576763, 0.14688796680497926, 0.13692946058091288, 0.13443983402489626, 0.08215767634854772, 0.04979253112033195, 0.038174273858921165, 0.0024896265560165973, 0, 0.33029045643153526 ] } ], "layout": { "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "titlefont": { "color": "#4D5663" }, "xaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" }, "yaxis1": { "gridcolor": "#E1E5ED", "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": "", "titlefont": { "color": "#4D5663" }, "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def colnorm(df):\n", " return (df-df.min())/(df.max()-df.min())\n", "colnorm(df).iplot()" ] }, { "cell_type": "code", "execution_count": 156, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:24:11.530100Z", "start_time": "2018-06-08T18:24:10.990788Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 156, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "sns.heatmap(colnorm(df).T, ax=ax)" ] }, { "cell_type": "code", "execution_count": 161, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:25:20.370753Z", "start_time": "2018-06-08T18:25:20.352783Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def year_age_profile(yr=2016):\n", " constituencies = list(cons_pop.groupby(\"constituency\")['Population_Estimate'].sum().sort_values(ascending=True).keys())\n", " label = f\"Population profile for NI in {yr}\"\n", " f,ax = plt.subplots(figsize=graph_figsize)\n", " colors = plt.cm.jet(np.linspace(0,1,len(constituencies)))\n", " for constituency,c in zip(constituencies,colors):\n", " pop_cumsum = cons_pop[(cons_pop.Gender == 'All People') \\\n", " & (cons_pop.constituency==constituency)\\\n", " & (cons_pop.Mid_Year_Ending == yr)]\\\n", " .groupby('Age')['Population_Estimate'].sum().cumsum()\n", " pop_cumsum.plot(ax=ax, label=constituency, c=c)\n", " age_quartiles = [idxquantile(pop_cumsum, q) for q in [0.25,0.5,0.75]]\n", " ax.vlines(age_quartiles, ymin=pop_cumsum.min(), ymax = pop_cumsum[age_quartiles],color=c,alpha=0.2)\n", " ax.legend()\n", " ax.set_title(label)" ] }, { "cell_type": "code", "execution_count": 162, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:25:24.320270Z", "start_time": "2018-06-08T18:25:23.498908Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "year_age_profile()" ] }, { "cell_type": "code", "execution_count": 163, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:25:43.411044Z", "start_time": "2018-06-08T18:25:43.371111Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "cons_pop_qilted=pd.DataFrame.from_dict(\n", " {\n", " qtile:cons_pop[(cons_pop.Gender == 'All People') \\\n", " & (cons_pop.Mid_Year_Ending == 2016) \\\n", " & (lotile" ] }, "execution_count": 166, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "cons_stats.plot(column='age_2016_avg', legend=True, ax=ax)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Top Quartile\n", "\n", "Who rules the roost" ] }, { "cell_type": "code", "execution_count": 167, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:26:37.564545Z", "start_time": "2018-06-08T18:26:37.190269Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 167, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "cons_stats.plot(column='topqt_2016', legend=True, ax=ax)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Mars and Venus" ] }, { "cell_type": "code", "execution_count": 169, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:27:40.573813Z", "start_time": "2018-06-08T18:27:40.211392Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 169, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "cons_stats.plot(column='pop_2016_m_per_f', legend=True, ax=ax)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Enroled Pupils per Capita\n", "Lagan Valley and South Antrim popping up again!" ] }, { "cell_type": "code", "execution_count": 170, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:27:45.460459Z", "start_time": "2018-06-08T18:27:45.090556Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 170, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAFpCAYAAABpr6nOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XecnFd56PHfmba999XuatV7tYrlhtyNCTYOpoQATqgh17k34FwgkJBgUgiXknDDDRgwMRjbFIMx2JYt2ZItWbJ6WdUt2l60fXd2Z6e+5/4xK1ll+87MO+X5fj7z8ezM+77nGXl35plTnqO01gghhBBCxCqL2QEIIYQQQsyGJDNCCCGEiGmSzAghhBAipkkyI4QQQoiYJsmMEEIIIWKaJDNCCCGEiGmSzAghhBAipkkyI4QQQoiYJsmMEEIIIWKaJDNCCCGEiGk2swMYS35+vq6srDQ7DCGEECIiDh8+3K21LohUe3ffmqZ7egMzPv/wCc/LWut7QhjSrERlMlNZWcmhQ4fMDkMIIYSICKVUYyTb6+4NsP/lshmfby+pyw9hOLMmw0xCCCGEiGlR2TMjhBBCiHDSBLRhdhAhI8mMEEIIkWA0YKDNDiNkJJkRQgghEpBB/PTMyJwZIYQQQsQ06ZkRQgghEoxGE9AyzCSEEEKIGCZzZoQQQggRszQQkGRGCCGEELEsnnpmZAKwEEIIIWKa9MwIIYQQCUaDTAAWQgghRGyLnyozMswkhBAho7UmYBi0uwZ5ufkcPmPmuxILEU4aTWAWt6lQSt2jlDqnlKpVSn1xjOdvUUodUUr5lVIPXvXcQ0qpmtHbQ5O1JT0zQggxSx6/HxTsaqvjG8d24g74aXcNsjgrn48s3sC75y4nw56EUooGZy8V6TlYlDI7bJHINATCOMqklLIC3wPuBFqAg0qp57XWpy87rAn4M+Bvrjo3F/gHYEMwUg6Pnts3XnuSzAghxCy4vB6+ePAl9nU00ONxXfFc9UA3f39wG185uA2H1Uay1caA183W0gXcVDyP8vRsbiiqJM3uMCl6IcJmE1CrtT4PoJR6BrgfuJTMaK0bRp+7esTrbmC71rp39PntwD3A0+M1JsmMEELMwpcObuMPjacnPEYDnoAfT8APBHtwdrXVAbA4K59t7/pUuMMU4grBjSbDag7QfNnPLcDmWZw7Z6ITJJkRQogZOtzVwgtNYycy8zNzuaGokhU5xdQMdHOit43zgz30ekauOO7WOYsiEaoQV1EEmNVQZ75S6tBlPz+mtX5slkHNmCQzQggxQ6tyS3j6jg/T4XJSmZHL07VH2Fq6kGXZhZSlZ495Tr9nhP/55nPs6agnxWrnU8um+mVViNDRgDG7OTPdWusNEzzfCpRf9nPZ6GNT0QpsvercXROdIMmMEELMkMNqZUPB2+/X/7zp3knPyU5K4RNLN7Ono561+aVkO1LCGaIQZjkILFJKzSOYnHwQ+NAUz30Z+BelVM7oz3cBfzvRCbI0WwghIuj8YA//cnQHAPMz81CyqkmYJDA61DST22S01n7gYYKJyRngl1rrU0qpR5VS9wEopTYqpVqA9wE/UEqdGj23F/gawYToIPDoxcnA45GeGSGEiKBvHNtJ9UA3AJ9ddYvJ0YhEFdxoMryJtNb6ReDFqx77ymX3DxIcQhrr3MeBx6faliQzQggRQb2XLd/uGHGSm5xqYjQikRk6fnoFJZkRQogIykkKJi9z03NYll1ocjQiUUWiZyaSZM6MEEJE0F1li1HAhsLySY8VQkyN9MwIIUQEvXf+amoGuvnkss0y+VeYRqMIxFF/hiQzQggRYV9cd5vZIQghc2aEECKaaK35ee0RUq0OVueVsDAr3+yQhIhq8TZnRpIZIUTMqu7vYndHPdtbznGgM7iVS3FKBt+64d1sKaqc9vX8hoHNEj9d70KMTxHQ8fO7LsmMECImBQyDP9/1DO0u5xWPd4w4eez0fpZlF5GdNLXqurUD3Zzs7eBHZ/fztY33kGS1sSSrAKskNkLEBElmhBAx57f1Vfzg9FvXJDIXvd5ex5/v+gVr80pxWK0syy6iOCWDrKRkytKzybAnXTq22z3Mh197is6RIQDe+8oTANxWupD1BWV4Aj4eXnkTdos1/C9MiAgJ7podP8m6JDNCiJixu72eX9Yd43BXCx0jYycyFx3vaeN4T9s1j//F8i18dvUtdI4Msaejnu9W7bmUyFzutbZaXmurBeB0XycPr7iRNfmloXkhQkQBmTMjhBAmeKr2CC83n5vVNb5/eh/fP71vWue82lrDq601fGzJJioysukaGSLV5uAvlm8J6fJqrYPbGMuSbRFuWsucGSGEmJGAYeAa8TLgclOal4llmnNS3jd/zayTmdl4/NyBS/cdFivr8+ewuWjurK/rMwJ88a0XeKWlGquy8JkVW/jksuuxSFIjxJRIMiOECKtAIIDWGueIF7tF0T80QkZqypQSGcPQeP1+uvqGGMTDTw4cmPScSPEaAf70tae4rXQh7567nHdXrpjRdbTWfHzXL9nTUX/psX87tpPy9GzurVgWqnCFuIaRaMNMSqkGwAkEAL/WeoNS6h+BTwJdo4d9aXSHzMvPKwd+ChQRnG/0mNb6P0ITuhAiFlxMWnIygnsSpadNvsKou3+IXcfq2HGommVzC9l/uonq5i5WLC+G4rCGOy2G1uxorWFHaw0BrXnPvJXTOt9nBPjHQ69ckchc9E+Hd5BhT+LmkvmhCleIS4J1ZhJzmOlWrXX3VY99R2v9zQnO8QOPaK2PKKUygMNKqe1a69PTjlQIEXN6Boapbu5iy8rKKR3v8fn54fP7eHrHETy+AACHzjZfet6Xb4QjzJD43L7nOdnbwYrcItblz6EyI/eaYy64nAz63PgMg93t59nWfG7MScoQXGL+N/t+z/P3fIyi1Ixwhy8SjsyZmTKtdTvQPnrfqZQ6A8wBJJkRIgFkpafw5CuHGXZ7uWPDYgaGRnhp/1k8Xj9rFpaycl4xbp+fYzWtnKrv4OUDZ2m60D/OtZI5be2M8CuYnotzavKT0/iPG++/VLjvUFcz9YO9fP3Ya/R5RqZ8vS73MO/b/lOKUjIoSEnj79bfSWlaZjhCFwkmUZdma+AVpZQGfqC1fmz08YeVUh8FDhHsgekb7wJKqUpgHbB/5uEKIWKJzWrhqx+7mz/56s/41c5jVNW14/UHrnheKYXvssfG4/H6SVcOBnGHM+SQ6HYP829Hd7Iyt5iq3g6qettnfK2W4QFahgcA2HehkQ8sWMvHlm6iMCU9VOEKEfOmmszcpLVuVUoVAtuVUmeB/wK+RjDR+RrwLeBjY52slEoHngX+Wms9OM4xnwI+BVBRUTGtFyGEiB5ur4/jtW30DrrQWlPd3EWfc4TD51quOdYfmPqwkdvrZ3l7MW0lY76FRJ0Tve2cmEUSM5YBr5vHzrzFkzWH+aeN7+Se8iX4tUH6ZUUAhZiqQKJtNKm1bh39b6dS6rfAJq31GxefV0r9EPjDWOcqpewEE5mfa61/M0EbjwGPAWzYsEFP+RUIkSAChsErB86xYWk5BdnR9a3c7fVxqr6D3+05yeFzLVzonbig3Uw11vdiKVYYKrHfIlx+H5/b9zxfOmDjz5Zs5PNrbzU7JBFjNCqxJgArpdIAy+iclzTgLuBRpVTJ6JwYgAeAk2Ocq4AfA2e01t8OYdxCJByF4r9fOsDf/+gl/uydG/kff3yT6cXVWrr6aese5MuPvUCfc+pzQWbK6/fjUFbc+MPeVixwB/zMG2OisRBTYcTRBOCpvJIiYI9S6jhwAHhBa70N+IZSqkopdQK4FfgsgFKqVCl1cYn2jcBHgNuUUsdGb/eG/mUIEf8sFsX9N60C4L9fOsg/PbEdr8/cD/X/89RO/uo7z0YkkQHw+Q2KkZU9l/vC/hc41t1qdhgixlxcmj3TW7SZtGdGa30eWDPG4x8Z5/g24N7R+3sgjqryCGGyFfPeLrLyuz0naejo5Zv/475LNVwiqflCH7Wt3QSMyA75pGuHvKtc5a/efI6X3/VJUm0Os0MRwhTRl14JIcZltVz5KX68to0PP/oke06cv7SvT6QcPNsctrkxYnpahwfoGGcHcSHGolEE9Mxv0UaSGSFiSFv3tSt5LvQN8dfffY6PfO3n/Hrn8ZAmGG6Pb8zHvT4/F/rM+fCsV+NWgEho/3RkB97A5EvchbjIwDLjW7SRvZmEiCGt3QPjPne2qZOv//xVvv7zV6koymbNgjksqShgcUUhpXmZZKWnkOywXTFp2DA0ntHEpKG9F4Bkh51kh432nkFeOXCOT953PU6Xhz6ni7ONnZys7+BM4wU8XnPm68zXuVSpDlPajma72upY9+tvc33RXP79xvvJkOXaYgJaIxWAhRDm6Jxib0jThX6aLvTz+71XPm6zWkhy2LAqhVIKp8uDMcnw1O4T52cabljkjKRA5KcIxYSRgI+dbbX8ovYYn1i22exwhIiY+EnLhEgAB840zep8f8BgeMTLoMvDwLB70kQmKrnMDiD6PVV71OwQRNRTGLO4RRvpmREiRvj9AVq7xh9mShSDXSOQb3YU5ticVoHVZ8FvN3BZvNS5uhkJXDvc1zo89v5WQlykkWEmIYQJjta0Tqv8f7xq7uinfFkWzSReYue2+Knf9fYE6PTkFNZtzOOcrZN0axI2ZaFuuAebspoYpYgV0VgvZqYkmREiRuw6Wmt2CFFBaygKpNNsTaxkpjQlk1SfA41GjXbze9x+Tu6+gM1uwZMUIDXPAXPAY/jRWpteIVpEL43CiMIl1jMlyYwQMWDE4+P3b54yOwxTzJ2Tg3exwaByU+nJQRmKamu32WFFzKL0fDI7Uqje28UpLlxKZC7n9xn4fQauIR8blpRxZLgVjdQWFIlDkhkhYsBrR2pwjVPzJZ6tXFXC3vxG/Co4vNaclBi9MValWJ5eRNIFO+f2dnGB4TGTmLHUvdrL/e9bGeYIRTyQYSYhREQ9u+u42SFEVE5mCnOWZ3MwpeVSIpMo7BYrqwdLqHmzB2DKScxFf3zDKv72htuwyBCTmIAmvjaalGRGiCh3rKaVE3Xtkx8YR/Lz0ngjtd7sMCIu1WZnSU8RNad6ZnT+LSvn8eUP3B7iqER8UgTiaCBSkhkhotyvdh4zO4SIs9kTZzXOvLRcSvyZGBbNUIOHurqZJTIAvc4Rmrv6KS/IDmGEIh5Jz4wQImL6h0bYeSTxVjEpa/x8Y5zIDbZKTu7ooEePhOR6Jxs7eOr1o3zhwVtDcj0hYoUkM0JEsTeO1eH1J97mgZYE6JjZmF7OyVcuEOo1Rz2DUiJZTI0MMwkhwk5rzS9eS7whJgBLUvx0f48l3ZbE+Z29Ybn2hX5zdjMXsUVrJcNMQojw6exzMuLxk5bioKtvyOxwTNGXGZphl2iVn5RGry88r7EoOyMs1xXxR7YzEEKExY5D1fzdD1/EHzCwWhQBIwY3gpylvKxUztBpdhhhk2y1kV6fRC/hSWYWluSF5bpCRLP4ScuEiHHd/UP8/Y9eurT/UiImMgAly7PwqvicJ2RXFlb0F9NUG56NIJPtNu67fkVYri3iiwbZNVsIEXpHa1rxJeBk38slJ9k4mtJmdhhhs95TxpmqrrBd/+N3b6I4R4aZxFSouBpmip9XIkSM6+ofNjsE0y1aXoATj9lhhJwCrjfmcuZQ+BKZ6xaW8fG7NoXt+iK+BOvMqBnfoo30zAgRJZbOLUzYeTJzCrPIWpTCAUeL2aGEXEFSGhU9OZw+Eb55QAWZaXzlQ3dgsUTfh4yIXvG0N1P8vBIhYtz6xWU88sHEK3a2YksJVSsusCepgREVf5tpLvQXUHNi5lV9p6I0P5PC7PSwtiFENJNkRogocseGxWaHEFFKwZGU1lDXjYsuEehoO9vcid2aAJUGRchoZj7EFI3DTJLMCBFFfvLifrNDiCitYX1HaUQ+8M0ylOYOe0Vji7Kg4/kfUYSFgWXGt2gTfREJEUGGNtA6Oj4EntlxhKd3HDU7jIg7dbqDzYGKuE1oqpwdLLw9P6xtLCrNl54ZMS1aQ0CrGd+ijUwAFgmpz9vNr1sep8vTzsfmPYLf8FGWOs+UWDw+P99+ZhfPvn7ClPajQc0bnawoKGR4lY8G+swOJ+SODLeQn5KOe8Qfluvffd1itNYoFX0fMiJ6ReNw0UxJMiMS0raOX3F68AgA36n+MveVfpiy1HlorXm183nSbRlcl3MTNmWnz9tF08h5moZr8WkvGbYsMuzZFDiKmZe+BKua+Z9RS2c/X/j+HzjXFL8Vb6eqvWuQlZ0lNBTGXzJjaE35omxqTnSH/No2i4VzLV3jJjL+gEFDZy8jHj+F2ekUZqVJ0iPijiQzIiGcHTzO4oxVWJQFQxsc7z9w6TmFhXXZWwA43LeHF9qfBmB318sM+HoZDoy/cV+WPZf/veQbpNmmv5Kks8/Jz14+JInMZWprurAWKAIq/sacnMVu9AmNCvFsZ79h8Pz+0xTnZPDpe6/nfHsvrx6v4UhtK5lpyZxs6KCj7+3f4aLsdP7n/Tdx74alktQksOAE4PiZaSLJjIgbnoCbuuEzFCSVUJBUDIDf8POrlh9xoHcXdxS9h3cWv5+nm76Px3h7X5x3l/4JKdY0tNYc7d976fE2d+OkbQ74evEabtKYfjJz4HQTzpH4KxA3G3PLc2lT8bm5ZvVQF1tun0vLkUEG+twhv/5j2/bz270n6RqcuPjihf4hvvzENp55/Rg/+ewHsFnj5wNNTE8gjpYRSjIj4kKXp4N93TvY2fUHADblbuU9cz7K821PcqB3FwCvXvgdDcPV1A6dvuJcv+HH6R+gdug0Q/7BabfdM9xPjmP8CZ4+f/At48T5drTWVNW1s+9UA4fPxV+BuNlqaxsgucKGm/DMLTHbvpFG7MstLOkopKluIOTXnyyRuVxVQwe17d0sLSsMeRwi+l2sABwvJJkRMa/X08nXzzyCwdv7Gh3o3XUpiblIo69JZABeufAsv29/ioCe/gdorrWEv/inbVy/dD63X7eIZIed1q4B7HYrHT2DNHT0sbeqHqUUQ9ILMymny8PmoXJeT683O5Sw8WmD3koXjlYrXrd5e3El2a0UZkmhPREfJJkRMa19pJlfNP/gikRmulyBme2JZFcOTr44n/4BL9v2n2Xb/rMzjkG87dyRTjJvTmZQhX4oJlq0jQyycVk5546GfkLwVK2cW0JuRqpp7Quzxdecmfh5JSLh+AwvTzb+XxpdtRFvO99SQf9bm6irib/y+2ZLlOJv1ZldLL++kNQ0uyntf/T29aa0K6KHgZrxbSqUUvcopc4ppWqVUl8c4/kkpdQvRp/fr5SqHH3coZT6iVKqSil1XCm1dbK2JJkRMUlrzYvtv6DN3WRK+71GC0VlhiltxzvDgKE43Dn7agM+N29ZGulZN8zy6yM7byU9JYmbV8yPaJsiuoS7aJ5Sygp8D3gnsBz4E6XU8qsO+zjQp7VeCHwH+LfRxz8ZjFGvAu4EvqWUmjBfkWRGxJyRgIunmv4fu7peMC0GAwPXnLfIzpY/oVArK8nCiMOl2ePxGQFOJXWQmZUUuUa1RlZlC0NbZnybgk1Ardb6vNbaCzwD3H/VMfcDT4ze/zVwuwrWC1gOvAagte4E+oENEzUm78QipgR0gG+f+xKH+nabHQoGBlsfaqGkVMrIh1JmUbLZIUSc0+ehbGNWxNqrKMwhSnbxEPFrDtB82c8to4+NeYzW2g8MAHnAceA+pZRNKTUPuA4on6ixKSUzSqmG0bGrY0qpQ6OP/aNSqnX0sWNKqXvHOXfCMTMhpuOl9l/S7e0wO4xLegIt3PTumU0gFmNL1EJuPkvkVja998ZVWCyJ+e8sgkKwa3a+UurQZbdPhTC8xwkmP4eAfwf2wsSrPKazmulWrfXVU++/o7X+5ngnXDZmdudoYAeVUs9rra9dHyvEFLSNTF7ILtJ8yd1AmdlhxAW7zcKFzPgsmjcZr/KD0hDm2h9Wi+LOdYvC2oaIDVOdyDuObq31REM/rVzZm1I2+thYx7QopWxAFtCjg7v/fvbiQUqpvUD1RMGEe5hpKmNmQkxJrfMU1UMnTY2h2FhOsuXK5aw9gTbWro/gfIc4VjEnhzMqMbd3qHJ2sHxzEckp4a2YETA0Tlf8T7AWE7tYNG8WPTOTOQgsUkrNU0o5gA8Cz191zPPAQ6P3HwRe01prpVSqUioNQCl1J+CfrBNkqsmMBl5RSh2+qivpYaXUCaXU40qpnDHOm8qYmRCT0lrzXNvPZlTYbqaK/avIH9hEpjWPVEsGxb5V7H0+m6NPr8Fy9iZsNTeRay0BYOGN7ZAgS4rDqam1j/nkmh2Gad6yNLJgbXhf/2ffczNz8iM3P0ckptE5MA8DLwNngF9qrU8ppR5VSt03etiPgTylVC3wOeDiVJRC4IhS6gzwBeAjk7U31a8AN2mtW5VShcB2pdRZ4L+ArxF8B/8a8C3gY1O83jVGk6RPAVRUVMz0MiJOKaV4YM5D7O/ZyaG+3RGpReJN6uZ33y+npHQxuXlWTlV5YbTM/us7gsO3uQcrueG2Sl5+RQOyVHu2fH6DOR2ZnC/uNTsU0wxnesN27Y2Ly3nojgkXhYgEEu6ieVrrF4EXr3rsK5fddwPvG+O8BmDJdNqa0ivRWreO/rcT+C2wSWt9QWsd0FobwA8JDildbSpjZhfbeExrvUFrvaGgoGA6r0EkiAXpy3hnyfsj1l5voJ0Fi+y0twVGE5kxjukN8IdfB3AOSiITKg3ne8kncSvTnhnuJDU9PIX05uRlhuW6IgbNYogpGvd0mjSZUUqlKaUyLt4H7gJOKqVKLjvsAWCsyQxTGTMTYkr6vN18u/rLEa0Qu/7WxJyMaqZht5fFvvE37ox3PiNA5g1JZGaHdh5Wkt3KB29ZG9JritgV7EsObwXgSJrKMFMR8NvR5ZI24Cmt9Tal1M+UUmsJ/ps0AJ8GUEqVAj/SWt+rtfYrpS6OmVmBx7XWp8LwOkQCONq/jyF/6HcaHk+RZx3P/bc5peYTnd1tC77bRN97ZkRUD3VRvD6DJbZ8NGAfstJ2doC+3pnvVxUIaAqy0kIXpIh50djDMlOTJjNa6/PAmjEeH3NCjta6Dbj3sp+vGTMTYrqG/UPsuPBcRNsMuO34ZOslU1QdbGN5fgE5+alYcyy8kVyfcIlNh9tJB863H1gK89NyKRrOoPpgNz7f9IY2/YbBl3+6je/95QMMjXjpHx5hbuFY6zaEiD2ya7aICSnWVFKsaYzMcIfrmXDlnGb12rWcOBa+CZlifB3dTjq6nVSU5uBYYsU7i53R48X54V7O00vOjSksGyrgzKGuaZ3/1tkm3v+vT9Lc1U/AMHj0I3fzro3LwhStiGYXl2bHC9nOQMQEi7JwQ97tEW3TZQyxeINU9zWbfZEVr5JE5nJ93hGMXD2j+WN17T14/QEChubXe06EIToRK+JpArD0zIiYYejIrxg6uCMVkLEmM9laLSDVGq5xcKiZzXdWcHZH14z3WTpa18bXnt5BS/cAXQNDXL90Lh+7ayP5mTK3Jt5d3M4gXkgyI2LCsN/Jnu5XItpmpjWX7u7IFekTY+vpHpZkZhz7h5tYe1cpja/2E/DPLKN59s2qS/fPd/Sy7fA5fvrIByjLzw5VmCJKReOqpJmSYSYRE9JsGSxMj8zYfqGaT+tLN/LCfyxkeEiq+pqtu3+Y5RSaHUbUOuZsY8Ftoasa3Ot08ZFvPsOga+Yrp4SINElmREwY9PVzcvBwRNpqOljK+ToZWoomnTudrDFKJj8wQR0aamHp+tAVG+0bGuG7v9sTsuuJKKTja86MJDMiJmTYsliWEf6CX0mWZIalTl7UMbQmPzsF2f9qfO4CX0gLSj6//zSnmy6E7HoiukRgo8mIkmRGxASlFA+UPUR5ygJUGMZ5M9puoP53N7D7B6s5fVKWYkejNk8P188pISdJdigfywlnO8vvLCQzK4nUtNkXe/T6Azz8X89hGJJAxqt4SmZkArCISj4jwCvN5zjU1YLPCDAvMw+rUmyrqaDLncH7l/no9IWmmHSGNYcXfyMTfaOZzWqh2zJIQ38Xy/NKqerw4TVkP6yr7R9ughVQnppN6j47ruHZDZf2Ol18/Vc7+dIHbgtRhEKEhyQzIuq81HSWfzv2Gk1D/eMe82ZzGuvLcnD6+2bdXt+RlYBn1tcRE0tPcZCbk4ojyUpSig33sJ+6xp4Jz7HbLBgGlBRmUq2Cvw+nB9pYWzSXA+3tkQg7JjW7+rlhXSUn98x+mOg3e6t46PbrmJOfFYLIRLSIt6XZMswkokpVbzv/Y89vJkxkAE73ukkKwXrdDGsO+3bLqo1ImL80l3PXNVG1sp5DC2roXNnD4gX5JDtsWC3Xvqk67FaWby4gcO8wuWXJzAu8vaLJrd0omT8zLpuy0N0QmoKP/oDBz3cdDcm1RHTRWs34Fm2kZ0ZElZahqW8keborhaIcNatJjynO+STcpj+zlJ2RwtxlWbiy3BhKM2x1U9STw/EDHeOeoxQMFl45s7rTMkjnskHUMljgLyJwyEZX7xArVhdhccD+ghqqcDGifLxVXH3FuTXOC2wskd6Z8axPLeNsy/S2OpjICwfO8Ff33UiKQzZejSfxVGdGkhkRVeyWqXcW7mt38cG8VEaMyb+BZtnyGfB3X/N47bEUQCb8TlVKkp3KFVnsK7gyuWgo7CJFZV5RidaiFA67FbfXz4p3FHDQUXftBVVwVUWt/QL2661c17uAt/LevvbwBMN/Le4u7BaFTyaoXkNPPHo3bQMuN9UtXayZXxraCwvTaB1fezNJMiOiSoZ9eitVUqxZEyYzhfalHO3I4vV+L3+8uAJvwIrD6sdqHcbis7D7iCQyU7F8WSG61M/JlGb2qWs/KbWC1ZuLOf5WBxalyEhLQmsYuLWXbJ3GQcsYicxVfCpwRSIzmT6vi02llbzZ0jat15IIzh3tJNQ9jq8er5VkRkQtSWZEVFmSPb1Kr7sb53Dr3GyGjCbSrcWgrQQYwhXoJ8M6jx8eV8AIAI9XAVxctZQMGm68qZgze8YfHkl0hbnpFK9MZX9m7aSfjQfza1hzWyVNKd10q26hjvfJAAAgAElEQVTs2oZb+elQUx86nK7Tg63YlAX/TDcnilN5hen0XAjtJqkvHTrLJ+7eRGZqckivK8wTjXNfZkqSGRFVspNSmJOWRevw1D4Aa/s91PbbgPmXPZoE5BEcwJjgj1WBoWR570Qcmw3222qndGxAaY6k1V/62a/C3+tV4SjiuO4MezuxJi3dTk+I6911DQxzuukC1y+dG9oLC5PIaiYhwqbR2UeHazBEV5v8D9XSGT9/zKGmFBiMJntR2PFhVYpGZ/h6fWLVFmslTXUTrwacqe/+bg8en9RkihfxtJpJkhkRVb51fBeBCA0ZLCaf2rrQrfiIN1rD8G5Yc2o+GxsWmR3ONQJasywvz+wwooYCbrBVcmp3+LYgON3cyZ99+xe8ebohbG2IyIi37QxkmElElT0dDRFpx6GtWI6Dzy/DTBMZGHIzMORm1apis0MZkw/ZEPRyzVXh76k609zJw//1Wz5z7xZGvD6O1LXy7U+8m7zMtLC3LcR4JJkRUSXDnkS/dyTs7Swmn7ZeGaKYimSHjZNzG8wOY0wtrl4cFotsbUDwm3byRitFF/I5d7wrLHuYXWpLw/97Yd+ln/efa+bejUvD1p4IAw3xNG9ehplEVLmvcnlE2jlDJ6UFmRFpK9alJNtxRWAy70wM+EYoTc8wO4yoUTPUTVv+AA67NaLtFmanR7Q9ERoGasa3aCM9MyKqfHr5Fn5eczTsvTMBpTFWwXJPMZaAwt8ToLmlnwUr8xhJ8ZMyYicwbODPM7D7rJx8K3ErzZavzaCN8M3DmC2/zcXyvHxO91xbFDERDfrc2I3IvrUfONfEhkVlEW1TzI5GlmYLETbp9iRuKZnP842h2RF7IqfpDK7iBlQKUAbNanQlVcboDbjJqAx7LNHsRGaj2SFMqMczTGlWjtlhRA1PwE96SjKuocjNJzpQ3cxntEap+PlwFLFFhplE1NlSFPk6FloFb9c+AVZP4v6ZJNlt4/zDRJdBf/jnWcWKOalZDA9Fdljw2Pk2/uHJVzhY3Yw/IPOXYsPMVzJF42qmxH2XFlGrc2Ro8oMiZKNRRtWhxCyXn5GaRFlpFvk6+udDNA73cMMcKbUP0DDcR3lldsTbfX7/aT753V/zk+0HI962mBmtZ36LNjLMJKKKzwjwSss5s8O4JMWbmLsEJztsuG8d4qQldurwDAekd+ai5PTITgC+3Pf+sJeS3Az+aFNkJvOLmYunOTPSMyOiyv+t2sOpvuiZbHokuZVF8/LNDiPi3F4/WTrV7DCmpX64m9K06O9FigSrw7xkBuDRp3bQ63SZGoOYWLCHRSoACxFyu9vP85+n3jQ7jCsMKS8n53WyMMESmtVri2mz9JodxrT4jACV2bJMG6Apu5e8giuT0ezcZJZfP72NXGfK6w/w2vEr9/TyBQIAuDxeOvujZyhZxAdJZkRUMLTmRG/0LX9OwsZ6dykpGfbgZNhR88pzWXFDMYW50d0TkJbsYPnSQlbfUsjcu9NZtXrySr4rVxSxv6yagIrCgfFJdHudWKLvS2PEXXAPUb+oh7K7M1lwdy7ld2fiuM7KW5ZGVm4tQqNZsi6fotLw/f7+6OUD1LX3AMFE5v3/8iT1Hb04XR7u/cqP+cvv/Ya9Z6J7pVy8i6cJwDJnRkSFo92tfPv462aHcQ2fDqAGoepkOw67lblb82i19FOlL3C9u4LO3uj9hjm/IpezqxvpVm/XXyksz2S5t5ChQS89vS6G3VeuesnOSOF8ZftU9uiMSs2uXpKtabj8ss0BwGnntUO2e70NLLgzj9OeCxTkp6PawzOhs6PPyV99/zk2LS5n9bwSOgeG+Jsf/4Gi7HT8hsHeM43sPdPIA1tW8oX33UqyQz6OIi0aJ/LOlPz2iKjw2/qqaNyYGUNp3iho4B2b5tGU0c9R3Rp8QkF1SjcVJdk0tYdnh+LZslot1/SudFoG6VwUrKVj1YqV7gposOJ2+UlNs+Oe7+aMJXoTtKkoTkvj/EB0/j+JFnXDwR6TYX8vW7bM5dTezrC009YzyHP7TvHcvmDdqLr2nku9NRf9dt9JzjR3snX1fP7i3i1hiUOMLRrnvsyUJDPCdNX9Xfyy7rjZYYxPwevp9VydbXXg5MJSJzfNq+TU3g5TQpuIniQ9DCjN8ZRGWBahgCJkxO83O4SYckg1U1aQQ0+XeRN2z7Z0cralk6VlhWxdvcC0OBKJJjon8s6UzJkRpvt94yn8OjYLbWkFu5MbWLW+xOxQrhWNXV0RUJiRmMvpZ8qnDQJrAmaHAcA//vwVWQUlZkSSGWGqs/2d7GqrMzuMWXs9q55lNxWF/LpJdhuWMUrElxdnk5+dNuG5Flv8fOuajm7PEHaZBTwtbiM6erP6h938cNt+s8NIGHoWt2gjw0zCNKd6O3j3tsfNDiM0FLxpb+TmLfM4tS80q7Ky0pPJ3ZBOn8XFnI7gDt9DhV7s2sIxSztaaba45o65CWZFaTZNS6Jv6CsSer3DbCyZy97W6FsdF2nL04twKCunhjrwjdP7OTc1h9LhTE4Rnnkz0/Wr3Sd46I4NFOfIMvuw0jJnRoiQeLOjwewQQkvB7uR65tyWycLhPGqOduH2zvwb75w12eyxNABwvnjsmi9vpNRzy5Z51B3pZsQTXMGTZLfhX+Omz5K43fXH+hvJS86ix524VYE3p1VwdnsXWkO6LZm8glSy8pNprOknMzuJnMIUPMMBGuv66MNtdriX+A2Dn712mP/93q1mhxL/orGLZYYkmRER5zcMHjvzFv9+4g2zQwk9Ba0M0po2yMYtZdS93j3pKfPK80jNsGNxqOCbiwJvhsEee8OU2nsjpZ7KG3OY35nHSImLM45W+i1x9C41A/lJGTT3uojZNeYhYDEUhtYoFAG/prN9mM72YQC6O1x0dwSTXRWF/0a/3H2CP79zI/mZEw+lCnHRlJIZpVQD4AQCgF9rveGy5x4BvgkUaK2veedWSn0DeBfB+Tnbgf+ldTytbhfT8UrzOf7+4Da63MNmhxJ2HdYh8rLTUOsVBd50dKfB2eq3u/KTHTbmbc7jTfvsC4c10EdDYR/5aWAE5M8rLymdVuUhkf8p9o00sn7lHGpPxlYlZwCfP8Bz+07xibs3mR1KXEvUYaZbr05WlFLlwF1A01gnKKVuAG4EVo8+tAd4B7Br2pGKmBYwDL57cg//79SbBBIkl+1gkIL16bQxSLWjG8pg1ZxiUhvtJKVaaSoc4E1CVwF1fmYubf4OxpgvnFBWpFdwqL2dWOmVWdeZTmuGl54kL0kBK4v6UziR50SHYBLzUKkXToYgSBM8/soB3r15OUXZ0V1lO5bF01vxbIeZvgN8HvjdOM9rIBlwEHxnsQPRs4ugCLsOl5NtzWc53NXCC01nzA4nonwYtDF4xWNVqgMqQ9+WAnJT7bQ7Q3/tWJJhT+bQhehOZJL9FlIDVkqGHcw9bdDwyyqyvX5yrRbQmpwlxeR9OodCl4PSdgtJF3w0rbFRlTf9YoZeHR1LrmfC5fHx8uFzfPT268wOJS5pErNnRgOvKKU08AOt9WNKqfuBVq31cTXOV0Gt9T6l1E7g4rvLf2qtE+sTLYE5fR6O9bTy6OHtZocS9zYVlXHCed7sMExXkZpHZ3+X2WFM6Ma6NJq/cwQfcPlWjEYguNqo7Uw7uX/djp+3u7zz9ubA301/s9MO9yAr1pRQc3zyuVvRqKpBVqSFjSZYKCtOTDWZuUlr3aqUKgS2K6XOAl8iOMQ0LqXUQoL1RctGH9qulLpZa717jGM/BXwKoKKiYqrxiyjV53Fx9ws/pDsB5sZEg9O9XSzJLeXcUJvZoZjKQQgK5hmaze2ZZLzUjTXFhlqSybYNk/8er+pOozrbhcc2cd99cuv0943qax8gz1NCT9LY51oN2NyaSapTY3caWAZ9GP1eDI8HzwbvmOfEgoyUJLNDEDFiSsmM1sENabTWnUqp3xKc9zIPuNgrUwYcUUpt0lpfXtziAeAtrfUQgFLqJWALcE0yo7V+DHgMYMOGDXE0kpeYft9wWhKZCHL6PJztDjAvt4AGV3T3TIRT98jslxi/a3cqNU8foW/0Z8ubipvz1nG2xMOINcCQ1c+7dqWw6xYvw7a3a7eU7XLhONpG0R8t4OA6P11JHi6fwDTfmcLSXT5qXqiadkxGwGDDmST6CpPxWzV9qQEqO2x0/9dJipYW0XdfPtlNfmp/du22IHmLpt+jEy2k1kx4JdScGaVUGmDRWjtH798FPKq1LrzsmAZgwxirmZqATyql/pXgMNM7gH8PVfAiOvW4h/nG8Z1mh5Fw3AE/XU4/SXYbniip6BpphjH2u3OG14rTMfn8EasBPa9fuZ7BMDR9361i7cpS+ht6yVteRM3rVVxfU477nQVkHR+BPAfYPDh7hnA+cZycJ2BhWQ4nP1/EvMEUcgYU+net1FbPfMpg/fePXrpvBwKLCvG4vDQdaYYjzaj8sT/4+4nNrUIAlpQVmB1CfEukZAYoAn472gNjA57SWm8b72Cl1AbgL7TWnwB+DdwGVBH8Z9umtf79rKMWUS03KZV7K5bx6/MnzA4l4XS7h9mYXcpJ55gLDONeks0a/K9fked1kOa3sniPD3/3CMb6HPryoKpwCI/12nfxDK+VW/bYqWm7dsdt74iPxoPBlWcDrwdnWTcfbYajzYzXD9bT0kfZ5wZx+wOEY+ZHR82VFXsHu8ee/Z2z4zwlty7iiB7BiLEpEtFYAyd+xNdGk5MmM1rr88CaSY6pvOz+IeATo/cDwKdnF6KINUopFmfJNyoz5CWl0uKOzcmeoVB53sLcHYqm3fV43cH5JTUXn9xbD8DKvHQKVhWjl2RwaLmHniQfd51Ip+3xk9S4pz+fZSIBv/mribqbe+Gn+7nhpsXsmZ8MwCZS8FrgmDFaIVlrxlvTbyVYYMwMhTmyLDusEqxnRohpqx5I3HkbZlmQmYcjyU+D69qehUSQ5rHS+a0qBjoHJzzO2TOEc1ct7ILSVAfz05Jo7B4i3mt51u6p5oaKjQwlKfqfP4Xb5SHlfStY77czsOc8nbdX0hl4O5krttpZWOPE0+/izHX5DJmws/3cwpyItylikyQzIuS8gQDP1cdopa4YkmS1sa6gGENrUAZVzkZI3O2Y8FgNUrKSJ01mrjjH5cXjit3VPtPV+dJp3MMe/F4/jmQ7a072U3ekAYC5B1OYCyTnpaNLMmjfdora/uAv1PxhD+1by+kKRG4ullLgdHlIcYRghZq4lmw0KcTEHFYrc9KyaBzqm/xgMWOegJ+BgDOhVy9dzm/TtP51Lrn/OMJgAvS0zMRQ39srDL1uHw2jiQxA88mWMc+Zv3kBjctz6ApENunTGr7x7C6++fE/imi7CSWO/kQsZgcg4pM1BKXYxeQyrKlmhxBV2jJHsHxuHnlfW4VFfgdnLTMvnTPLsmiNcCIDwRozH79rY8TbTSxqFrfoIsmMCDlPwE+ve8TsMBJChyf2NhEMtxNlA3gdGkeKw+xQYt5gzxDLq50RL0his1r4hw/dybLyooi2K2KXJDMi5CxKYbPIr1a4FSSn0eVN8M2YxqI12c/04x72mB1JzCtZXEzTkqxxVzqFywNbVnLHukURbTMh6VncpkApdY9S6pxSqlYp9cUxnk9SSv1i9Pn9SqnK0cftSqknlFJVSqkzSqm/nawt+cQRE9rTUU/94Pjf/usGujnTd2W9C7vFyvY/+hTr8+eEO7yEtSyngMpsqY46lptP5AYLyYlZs1gtEV/FlJ+Zyhfed2tE20xYYUxmlFJW4HvAO4HlwJ8opZZfddjHgT6t9UKCG1f/2+jj7wOStNargOuAT19MdMYjyYwYk88I8JWD2/joa0/zzhd/yP85tgunL/hN128YnB/swRsI8N5Xfsq3T7wOgNYaz+hqhwx7MmvySk2LP14tzylkeUE2Dd7WhC2MN5ElnRm0fFdW0oVK65k2kp84yo3+yO2RtKy8CJtVPprC7uJGkzO9TW4TUKu1Pq+19gLPAPdfdcz9wBOj938N3K6CFXo1kKaUsgEpgBeYcJmirGYS1zjc1cLXDm/nRG+wbqnXCPBfp/eyo7Uam7LQ5xmhY8TJnLQsBn1uspNS+F9vPse5/k5ahgd4fOsH2NFSw0/OHTT5lcS++Zm5FKaloNEM+oY572pBJc5K4mnJ8thJ+U4rLm9ibuUQLlprbJ5ARD4tPvOuLTx0+4bwNySAsE+FmgNc3kXaAmwe7xittV8pNQDkEUxs7gfagVTgs1rrCScISjITQ7TWqDCOXfsNg/97cjffO7U3WLvkKjUDV1aWbR0eAODZq7Yt+OCOJ8MWYyJZnVdMnbuZ9sG3/19EeOpC7NCadT/X1LVIOYBwaMu0QZhqzCgF71g5n62rF/KeLSvC0oYIi3yl1KHLfn5sdMPoUNhEsPB0KZAD7FZK7RjdkWBMkszEiG3NZ/nf+/5AQUo68zNy+dYN7ybLkRKy63sDAT6z+1l2ttWG7Jpi5uZn5tLq68CIp0IQYbSoJ4O6nafMDiMuVa6v5K3A7HcjH8/f/PE7+NNb14ft+mICs3t76dZaT9SN1gqUX/Zz2ehjYx3TMjqklAX0AB8iuJejD+hUSr0JbADGTWZkYDLK+Q2D/zy5h7/c/RuG/V4anL281lbLoa6xC1xNV9NQH185uI0PvfqkJDJRxGMZwmVCbY9YVVYt38vCRS0rDNu11y0o5UNb14Xt+mIS4Z0zcxBYpJSap5RyAB8Enr/qmOeBh0bvPwi8poPVLpsIblKNUioNuB44O1Fj8g4QxbTW/OXuZ9nRWnPNc185uI2bi+fjsFqnfc2fVh+i3tnL/Iw8/vXYa5cm7YroUZaST69vyOwwYob/SGLuRxVuyWlJnLB7IQQLmpQCu9WK1x8gMzWJD9+6nvuvXxHWoXMxMRXGjt/ROTAPAy8T3K/0ca31KaXUo8AhrfXzwI+BnymlaoFeggkPBFdB/UQpdYpghb6faK1PXNvK2ySZiWK/rT85ZiID0O5y8vcHt/HoxrtpGuojJymV/OS0Ca/X4x7mywde4pWW6nCEK0KkMCWdVneP2WHEjFSvlZYjjWaHEZfyHlxDgzG7IabNSyr4wC1r2LJ0LskOGy8dOkduRgobF5djlXpU5plGvZgZN6H1i8CLVz32lcvuuwkuw776vKGxHp+IJDNRqmtkiK8d2T7hMb86f5zfN57CHfCTYU/iTxau44vrbhvz2H8/8QaPnz3AkF+GLqLd/KxsjjvHHRoWV1nRnEmHL2B2GHHpHDN/v0hLdvC5B27hj29YeUXvy70bl4YiNCGuIGlxlHr08HYGvJN/I3KPDhE5fR6erDnM4BjnPFN7lO+delMSmRjxVkcLy1IrzQ4jZuhw9pUnuPVNbhbYRmvMTHMd75/dsYH33rhKhpGi1izmy0ThbtvSMxOFXmo6ywtNZ6Z9nsvv4z0v/zfX5c/h9rJFLM4qoDw9mx+cfouA7CAcU450tbGpaB5VQ/VmhxL1Ds3r4x23zOf8G9KbFWrVO89S1jmHdR4/TTfNoccYe35dssPGh29dzx1rF5GTEdz8tCg7PZKhipmIo48FSWZM1O4aZNjnZdjnZUFWHs/UHkMpxY/P7J/xNRucvTQ4e3m2voq85FQWZubTOCS1N2KRfKOdIqU4//4k7Ptt+DwymT3UWk4FV9OW3DyXHsb+9/3+w+9l7Xyp+B1zJJkRs+UJ+Lnt999Ha43XCJCTlEKfJ7Q7Tfe4XfS4peR9LEqx2mjzdJkdRsxoznJx+4eXU/3jCRc8iGmyWC0opQj4A3jH+OSzWS18/sGtrJlXYkJ0s+f3B/D5AtTUXWD1yvLJTxBRS5IZk3gCfv527W1868TreI1AyBMZEdtGAn4yyKUb2RV7qnbfNMiK7bl0N01Y9VxMomxZKRa7la4NxVwI+NjY4Yc0B/uvqntUXpDN377/NrYsrYjZXsTX95yjq8vJ3Ipcs0Mxh/TMiNnKdCTz0SUbGAn4aBrq45d1x2Vei7hCZrKdWSwmSThem8b6iXL4iiQzs9FRd4GkP72Oen9wMcHrRRa4anhp3YJSvvnxPyIvc+JyENHutncsAxJ0SPfiRpNxQpIZk316+RZ8RoA32usv7XUkRH5yGh0e+VCerkPz+rn1zkXUbh+7PpN4mzXZgjY0hjf4JWrBfcXkrE5F3T5IXw3U7Rn7vBuXV/KdT74bhz32Pz4SMom5TDwtBJSl2SZz+b188vVfSSIjrrAwO4cLHvmdmIk9H/Kx8M5FZocR1Yo3ZLPxhUKWPFhKWlESGWUpWD7XSfft1XTRQfayBuaU2snIuPIj4vMPbuU/P/OeqEpkPF4/epq92h6vn+2vncLt9oUpqhihZ3GLMpLMmMjl9/LQa8/wRrssKRVXanE6scqf54z4bJpdH/aw+MHlZocSlZQVir9l0GFpQX+6k9Jf+Cj7uR+ffntMs9vfRuU9h1i7zoGyaAqy0vjJZ9/Ph7auC2lvRmNTN+dqOmZ8/qu7TnP/+77Lo//6PFWnWvD5Aux9q5bfv3iMgcER3jpQN2ai8+3vvsw/f+MPfPmrz3L0uCySiAfRk14nIJuy0u0eNjsMEYXKMjLoccpqppnSFsWr9w1xe9ZqWeF0FR0A2/Z81O19uI3gwgPfGN+0AzpAYMFe7lqSw2fK/o7KvNBtONnW3sezvzvM8y8cY82qcj715+9g8aLiaV8nJcWB2+Nj5xtn2fnGWRwOG15vcH7PD//7DYaG3Lz73rV89uG7rjjvjluXM7cij8cef52srFTWrakIyesS5pFkxkQOq5VbSubzs5rDZociosxbHS2sK6gkoDzUDLebHU5sUopXtw7wjoy11P/H8WkPRcSzQ/90njX983G+twGDibeCsFtsIUtkOi4M8PSv9vOHl44TCAR3rzx0pIHjVc382YdvYsvmBfT3D6OUYmTEy6qV5bx1oI6K8jzmVxbQ1T3I177+e/71qw+SlZVCa9uVNbQuJjIAg4PBRO2tA3UMOkfIzEi59NzG6+ax8bp5FORnML+yICSvLRbF05wZFY1/4Bs2bNCHDh0yO4yI8AT8fPi1pzjc1WJ2KCIKKWB9QSl2q6Ld20OnZ9DskGLS9dU5XPh6FX7Zw4mF7ymh+NN2WpPr0VOY/LC14E4+WPHRGbentebEyRae/d0hDh1uwDUy9SV6pSXZtLX3k56exEMfupGfPLkHl8vLkkXFuFxemlunNkn+zttW8MVH7sVqjd6hW6XUYa31hki1l1RRruc88tkZn1//149ENN7JSM+MyZKsNn5w84O895UnpFKvuIYGDne1UZSSjnbIOu2ZemtxH2u/uoLhfz6He9hjdjimyShLIeOzLlqMqe/KPielbEZtNTb38Myv9nPqTCtNzTNbmdfW3g/A0JCH7z322qXHpzvP5uJk389/9p1kZCTPKJa4E6UTeWdKkpkokJucyrN3PcSJ3naOdrdSN9jNi01nzQ5LRInrS0o5N9SK25/gKy9m6Vj5AEseXUTGvzTg7BkyOxxTrHh4Dh3G1N9bcuy5bM67cVptaK351W8O8thPXsfvN6YbYtjs3lvNha5B7n/XWq7ftIC8XNk7Kp5IMhMlcpNT2Vq6gK2lCwBoHurnl3XH+E19Fe0uqQKbqIpTM6gdbsNtSCITCucKnZR/tZy8r3fQ05JYPaGlm3Pp3Dz1+jsWrHxqwf/EYUma8jkej48v/eOzHD7aOJMQw666poP/8+/beOC+9fyvv7zT7HDMF0c9M9E7gJjgytOzeWTNVraWLjQ7FGGiDpeTTHJJtTrMDiVuNGe5yH4gsVavWByK4m8Yk072vZzNYqXJVY/LP7UVl1prvv6tF6M2kbncueoOtNYYRhx9ms+A0jO/RRtJZqLcwsy8MR+/Ln9m49gi9pwf7GVB6vSXrYrxWTsSZ3dte4aVG5+roNfontZ5XsPL001P8IUTf8VP6r9PtfPMmCvC3G4fO984w59+7DF2vhEbw+Onz7bxz9/4A2erE3ylYBwVzZNhpijX7XZhUQrjsjeRd1Us47s3voenao/y9we3mRidiBSr/KmGlK8lMeo7ZZSlsPKJbJotdTO+hk/72N/7Jvt736QwqYhFjge4s2w1xakZDA97ePiRJ6lvmF6iFA127DzNwvmFLF9aanYoIgTkHTLKfXDhWp5rqOKe8qVowNAGj6zZilKKDyxYS9NQH43OPgJac6irmQGve9JrZtqTuadiCb+sOx7+FyBCoteduCtwwqG/sd/sEMJPaVY/nkerpSFklwz45vAPJ17nq4ff4B0lCyg6ao/JROailSvmmB2CuaKwh2WmJJmJcoUp6Tx/z8fIS752d1qbxcLfrrv90s8vNJ7mr958bsLrzU3P4YvrbmNBZp4kMzHkXH8Xm4rmccJZT4LvjTdryT4LfW3xn8xs+foiWu2hG/YpcSziiSoXEOwp3tlWyzuyQjj3SDHtD9d5t5WDTRFw+mna1zbtJouLsqZ9TryI1rkvMyXJTJRLstpIsk7tf9MdZYu5s2wx21uq2VxYwcGu5kvDU+vy5vCl9bdzXUFwrk2jM7FWcsSDAxdaWZyfR/PI1GuEiGuVD6Qyef9l7PP3OCi2r0IpP06jjZHAEAE9s6KB2fZ8nqtOgssmEGfbk+l+ZXY7u6dkJVF4awmNhpNOl4vC1FTme9M5v+3KScT2FBvKasE7FKy1pIH5d5SzO3ABfJCUZmXDe+aiuv10n+tjqMs1adsL5hfK8mwdP9+MJJmJI0lWG1/dcDdfXn875WnZfOqNX9M81E+WI5ln7vjwFRvEXaw47LBY8RpSFTVWOIxUQJKZ2cjrsdNqdhAR0H/ewktnR0Z/KsKuSliYncyibBse6zECemqToB3Kwcn2CgY8I1c8Pt+WS9o6C543fHiHx7+Wxa5ISrcz0ndl0cf0vBRybinizf63e1RanE5acHLz1jLcPW76Ggex2LzTQ08AACAASURBVCw4bs2jdrCP1ReyuHCulzn3lrG7/+3Ju55AgDcH2sEOWdclMfd0Jr1NE1fLHhhw0dzSS0X52IssEkKi9cwopRoAJ8G03H95CWOl1CPAN4ECrfU1g6dKqQrgR0A5wX+6e7XWDbOOXIypODXj0v0f3PIgFqUY9nmv2en2gXkrubdiKZ/Z/Syvy67dMcNmkQWIs5XaGT2F3CJH4dOaM30jnOmDjyxbwmCgieHAxDWsrMpKv3M1p3uunTB9ZKQNCsDyoGJ9cilpA1aanmsn4DZIzrJTdEM+KtfCPlsLc1NSsT0RwD8S/OKUmpNE/5YUzvaPPTS0W3VCPtgKLaQ7HPT3BjddPVLgZMHCAvb2jb0KyWaxMPe0mjSRAejpHbpivyYR26bTM3Pr1cmKUqocuAuYaA/1nwL/rLXerpRKBxLxncQUltEEJs1+bY0SpRQ+bdDgnF03sYgsp9dLYVKm7NE0G23xuy3EvBvnYVyXjX0gwEiBFRgZ87ifnfGxMnchxTlHJ7yexbOePa0TV0s2tObQSCvZacmseVcJznw/df5eqn2j+81pqHX1sOShAsq96fj6Ff146eibvIfRbxj0u91X/Hyub/z3rOK0NMBHyap82qsmnpisNTz9q/185pO3ThpHvJI5M2/7DvB54HdjPamUWg7YtNbbAbTWiVlDPIr4DT+dni7ODzWwrW0/11eM0Hja7KjEVNUN9pDtSGZFbjmnnM1mhxOTRprit6J2zz1ZHCmZSqKrKEy1Xvqp0FFGv6uYlJTzDPiCyUKuZT3P1E/9Lbvf5+b1tKbx8ifOubo4p7vIdGUx5AlPQtnidNKyABRu1i/J5cK5ib+s7d5bzcceupkkR4LOuEjAZEYDryilNPADrfVjSqn7gVat9fGrhzAusxjoV0r9BpgH7AC+qPX/Z++9w+O66vz/17l3eh/13izL3ZZ74hY7dpyEZFOWhLRNgUD4bgiQ0Jb23aX82F1Yyi5fyhIIsJBkkxAIBNK7093i3otsSbZ6b1PP74+RZdlWGUkzujOj+3oePZ5y7r1vWTP3vu85nzLOKDSdcVPfV8/rDW/yZtO7tAfaB17PMxdz0xwDQhp4bJ+fSEqBTiJT7knnaLfeZX1cSEnzsdSMOcqfl8deT/Qp/Efa/azIXcjpbpXj3ZJ36zq4fXY2HbSSaSrg4f7MpVijTMI5RgL2Mif0mxkJFF+Ui2o1IMzKQIDxqdNtHDlSz5zZUzBFe4pmM62SUtYKIbKAl4QQB4CvElliGm3/q4GFRJaiHgfuAh46f6AQ4h7gHoCioqlVajxeNPqaeKnuVdoCbWxu2TZkJsMpX+RLnW8p6y/ON9kqdaJFAMtz89nRrqdnj5f0Pgu9XamTy5Q7M4f3HrAjERwVYaQS/YzHyU4fgyepLKqRrbXpZJiy6DCrGEUDgRjfdy6yFbHD1xjTfQ5Hqy0SlJw3P5O6Usk7HRET6xUWvFYjvt4ApZcU8H7baeYwBc1MihGVmZFS1vb/2yCEeAq4hMhMy5lZmQJguxBimZRycG/2GmCHlPIYgBDiz8BFDGFmpJQPAg8CLFmyRL+kTpCDnYf58aGf0RGMbkq93neSNMs0mnr1hoaJiioUqnrqdCMzAfJazaRShZmO0+2Ywy66jCEmOotSas1id/1Zo1Hk8GA3qxxsb5igyrMYw5O3nHOovYVlV5fwbm8dwY6zoZqtfX24NnpwqQbeam3g8AfdVORmsrKk6IJEiZQnha60o6ZGCCHsQgjnmcdEZmO2SCmzpJQlUsoSIqZl0XlGBmAL4BFCZPY/vxTQIzQmgb/U/i1qIwMQlEFmpFniqEhnogRlmHxrhtYykhpPozr6oPPIrchh2h2LSS/wxkHRxOhu72XJkQsLao6Fxd5i8ozp7G4617Sc7Gpjf3MzFa6sCe1/MFt9VcwvyI7Z/kbCFwrxZvcpguELc05OdLSzvz8Aub6rm7ue+BO3PvoHAqEpFgExxXozZQNP9TtWA/ColHLYhkBCiCXA/5FSflxKGRJCfAF4RUR2sA34ZQx06wyDPxzgveb3MSrGMW/rclRhM2TSE4x8+dMsBoIhSU8wRJbNxKnu1M0CSQaWZxewu+O4HtY0AUx10V2s0gvT8K4s5kipyiazD/CzOHM6/GBzfAWOEUVVaPOO/8qyNL2Yd2vPpEcP/cEyj+NcMhwhwnRYush1OTjdkVj5IFtqamnv6yPDPjFzmExMqZiZ/iWiBaOMKRn0eCvw8UHPXwLmj1+izmhsb92Bw+Bga8s23mp6j84xzMgMpiPYzrpyBZNioS/UTVewC0VEJu8yTbk8uS92JzWd6PCYLJR70jnc1oxQJDKVzj4aEKodvjKsK8NJ9upSaqZbeM/aAyIInC0Gt83Zy4euncfhv+yeBKVRIiXG4Pjc7QxXFu+fGr0FwM6mOioz89jVOvZ2AUPRFuqhPCMn4cwMwJ66BtZOK9Vahs44mKL5aKlDo6+JR048TkOMguraAue2OQjLyCxNo/8064vm8lZtJ76QfkGdLNr8fYSlxGfoYEd7hx4vM0E6q9rPeW51WChYXUbjLAfbHL2EFUkkt3jo/+g3FijM2+aluSYx2oGEw5L0qnAkanEMuIwWGjt9UQX8L8nKZWdLxMhYVQN5Ng9HO8feXLLYnIaKgsfnYGv10EXvtObrL7zM51avoCw9jcq8XK3l6IwB3cwkOTbVRmcw/nc4QRkkaNzBkhIosJTz9EHoDer1DyeDvS0NzPAUUROoozekL/WNFzUETSdbMJgMFK8oo2u+ly2eXnYNGJjR6VbC+G+ejvLDLYQTJPVPtIztMzHNmUHQr3C0d3RDZjUYCcowxQ4vfhkkGBTYVPOYNc6x5nH0aAf+UAi4sJpwolDX2cWXnn2RFcWF/O7mG7SWE38S4yMcE3Qzk8SEZIinap+mNxTdiThW1PQdoTJrAYdb++gJhPpjbCQVXhvzs1RQWwkH0/jToQ70AI+J4wsF2d1cx7LcPHZ1VGktJylREMw35WG5J5utGT72q2Fg9GaEQ7Hd0csVty7k6MPbYytyjOSVZeHJcOLPMoL0Ec203WJvMe+friXa72VvMMCOxnoAzKqKLxQiz+7Eo1ppi/K8Y1NMNNb6+o1McvDOiWoe27GbmyvnaS0lfkzROjM6CYQ/HGBz81aeqP4jrQFtEk3TXdWYbB1kG2cihI+OUD0dweOcHggzqGZl/gLerk3daquTydKcXN3IjINp9kycQReHTnbwbldnJJ0hBjw/zc8Vl1Rw9I1DA695s1x0d/Ti7wugGhRCwTAls/NRZBizw0rQ58doNlJ3tI5QIIjBbMTutnHqZCvBQPQXervLSm6Rl4PvHaIa4FWY+58XsydnZHOWZ3ONycicj1OxsMiUSc3xDoK9RpYX57LFd5zF1mI66OVgb/0F2zgUMzNlHtu7z090TXy+8+rrXDN7JjZTCscK6mZGR0seP/kkL9a/oqmG1v6S57X+PcOOyXE3kdPqpK5HXxqZCDM9mRzuTswYg0Qk3+ohW6RRVdPD3qM9QByKtAnBW2usrC5YRN2zByiZkcfeTXtQVIXSOUV0NLaTVpiFDAY4+N7hEXc1e81cenv81ByuIxwaeul25qJiFFUhFIaGo6c4+N6hc95PawJyRpacY3FzMsrltAuQEKiDLf6zQcBbjpzGZXGzra8ei8FAuTsPU5pkX+/pAb80y5zLtkPJZ2QAfMEQBjXFG7vqZkZHK547/SIv1b+qtYyoqPPVsqa0jCf2aq0kubGaoa9LN4QjkWF2UGTIpL4+wNGj7Rxl7AGqY6VLDfPc9DAL7prJzm9vGnj9yNYjADSciM5E7du0B6vTSlgOXwNHUQS7Xxs6i6p0dTmvzu5m1BkXOf4Lc6bZTu8QMUIdfZH2CX3BIMeaW6EZKjLz8brM+NUAIpC8ZmB9eRkmdex1iXS0IXk/aVOQZl8Lj558ApkkdtogDJxuc2ktI+k52tJBoTVdaxkJh9NgptJRwjR/MbX7BO/sauZo/eTHafkNEz9exfKKgccOj43imXnMWlo28Nq+rVUs2FA55LbV7x1nSbVjyPdyu4yoIVDC4A+OP2al0d/NrLzM0QcCRxpb2HL0NLsPN7P1eHLOKCpC8PX1a7WWEVcEkZiZ8f4kGvrMTIxo6Gsk05yBEAIpJce6j9Pka2Z5+tKYHSPdnMY/zfwc/3XoZ/SFE7u/TIF5GkdbHGyti6aDr85IdAR8dDf7sdvVmPfKSTbMioEZ9lz8HQb2Hm7hvfCZrsjaBZrXWoJkKWJC2U3NNc3k5rtxpjs5ubea6qZWZl40A4vdTF+3j7K5BRx4Z/+Q2wYDIfz/sZsZ/zKHkm0BZEMvlDgQgTDHfvsBBXke2us6KLjFyI61Z7dTQ5LV/1mPyW0BIWi8OpsPsoc/rxyjcUzF7sIyAa94UZJus5LlmALF85L3T3QBupmJAfV9DXxp59dJM3kpsRdztOs4rYFWbKqNtkA7G7PXx6Tnh5SS2t5TBGTi9k/yUkm3H95v9FPVoQf/xgKH0cyMdA/7Oqu1lqIZBVYvXr+XvVWtbPa3j77BJNKhhlkwO5/aPePvZF5z4MJtd7++B4PJwIzlFex7c+QuMD1tPaT94AiHqi5cXms6ESnb3/jyMWYsmMVBb2RpyCxVWk8009MRiaMp7PRRcncBVc6hlzSbAz1My8pIyGJ3saaxu4d3T1SzpqxEaynxI0FnWMaLbmZiwCMnHidMmCZ/M03+5oHXe0I9PHziMeyqnVWZF5+zTSAcwB8O0OhrJM2UhsvopD3QgUEYsBtsAATDQcJIDELltYZNvFz/GjW9tZP6u40FgeC9U716s8oYYRCQYXFgt0nNjEyx3cqcdCvPn2xBq6pCBVYvzcdVjnTHPw5mPKQFFOoPxmc5JegPjmpkAELBEI1DGJnBtNS0UPZUA0fvdBNUoUcJkf+ReRz+VaRFQ/WOk1g/V8uGxcUcuzWXYy7fBfvY01tHrsvJ6Slwo+Kx6r3qkgndzEyQvpCP6lEMxv9UPcKx7uMc6TrG2qzVnOyuYWf7bpp8Z08+eZYcTvXV4TQ4MCkmMs0ZVHWfwGFwMM1RyvstW+P9q0wYieSSIjN/PKibmYkikFwz3QUKPFfdMvoGccBjMrIwy8DJ3l2sKXDhNHj5a1WQyVzSybd6aKky0Np94YU1UWgxhll6+1IO//o9raWMyrFNh1lWnUnN58uZuyM0YGTOEAyEOPHeMWa4LRy7xXbB9j1hP8a+xP1bxJJNx6qYnztKiliyo8/M6EBk2ee3VQ+fY0qGoi/cN5CBdPx41ZBjTvVF0hfPVPNt9kcuYH1+H00tzUNuk2jkW0p5Ym8neqG8iXPTbCPVvp2kqxkU2dM42T2+Am/jYUGaG6MqMJuOcrI3sgTREezAqJhZmpnNzuYO/EN0Io41eVYPbSdMtHQldnwYwKYZCvmqMmxqdSLReLyRzG/6ONw4fDxbuNzF4L5UAEhY4Mhj7+nEnCGLNT99dzMmg8o9y2MX95hw6GZGB2BLyzbebnpXaxkJQ1evB0iseIZk4UNlbrr9knSbRFXCVPsiabjN/iampQVZlJlHh9/AgdYeTvVO/OJeYLOSYzeztbGVwebTqioYTPsII+k9L9a42d8IaiNXFJWxv8XEkY5O5KBtFWBempvmPj81PROrSp1rcdNxwkRzZ+IbGYBLdgc5lARG5gwdIxgZgNC2BljsBeXs3zfH7KC3deoEoAdCIb73+lvcOH8uXqtVazlxQY+Z0aGur57fnXhUaxkJQ4FpDo/v143MeCh0WvAbDhAUvdSHgPOuF+2BNtr7Kz0XeAwszSkmELTjC0FHIMzWxtZzTMVQzHI7mebtorXXw9v1rczMaKEz0MG63Fm8dvrsMtb8NBeBUW7XavqO4bTBhzzzeebk2W1X56bRKXex0FVEz2kj3YEgvnFk+GRbXHRXW2jqnNw2HRMhbEmteiRhX5DF9VYanSFOOiLLxnX+LoxOA2qLIJTEmUpjwW4y4rGkcOxMCv0ZdTMzTh4+8RjtAT3t+AytvSaibdancy4XF/VS2xfd/11QBqnuPTrwPNsyP6rzUabVwKm+ahRRy+XFmTT6IkuXPWI/lxen0evLJiQlBmMVgeAoO+tHUToocdgpdJjxmCXtoWMQhNq+k5R4odBSxhunJG3+scVQubvTONGhTZzQeNlcrrDsstkceWn0YN1koPqDk/DBSeZcPpv6G+34DJFPWbWvjelpWRxv1qaNymQTDIfp9PlwpbKhSRF0MzMO3m16n51tQ1fjnKqoqTRfOalI2oPjL7ff5pOcWSZyGw3k2qw4TCoFjgDhsJGgVAiGoSm4C4AwYRp9Z3voBGSARl89RtGCQTXQGYzekNb2VZHmiPRAHio+t7rvGLnWWUgp6QgERp09OoPZlHy1PNsMYV67zM3awEyOvn5Aazkx48gL+1g9fyUvz/FFYmZEPvua49AeIkHxBUP8est27l+9QmspsUeiz8xMZYLhIH+qfVprGQmFx+jhmQPt6IG/oyGxGVQk0BsMk2830xkIYRDjb2RnMZ9kYXoBuY5WesOttAeqMCkWTo4xriYgAwRCsc9Cc9uP4rUr2A0OZCiP7U2dtPjOHEeyPNNLmy/IwY4uyp0O7N0ZvH+okWT8LAUUaFqVjWVrFX1JELQcNW+ehjlpLHMUsf1IcvZZmgi1Hak7A59K96C6mRkjqlDxGN3U9V3YIXaq0hZo4/pZFpo6cnizNnW/+ONlRZ6LLPdpwoSwiQy6wg20dxaR426h3l9DW2D8gaPtgXaEsZ26QTMjiVQd2h+OFGDr8/cBTVycW0BfIA2HMUSITk717aHYk0meIxeHqZ2A9wje2kxae5Iz0PSoM8is+5aR/WoNJzYf01pOTOht7GKubdaUNDIAe+satJYQP3QzM3URQuALT406C2OhOdBAXbfeP2gwWVYTa8v81Pv20OiPBKI0n2mAaGnh1BT8GJ3uqwFqGJwU0+RvBBpp7/dgG5e5ePz15Dw1dahh3s8Iw41ZLKltpaW2VWtJE8aW5cTaqJI6i2dj40hzC/WdXWQ7h+5/lcyk0sxM8i1Oa0wwHORkz/jLlqcqOYY5HG7TA4AHszzfQm3fMYIyyohaHQDCIgWKLgpB+vx8rVVMGINRpXH/aU5//jlWPXKSnEBqZW1FQ1hK7n3qr9R1pn4bh2RGNzMjIIdIPzzdV0doijf7G4ruKXiSGwmDgHZ2aS0jKTnlr+KmtYHBJU6SClMINjzdjL+xW2spEyYYCNHd1oO/L0Dtnho8wan5Pd95uo71D/6arz//Mn/bd5AjTclRyHRU5AR+EozknMuNI13BLl5r2MSWlm20+TsosOVhVa20Bzqo66sjJJOnMNZkYVNtnGjWDR5AhtXIumIzpzoVjMJESCZO/EqyIJF0tLsJy8mrehxL1r3awdG3Dk+oi3ai0mCcut9zXzDEYzt389jO3dy5uJL/u2Gd1pImRoKakvGim5nzaOhr5InqPw08b21P/jXveONRynmpeWpPwc7LsHOivY+m3gC+oBUsO+jTfe+46UlSD5jjVzn60r6UNDIASw/7ebvCSJc6dT/cbouZz6y6ePSBCY4gGXMGh0dfZurnaNcxdrTu4kDnISoc5VrLSRosioVnj6RyrIzkxhkOKryRpntGIQBJltUEwOp8F9fN6ibNs58PTVfxmAxYjSkQ86ExGTkNJONtY50xSOYXVuPKcGotJS4c+t37rHxvamcsXj9nNm69iF5UCCGuEEIcFEIcEUJ8eYj3zUKIx/vff18IUdL/+m1CiB2DfsJCiMqRjqXPzPTz6IknONR1RGsZSUdIhrh6uok/H+rDF0q+i8/oRO5dijOPsTC3hLbQSZyql/ZgPU6m06dU0eiPVEOt9h1gTiHU+LXUmxqoQTcX9HVIBoTg3awAfHkuKx48Tt2h1EtnPrnQC0xdwx6SEl8wiNmQApfPOJ6yhRAq8FPgMqAG2CKEeFpKObhM9t1Aq5SyXAhxM/Bd4CYp5SPAI/37mQf8WUq5Y6TjpcBfY3Rqe07xfstW6vvq6Q710BPswWawYVWt2NRIA7Gu4NReJhkvARmgxr+Xa6fP44kDyR/weBbJ7HQ7Lb1BTrQLjPYeekKR7+CZz0oPO5PyejvZZJo8BGSItkBn1NtIQxcCMzJZJ4/DknAw9ZZiDEaVE5apnZ33++07uGNxJaVpXq2lTJg4p2YvA45IKY8BCCEeA64FBpuZa4Fv9D9+EviJEELIc7NvbgEeG+1gKW9mwjLMwa7DPKVX7Y0rtYHdZFln0tCb/NMSxS4Lywq6OO3bi9cjEYgkXPBIDJa48/mwcytN4Wx+fNpMQI5+R78uLY8iYzPfvvUNvrblI/zx8PgrJGuGAM/cXBqOJX/BNU+Oh8wrZ3KgxES1IUhQmdrfBovBQJotRbpox/dPmQ9UD3peAywfboyUMiiEaAfS4UxBLgBuImJ6RiTlzYwiFNZmrmZ32x62tn6gtZyU5pJiI384kBxmptxjw6IK9jSfO5uUZzdxcUGQat/JgdekbmXGRa4lnU97/heAPPUw/zd/LtXBAl7tcHK0J1JBu8SaxT+mf0CH9LLHV8IC82GmGTYN7ON4e5KmAgvBC6usrGssp+rd5F6+bvjH+XxgCgJTe0bmDOUZaVhSYYkJJmpmMoQQWwc9f1BK+eDEBJ2LEGI50COl3DPa2BT5i4yMIhQ+W/EpqrpP8kLdy7zT9B5hUm8KWGsUJXnWXDr8AYryjzM9NJ3Dbb04jCrri+1grKXaN3Ua6cWTTKP5nOfF6h6K1T2key7iv3wuekN9XOttIkc9Sg5QYdh6wT5+u+E1drfO5sHd2bxRk1xLTlIRvHZ9BusNCsfePKS1nHEzd38PtQtMWstICAyKwuL8PK1lJApNUsolI7xfCxQOel7Q/9pQY2qEEAbADQwu4nMz8L/RiJkSZuYMJfYiPjntYyxPX8IPDv5YazkpR5gurpqWxjNHE7fp5Op8Fy6LwGCqpcnvpzjrGIvySmkLnqQp1AXJMbGU8DgMNq51HxzyvVnG9/ivPCtv+DeywPDXEfdj5TDLvIcJz72WN2py4yE1rkhF8O7VGSy4OIe6720afYMEwpvrwTsti7fnWkC/+QPgj3fcwpzsLK1lxAYZ95iZLcB0IUQpEdNyM3DreWOeBu4E3gVuAF49Ey8jhFCAjwCroznYlDIzEImhebn+Na1lpCSnfCeBk9gN0+kOajdLY1YFgbBESokcZKo8JgP5bh/Vvv0DpqU31EtNaN8we9IZDxkmN/+W/SImZfjmU2all42Wv0S9z3LXaSD5zAxAtyp5J8PP5Xcs5/Dv3tdaTtS0fHI+281BdCMTIc/lZGZmhtYyYksczUx/DMx9wAuACvxaSrlXCPEtYKuU8mngIeD3QogjQAsRw3OGNUD1mQDi0ZhSZuZnRx5kV9seukPJWVk0GSiwlPN2jIyM1aCwscRBd0CwqboDu9FAls1IMCw52n5ubZt0i5GVBVZMpibqfLU4DA7CMoxHLUUovUjCdAbrqPZN7RoZ8STXks4XMrbiFE0jGpnx4DVWkWVdSENvYs74jYoikupsq6gKJ4x6jMxg1paVoirJtdQ5GvFuNCmlfBZ49rzX/nnQ4z7gxmG2fR24KNpjJdHXa+JclXsFJ3tq6O7VzUy8CEkf09yuC8zGeOgNhpFAr+EDLipTkVISJkymKZul+V4ON5lxWwRZjl5O+Q/TLMPQfw3tDEbSgLtDo8aN6cSIHJOZDLV69IHjQJUNPHPNZj768lL2NCfnBUX4k2eGw5nuwBlWaFWSR3O8WDetlNsXVVKekaa1lNiTQrkNyXlWGCfF9iL+Zc5XqfTM11pKytLgr2VRrkKFd+Kpi16zEaMpkqEXkqGBoO1Gfz3VvgNYnDvxGXdQ7Tuo98xKAHZ3NnA8NC9u+/eoH/DzS/cwPyP5/tbpAZWwNXkys8wOCxlTtKnkYP7jqsv55Q3XsaashDyXS2s5OiMwpWZmAKyqhQcq7uOxk3/gubqXtJaTcoRkmFOB3RRn2qhqz8U/jh41ioBryl10iYPU+VK5VULqYBAGLkvLxEF805BzjO/w4YpSdjUlT7uA9ccVGh79gCOtyVFUsuS+VWzKDRFSpm6VX4DF+XlcP3e21jLiSryXmSaTKTUzcwZFKNxafBMfK70DVeh3H/GgJ9TDdTOsmNXoYhwcRpVryl3cNNvCNTO7aAzvoDekG5lkYZotg5sdj5Opnhx98AS5peRRvrki+mrCWrOjUODKdmstI2rke7WEkjQ0KZZ0+/0cb0nhRsNygj8JxpQ0M2dYl7WGL864H5tq01pKSlLr38N1M0f+iOXazdw8x8Cqsjqa5Q5qfPto9Cd/1dSxYFJMXJFzGSYleWt5+GSYkJyc04lAcnnhIW6b5QckX17Ww7PXHSXLmoBnWGBOg+D0gVNay4gKV4aTUx8qAqG7mQONTdz/9LOcW1k/xZhqZkYIUSWE2N3fvXLree99XgghhRDD5qwJIVxCiBohxE8mKjjWzHHP4htzvkqOJVtrKSlJKDh07Eym1cjlpS4WF9ZT3XdoIGB3qjHTWcEPK/+N24pv4keV32W+ey6LvQs11ZRrSWeWY2xp0C3+HlrCBXFSdCHp6ha+sfDXPHvdMW4rf4fptpf4+LzEDOwPGgSKkvjmIHdmHr57F3PIOrWXlwazt76Be5/6a2obmhRhLDEz66SUg/slIIQoBDYCo80tfxtI2IpRudYc/mXOV/jxoZ+zv3PoQl8646MhtIcbZufT0JHOpppIWvTaQjdB0w66kFO2+a7L4OS+6Z9kpnMGov8u2GV08kDFfRgUA/s7DvCDg/8PXzi2Kc7R8In0Y5Squ2j35mARXXzl9Bpa+5tE2lQLPaG+C7ZZ5XZMyhLT+Uy3nY17O9GZeD2cNhxTOPazhD31DeDOdvPONEDGEgAAIABJREFUHcUgIgWYcl12TnckR4xPvHnp8FE6fD7cFovWUmKKQI+ZGcyPgC8xwqSTEGIxkA28OMFjxRWHwcGXZj7AyoyLtZaSUoRkmNO+agzWfazMd3LTbJWA6YMp3+9oRcZFzHLNHDAyZzAokfsLh8GJy+jkmrwP8bVZX8Jr9EyKrovc+ZSqO1GExKucxio6+UrOPpa68/lCXohv5R7g+wVV3Jp9bsdgs8YpvN1yFk8eTKx8hnXVKnUPb9daRlR0NXehSEGey86HF5u4ZtXrzBomzsdpjt9y6Mwsd0z2n2aLrfFo6k7MWb8Jk0LLTNF++yXwohBCAr+QUj4ohLgWqJVS7jz/hHyG/nLEPwD+AdgQC8HxxKAY+Fjp7bT729nToVeFjSW+sB8sO6mZ/ImGhMMoDFyXf/WIYwpt+Xxv/v83YG6mOcrY1hp/E7jMXsf5KyLZynHu8xw/57VKofKCaS4eg4XL3O1cbHoyrrpG44/Hl+ALJ1YIYJddpa/rwlmsROSiu6exalUnfhnGlRm571yz7HGaX7uehq6zgfhmg8qt67YSDrmQITOnGqZjNftxOhrZdayY7dVtYz72DUuM+Pwm0twNWDzP09NyKTuPZ2ExwJyyY2w+UMreuvao9mVQFK6pNJKZ8zqPvLyaLv/Ep36NioLXmiJdss9DpNDyWbRmZpWUslYIkQW8JIQ4AHyVyBLTSNwLPCulrBnO8JxBCHEPcA9AUVFRlLJij0kxcW/5J/jhoZ9wpOuoZjp0UpcbC/8eu8E+6rgzRgbg5qIPc2/5J3i+7iX+UP1UXEzNWm8+i41R9XQjWznOD3OPjz5wklia1YhRsREIRxebYjVI7qvs5T+2xi/4f4vXx9rKYk5ur4rbMWLFsVdbqVytYln49sBroZ55rJkZJBSy8PK+MJ0+P9ctkgjTKVQiAc1Fjp0D45fO20d1y6U0do+chZjlsLJhbjcGo4+nt3hwOurIcJ1t82BPf5UV6WfHp9nLovodir1OLlu8D4NtLwDrZpr5666Jm5mwlJjUFMx6TdAZlvES1a2MlLK2/98G4CngEqAU2CmEqCLSDXO7ECLnvE0vBu7rH/N94A4hxL8Pc4wHpZRLpJRLMjMzx/O7xAyn0ck9ZR/FoqTWGqmO9qzNXMOVuaPdA1xItiUbo2JkY/Z6FBGfGYhgEp/YZjmeZ+fNf4t6/Mr8MJcXxS/GJyOgsvaxuqQwMgCnDzfy1me7OFN7UgY9hEI2MvL+Snbhn7nl0ndYV+HGkzV8tIAwtLNxweiB/KtnhHFlvYjN+wY3bfgbJseF3dIHM3v669y2IsiSIg/qMDfFl892ccWKvw4YGYDc/E0Y1Yl/V0JS8ov3t0x4PzrxZdS/tBDCLoRwnnlMZDZmi5QyS0pZIqUsAWqARVLKusHbSilvk1IW9Y/5AvA7KeWXY/1LxINcaw7/WP5xrWXopBgl9onNOhoVI1+ccT83Fvw9+da8GKmK4EtiMwOgiCCz06OJ3ZH8YMWbZFlqEfG4NQ1LzFJQuzM+rR3iRe7MNAhFLgnC0IZ50GyJYmxixszHEcrI/Zocnu2kjxKv4vGcGHgslBBCGbmXmzDV4cx4mYq8VkLnLYtk2K189JI2SsufQKjnLukpxgZuWu7DbJj4rMrR5pYJ7yMREXL8P4lGNLY1G3hLCLET2Aw8I6V8frjBQoglQohfxUqglizyVlJozddahk6KMNc1m0syV01oH4pQmOOexd/lXUmZvQSHwY4gNmm/NiUBz1BjQJX1PHXFH/nYPP+5r4tzDY7TBFZxECuH+d6a6GIxosUaElR+by+5P91DSMPO8dFgMJ0bZeDIMSGMEwvkFoYWVk4/97JS5HUMPF5U6EG17Tx/s6hwpm8iw342dmVFqYcPX/I6Zvd7w27jyHiFO9YdpcDtGHbMcKTbbMzPjZTsKPIkT9HDMTGVAoD7228vGGVMyaDHW4ELpjSklL8FfjtWgVrzuRmf4Ys7v0ZQ6h1kdcZPpWc+91d8KmYVp4UQ3DPtY3QHu9nW+gH/U/Uo/rB/9A1H4GivH5K8/Ywim/ni/Od5uepqugLQ0qfw12uPc8uzpbT7FRZnh/nFus0DMzLz0puA2GSKpQUU5jUqVDclds0ks83E2u/ko1bW0P3XCmrf6UU1CHJubyYW9iu36E/Mrr8JkypYOP0YRsdL9LauQUoFu+d5xDhv64Xay8IiI+8cDXLdkj4c6Y9FVdtPtR7gqpW17Np3Fe9WRRegbFJVnr7rNjxWC1uqawdMTaqRiDMs4yWxchkTkAxzOhenL+PNpne0lqKTpGSY0rmp8MNxaZ2hoLC15QM+VX4P7zZv5r3mzePe1xWe1GgfYZCnePnvfkNYeLj3zevIttTz6t/XE5YqTkMNqmwcGFtgPQ5MgxjMbi3b3M2hp3ZMeD+xJH9mFrmVbjpr/RRebkSxhlFWHEG6dhICLHc3M+3uyNhYzSMJAasXvYC/exZmV+TzaE9/LSb7Lit9mdJiO4ppbEt4wtDJ/HmPkZ9+DX/aHiA8ShbPHYsryXZGZnNWlRaPW2/Co5uZqcVVeVdwsPMwDb7G0Qfr6AxibeZqbii8HrcxPlMeVoOVz834NADz3XM53HmEZv/Y1/fLbNksMz4Ta3maIQigykb+e9VvEAyaVT3v5G3mKI9cOZfbnhtbxeOhePliK5d2zubIy4lT1mH2XU6Uv9vGoOSgSbl+CUMbZve7cdhvC4Lxxa8IARn5T3Oz8QoeHX5lCoA9dVOrpUoqkFiFGRKUfGveuDJQdKYu6aY07i2/h7vL7oybkTkfg2Lg6rwrx7XtLJvArKReYbBzjMwwLPU+g9s08aJ/QQX2r8tg2tqZQ77vznIy/0Nl2FzD1ywpXx67lhDFC/JQ1+kVzc/HmfYuBmX4S19pmpeHbrxuEhVpxASCfxNxeUo3M1GyKuNiflT5XcrsJUndEFBncugKdpNrOb9SQfzZ3b539EHnMd+ZxzrLKLeqKYwgyIemxWaRpdocYPfGDMpWTR94La8iE4PJwPybc8n9jx2sffjC88fqT1dw+Y9LKHtoH7MvLZmwjqJ5Ocz+f/VIR+oZ1IkiDO3Myxv+BqOjz8fD23fywsHDk6hKI1IoAFg3M1FiUS1kmNP55tyvc2fJrQgES/obAl6es4EbCq6LWVaJTvLjC/t4+ER0Behiye3Ft2BTo69WOtuRyy3ubZr0VUokvlz59uiDoqTOFGLTNZmU/8saNny7nAUPNXHZiwLbRyNZPKFp1az4eAUAiiIoW5yP7Y69sH4XQkDJlxpxpo1eVHEkTu6u4+S3i0ihAq8xpSK3a9j3mnt6+P6mt3n7RGp/J870ZkqVmRk9ZmYcrMlcxXz3XNxGN62BNtJMkT41x7tPsK31A43V6SQC6aY0Tfp8mRQTvUM0ghyOG90HyFOnwB3oKFiUU6RZwrT0xeb+zq9IXnQG+Ker2+kIXZj+7fj0dpb1LMJ7kR/W7zrnvVDhaYqXLGDPixOrsHxoUw3F+8oIzTk2of2kIu70ncCcId/zWq38+c5b6fZPLDtQZ3LRzcw48Zgi6ZxnjEwgHBjXFL9OalHuKOPvC66lxFaE0+ic9ON3BjvJt+Yx1z2bNxvfpjs0/DJDoSWDMkPid3SeDBTZwX+vP80tz+YSkrExNAZFEg66h0yUEoYw3q8NX/m26M4eTu1x03Jq/HVwAr4A4Ta9ivlQKKZqpqVfxNHmC9Po7199MfnuJK9REC0pNHWnLzPFCKNi5EO5G2NelVUneXAbXdxVcjvz3HM0MTIQCVb/t/nf5Lbim/jSzAe4PGcDWeZh2oPoq6LnsND9V56+tipm+7t1maRLjK9rdqjyMMv+1IJyftfPMTD94kLkUn3WbTjmFQ4dJ+UymydZiXak0jKTbmZiyIcLruPf5n2TWc4ZWkvRmWQ+VX4PP1n0Q4rthVpLGaDMUco/FN/MXPfsId/f6E6Ojs6TyXTbO+TYY3GmluSm1U9oD2FHN5e/ZOTKh/IpqTx7k5Q/M4uskvQRtoyQPsMKpok3WkxVMrP2XPCa02xmw/RpGqjRgIkE/yagmdGXmWKMEII1mSvZ36mnRKYadxTfSrG9kPebt7K3Yz9dwS4C4SD/NPMBimyJY2LOJ9OcMeTrOapeS+NCAvhDkolOW926FDrkrtEHjoAQEM5pgpwmZlW4mbG9BKRArt9J4z8voqGqedht19xfgbVENzIjoVoOsX7GQl45eHYpz2JQCYUT8EodJ8TEKxIkDLqZiQNL0hazv/MgmxpjlyGhoz0v1r/CP8/+CreX3AJAMBykO9QzaXVkxsu6rEvY3LKV490nMAgD02wZLHb4KFf1eJnzkcJOa9/E199ePaBw2yWZ9IRiU2gznNYOGyLmSABddb4hx5mtJtY/7CA4Y6u+jBgF5dNe4IPqtbT0RGYpFaHQ0NWFw5ymsTKdsaKbmThgUc18ouyjALqhSSHq+urpDHbiNEbKnBsUA24lsY0MgN1g49PT7qCh+Z8R9DHT8KrWkhKWtmApchwuwGGCrkHJLzluBUHs21ecwTvNQtpJDy21bdg9NpbcXYDREwYBoZnbdR8TJcLQxlULO/j92yaWFxXw42uvIt1m01rW5JFCk1C6mYkjNxZcz3vNWybcAFAncWjyNZNnnXjp+8kmw+wl3bAdGPqOXieCV92JKhaPKaPpxkVQnLeT13YuYlt1iOsrBYV5r9Edil+vK+9XtrHkyyBem4dYegzpHD4zSmdkbGmv8uX1X+bOhWswqvEzoIlIIgbyjhfdzMQRj8nD+qxLeK7uJa2l6MSIJt/wcQqJjFBcSMUJYd3MjEZIRj+vkW4X5Oa8QXeol4vnvcyGBYV0hI4SmISLhBDApbtT6eZ60lGFkctyP8NczzqtpUw+Ej01Wyd6Su0lWkvQiSF1fXVaSxg/auIGKScKgiBXl0Xf2mDlNAjIyAxMSPrpCB2NlzSdOLAs/SbKnZNf3DJR0FOzdaJmurMcr9GrtQydCeAwOFjiXUS+NQ+HQZv6MbFApP0vKMPUnNEZYGV+9P2M/rYrjEstjaManXjgNuZwRe7nOdz5Nr2hDq3l6MQAfZkpzmSY0/nW3K/z48M/43CXfteWbKhC5RNld7HIW0lYhsfUKiDhCLdCODbZNalKl5zDV9+M3rBWZKt0hk7EUZFOrJnrvpy5nssosM1jjvsyhJjC4dIJOMMyXnQzMwl4TG6+MusL7O3YT4u/lbAMY1NtPFH9R5r9LahCJSRj07VXJ7bcP/1TVHrnA5G0TbshiTMdhAXUIgildgO9ifDTPcvGlM10oD7Mhr6VhCxvxlGVTqwwK3Y25n4WRUQCfaeykTnTaDJV0M3MJGFUjFR65p/zWpOviT/UPMUnp93NUu8iqnpO8p193yMogxqp1BlMqb2YBZ55WsuIGUKxg/cXyKYrtZaSsLjNY68i9stNVj59ZTbdoYlV/NWJP+XOFQTCfajCiEExaS1HW6RMqQBg3cxoyNV5V7Iq42K8Ji9CCModZazKuJiOYCchGaK25xRN/uTMnkkFjnef4OETj1Hpnc9c1+zUuIuT8UsXTgWePDS2xoxeq+D2Fd30dM0Eq25mEp0K52peqf8ZxfaFzHFv0FqOTgzRzYyGKEIh7bxKk3eW3IZBMdAR6OTnR36pmxmNebH+FV6sf4VZrpl8ouwuMkzpSWtqZOgUsvcZrWUkNLPTQ5zoiP60WJ6pEDC9FUdFOrFCFUayLNNIMxfgNOiB8JBay0x6NlOCYVAiJ9KfHPkFezr2aaxG5wz7Ow7w5V3/zH8e+inbW3doLWdMhNu+gOx5DPyboechreUkNP+54g9sLI5+mXdXrb4kfD4CBVUYtZZxATNda3EaM/Ca8vUlpjOkUKNJ3cwkIL3BXo52HdNahs55+MN+trftoCPQqbWUsRFuQ/b8Hhm4sEuwzrkosp0frnwl+vGKwCDGtjSVyhgVKzcUfUdrGRdQal/K5bkPaC0j4dDrzOjEFZNqwqpatZahMwSXZV/KqozkKbIlpQTjPAi3Qc/vtJaTFJg5zpWl0c24+AISo25mBliX9UlsqpeQTJyO3WbFzmW5nxnIYNLpRwJhOf6fBEM3MwlKe6B99EE6k45ZMfFqwxs8dOx3vNv0vtZyRkUIgeL8LMKrLy9FS0jJ4+8WnuDTl/ZgUEY+aa+pMNAbbpskZYlPmrmQve0vay1jgCJbJRtzH8BlzNJaik6c0QOAE5BgWF+HT1T+dvr5gcen+k5T6V2AVU2CO3O1AOH5BTKwFbp/FakEHG4kIRe/NaRbreQXTW3AETAf4aMrLuWXb0XiPzwWyHIqHGkM4bII2vpgSVkD3dpKThiK7QvJsVRwsjsxYsrSTIXcWPTvSRuwPymk0NdfNzMJiEkxcXnOBl6oS5w7HJ0LOdR5mCNdR5nnnqO1lFERigMs68C0HKw3g+JFtn8JfPpnbDC20AHmWCvZ2xtJs7a43uYTq1ZiMQUImt8CJNephYToQcGEX3bA2EvTpBwuYzYfLvwOilDJt82e1ON2BM6mxGeZpzHNeRHbWp5iecbNupEZhUSMfRkv+jJTAiKE4ObCG1ifNQU7uSYZbza+HYlLSRKEYkMYChGKA+H5KZg3ai0poRD0UWExDzwPSh8G56sEzW9y5ja2M1RNT6iZrtBp/GF9XgZgofeagcf51rmTEkeUbSlnTdbd5FnPmqcWfzUF1vncXvoTvY5MNJwpnDeenwRDn5lJUAyKgVxrttYydEbh3ebN1PU18M05X0u6u0AhBDJ8WmsZCYZgf69eWHAsbMz5LDPd69jc/ARV3dvpCNQTkPHvYVZoq2SGcw2hsJ8yx1LebXqUoPTT4DtMsaMy7sdPBVJpZkY3MwmMqkffJzwug5Ml3oVay5gAer2NM0isHJDLONCn966KhkxzKYvSrifDXMJ7TY/iMGQQCPecs+wzErNclzLLfSlmxYbdkEZV9zaOdL6LIhTMioNMSxmBcC+7256nK3hh8dCtLU8yy7UWm8HDHM9lHOx4k65gM5WDZol0pg66mUlgyuwlWkvQGYE8Sw5fnPkAGeZ0raWMH+MCCGzTWkVC0KHO5bkm3chES75tLgCPVH0GiBTLW5F5O/V9RwbGKKi4jNk4jRm0+GtwGjIpsS/CZvAyzbEctylnYOwC41Us8HwIIc6NfqhwrmJX23N80Pr0BRq6gi1Mcy4HYKZrHeXOizAq5gvG6QxBgha/Gy+6mUlgsi16OmEiE5BBdrTtYl3WmqSdRROOe5G9T4Ls0FqK5rhDW5hjvWgg+FdnZNr8p6np2T3w3KhYqPRcTaa5hI5AA5mWaeRZZ6GKyGVGyvAFRmUwkWXaC5dqMy1lLPRew+62FwhK38DrZsVOfd/hATOzPOMjMfrNpgaRrtmp42b0AOAEpjcU/3VnnfHT6Gvif6oeYUtL8s5sCMWFcH5BaxkJw0brYda4ClGHuKjqnMup3n00+aoAcBjSuaHwO1gNLsqdK1iUdh2FtnkDRgYY0ciMhseUR5511jmvLUv/CBdn3DrufeoQycQb70+Coc/MJDBBqdebSXTSTWksTuqYGUDo0/JnELKZJeomZmQs5rUuhSN9TVpLSlj84R4UDCxNv4Gl6TdiUR1xO5YiVBZ4rqY72EKz/ySqMDJ/iCUpnamLbmYSGEWfOEt4WvytHO+uosI5XWsp48e8AZQsCDdorSRhcIa2cY1V4b995fQkUGn+RCLDXMJVeV8h01IyKceb4V7Nqb59hLtCbMj5NFaDa1KOm8roy0w6k0KmOYNSPQg4IXAb3cxxzRridRduY3KfVIXiBMMMMC7RWkqCEeaGtCQO7o4js13rua3kx5NmZM6w0HsNHy78DsX2JJ8NTQQm0jE7AT2QPjOTwHQEk6w7cwrz8dI7cRodqDUqu9r3UGwrZJ57DisyLiLbkvz1gJS0h5BSIts+Cb7XtZajORIDUnhID2/lWu/F/KW1WmtJCYLgkqy7WZJ2gyZ1lTym3Ek/ZuqSmMXvxktUZkYIUQV0AiEgKKVcMui9zwPfBzKllE3nbVcJ/Bxw9W/7HSnl47GRnvoIBKX2Yk72VBOSIa3lTBksioVSezH7Ow9iUkyszljJbPcsTIqRz8/4DB2BTtxGV9IVyRuNSBG9Vq1lJASnxMX8oaWWG9JmsblTz/SCSOr1VXn/xEz3Wq2l6MSIqVo0b90QZqUQ2AgMV5yhB7hDSnlYCJEHbBNCvCCl1NvMRoHL6OSjpbezIXsdv616hEOdh7WWlPJkmTN5oOI+Cmz5nO6tw6gYz6kjowgFj8mtocL4IlzfRrbe3d+EcupiEQHCSJ5oqdFaSsKwJutjupHRSVgmusz0I+BLwF+GelNKeWjQ41NCiAYgE9DNzBgotBXw9VlfYnvrDp4+9QzHuquAyMzN6syV2FQrACX2InpDfQTDQZzGSGXaP9U+zbOnX7hgny6DkzJHKXvb91HmKOWgbpQothUyw1lBgS0fgFxrzihbpB7COBO8v0H2/AZ6/6i1HM1Ik3uADIaqezIVcRqy9Mq6qchUW2YiEu7zohBCAr+QUj4ohLgWqJVS7oxmul0IsYxI7fSj41Y7hRFCsDhtIYu8lezt2M+T1X9mRcZyNuasH3G76/L/jkJrPpmWTHqDvQRkgEA4SLmjjCxLJqd6T/Pr47+bpN8icfl0+f9hWboeAAsgjBXg+leksELPw1rL0QQhu6iwzOKQnpoNgCoMemXdVEOCiHO9GCHEFcB/ASrwKynlv5/3vhn4HbAYaAZuklJW9b83H/gFkTCVMLBUyuGbfkVrZlZJKWuFEFnAS0KIA8BXiSwxRfML5QK/B+6UUg753yeEuAe4B6CoqChKWVMPIQRz3bOHzKwZCqtqYVXmimHfz7PmUmQrnPIzM1U9J/mgbSdX515Jvi1PazmaI4QA55fBMAfog3AHsueRodO3lXSE+7uAhGA1svNbky03LuSbrRzS61YC0BY4xbaWp1jkvS7lYsWmNHGcmRFCqMBPgcuAGmCLEOJpKeW+QcPuBlqllOVCiJuB7wI3CSEMwMPA7f0TJunAiDUSojIzUsra/n8bhBBPAZcApcCZWZkCYLsQYpmUsu68X8gFPAN8TUr53gjHeBB4EGDJkiWpM/cVJ2J5QrkkczUftO2iyTf17kKNwkildz7Hu6oIyiCuJE+zjiVCmMD24bMvmFcim2+4cJzzqwjzGgCkKQyhI4AReh6LFORL0lYJ8w1HmZ8uaaKUR5pPaS1Hc16r/wXZlnIKbPO0lqKTHCwDjkgpjwEIIR4DrgUGm5lrgW/0P34S+ImIXNw2AruklDsBpJQXdho9j1HNjBDCDihSys7+xxuBb0kpswaNqQKWDBEgbAKeAn4npXxytGPpaEOxvZDVGRfzVO1ftZYy6dgNNu6d9gkMil6lYFQM88C4FAJbBr02HYzzB54KoSBc3wBAOr8MgT3IlhsnWWhsUMO1AJiVAkBSak6n2tdGMBFruU8KkudOfZ+PlT2Eqn9fUoP4ThvkA4NrGtQAy4cbI6UMCiHagXSgApBCiBeIxNk+JqX83kgHi6ZoXjbwlhBiJ7AZeEZK+fxwg4UQS4QQv+p/+hFgDXCXEGJH/09lFMfUmWSKbIUA3D/9U9xbfg9iigQ+ek3epG0SOdkIIRD2OwAFLFdHXnN9A2EoHma8ijAtAOvfT6LK2OMJb+b+9B6ut21jpWtqL0G2B+o43XNQaxk6MUJIOe4fIEMIsXXQzz0xlGYAVgG39f97vRBixADRUe11/xTRglHGlAx6vBX4eP/jh4mse+kkOHPds/lo6e0sTotU1uwIdPDwicc0VhV/Gn1NhAmjohuaqDBfivD8DGG5FNl3ORimjbqJcP0rEiP0/hnwjTo+EVHCDfjUWWxu0ztqN/qPUsAcrWXoxIKJxcw0Da45NwS1QOGg5wX9rw01pqY/TsZNJBC4Bth0ZrVHCPEssAh4ZbiD6e0MdACwqBYuzbpk4PnlORu4LPtSDRVNDkZh5FDnEa1lJA1CGBGWyOdCWC5HKGlRbKOguL+N8P483vLiShAzvXqfJur7pnayQMogiXfX7C3AdCFEaX/Iyc3A0+eNeRq4s//xDcCrUkoJvADME0LY+k3OJZwba3MBupnRGZbbi2/ho6W34zQ4tZYSE8yKGct56aWtgVZ+eew3/KnmL7T4WjRSNkUwrQTLlVqrGDdBadRaQkKgCv3/QWd0pJRB4D4ixmQ/8ISUcq8Q4ltCiDNFix4C0oUQR4DPAV/u37YV+CERQ7QD2C6lfGak4+lRXDrDIoTg0qxLWJl+EV/a9XVa/MlZ6n6avYwWfwt3l91JriWHXx77DQc6B+o50hvqxSAMhBOxe1oKIYQA+yeRfc9pLWVcuOQB3GoB7aGpna/dHqgbfZBOwiOQce+aLaV8Fnj2vNf+edDjPmDIDIGxhqnoZkZnVMyqmWVpS3i+7iWtpYyZhZ4F3F/xKQRiIJ19cJ+rPEsu/zTrc6SZvFpJnFoYphGpnenXWsmYEbKTazxeft98WmspmpJmKhx9kE5ykEIVgPVlJp2oSMbspgxTOp8qvwdFKANGpsXXwuGus0Wou0M9NPlGLWGgEzNMoBZoLWLMSAy0qss54tMDxfOs0RXs1EkCpBz/T4Khz8zoRMVkpi/bVRt9YR8eo5tiexEF1jyafS283TxszcULEAhuLroBs3pujIwvfO6MQE+wh2ZfMzjLY6JdZ2SEEGC9Gtn1Y62ljIld4RW80lo9+sApgMuUrbUEnVhwJgA4RdDNjE5UXJ13BZ3BTt5ofCuuxym05vOVWV/AqJgIhP04jZHg4+8d+NGY9nNV7hUsT1868DwQDtAT6uGVhtfPGVfuKOPijPPrOOnEE5mEGUHlxk5eQTLVG0/aDWlkW6ZrLUNH5wJ0M6MTFXaDnY+X3UW5o4yH4tSYUkHhCzM+O2BgLKqZsAzzUv1c+fK1AAAQcklEQVSr7G7fG9U+0k1pfHHm/eRbzy1utqnxbX5bdW4smUBwTf5VsRGvExUyeBz872otY8zYQx9wpecSnms7qbUUTVnguQpV6JeNVCHeAcCTiR4zozMmlqcv466Sf2BN5kpsqpWL0pcxxzUL4wROcA6DnQ3Z6/jX+d8gzXxu3ZIHj/2Gh088hkCQYzk7vT3PPWfIZpvN/hZ+evgX9AR7znl9rnsW67PWYlWtA69JJLmWnHHr1hk7svNHENihtYxxMVPZhWMKd452GNJZnHa91jJ0YokeM6MzVbGqFtZnr2U9a7m79E4UodAd7OHebfePe58WxcIdxbcO2TyzwlmO1+jhitwNuI1unjv9Ig2+Ru4ovpV3mzezt2P/BdtU99ZyvPsEjb5G1mZFGiBmW7K5q/QfWJ+9lq/u/gYALoMTs2oat26dcRCq0lrBuBGylWu8c3i0+fwiplODWe5LMat2rWXoxIzENCXjRTczOuNGEZGJPQXBfM9cdrTtOud9i2LhY6W3c7y7iudGSOtenr502C7gg6sSA1yZu5FgOMgPDv2YnW27h93n9w78CJNiIsuchdPoZE/7XtZmrua3xyNLTTOdFTxQcR82gy2q31UnRgjr6GMSmGy5G48hn7Zgr9ZSJp3ZrhFb4+joaIpuZnQmjNVg5XMVnx4orOcP+1matph0UxoXZyxncdpC5rrn0Bns5OETj9MV7Dpn+/MNy0hIKfnVsd+ys203lZ753F58C13Bbr574If0hM4uLYUJ0xfu40DnIQqseTx68gmerPkz/rCfdFMa91d8Sjcyk4gMnkS2fxUCH2gtZUII2c561wL+2DL1Mpt6Qx1aS9CJJRJ9ZkZH53yEEHxn3r8QlpKfH/klazNXM98zFwCTYhp4XOlZwPHuKh4+8RjtgXbKHdNwGaNvl3Co6wibW7Yx01nBvdM+gdVgJYtMPj/j0/z8yK9o8kdqxuRZcjjVV8eWlm0UFRTgMNjpCnYDUGDLx27Qp8snC+nfAtIPgc1aS4kJRexGxUtoilWM3tv+EkX2EXsO6yQbKZSaLWQCOrMlS5bIrVu3ai1DZ5yEZAgpJQZlZK/sD/tRUEYdN5hWfxuNvkYqnBemh+5s2833D/4XCzzzuK/8k3z2gy/SE+pljmsW1+RdxeuNb7LYu5CF3gWYFL2/zGQRbrgIhBNCJ7SWEjOOizU8NYVmZxRUNuY+wFzPZVpLSVmEENtG6UIdU9zWXLmi9KPj3v75/f82qXpHQ5+Z0Yk5qlCjKsdhUsYefOs1efCaPEO+l2XO5JNld1PmKMGiWljoWYBFtXBl7kayLVnMds8c8/F0YoBhNvjjW59osimRb1Ngmk+Nv01rKZNCvm2ObmRSkQSczBgvupnRSRlyrTnkWs+mWn+09PYLKgDrTD7CdjMyWcyM7S6EeSXS9wbCegOy60fge+OCYYIQ16bPZndoNvvaX6HJd1wDsZOHWXFoLUFHZ0R0M6OTsuhGJkEwXwbWG6D3Sa2VjI6wIcyXIMz9Qenu7yKbb4HQILNi/QjCdjsWQznLhEql5yr+5/i9tAdStwFlpfdqrSXoxBoJhFNnZkYvmqejoxNXhBAI2+1AEsQpnRfXI5T/v717j63zru84/v6c43Nsx3EcO3ZiN9eW0LQTvawxWcTSS9okFCqULitd2WCBinWrKCswMbZVoxsdCGVETAKGFFgkyjpu6tpFjLVNNcFWVmja0utI6UWhiVuapElp0iRObH/3xznpnMSXJ7bP5Tnn85KOfC6/53m+56uf7a9+v+f5PR2QaTvxvek3o9wSVLxfWT47jWsWfJazpi87sR0ZMmRRyv/MvrX1t1nQcmGlw7ApN4kF86pwesojM2ZWcsqdSzRdBUfurnQoYzv6EDH0GsoMOy9raNglyfnfQtmuUzZrz89l3fzbePnwM/x077dYMuNSFre+g/7Bg+QyTQxEP4/v/wED0c/zB37Cq0fTcFsEsXzWdSydtY5MGW80a2VUhUXJRLmYMbOSiRgkDnwO5Xvh6P9UOpzxqanwGK7pCujPw8DzqPWWMTfvaV7C2nm3vrkIZK54+4NGWnhH1/sBWNH1QX74yiYe3V+9hd3M3Bksm3Ut57e/q9KhWCm5mDEzSyID/f9NHPpmpQNJZvAlOGn9mEzrJ6H1k8TAc6hh8bi7GG016zf3pyyLpi+t2mJmYctvsnbup8lnvaikpUe6J3PNrKpJQtP/tNJhnIZBGDo44idJCpmkGlR99wTLkGVF13p+d/5nXcjUg+MnAE/0UWU8MmNmJRUDL1Q6hNMztAdGOC9mKs2bdh7dTUv41ZFnSnqcpFobZrOq+yO8pXV5pUOxsgmI2lkC2CMzZlZa8UZ5jpPpgvyKye+nDPFmlOWcGZeV/DhJzGt+Gx96yyYXMvWohq5mcjFjZiURcYShfR+AQ3eU54C581D711D7N6BhCeQmsNJ6phMaTr1VRimc3/4urlu4kbZc9/iNS2h1z83kM+m+m7mZixkzKwmpqbj43NHyHHBgB3Hwy5DvRbO2oPavQHZ+ok3V+mnU8T3Uef+Jl2WXUD7TzLxpb+MPz/xHOvLJ4pxqsxsXM62hPN/XqozPmTEzS6hxNbxxOwztpqS36G2+Bs34a6RhIwxqJxovhUP/fGLb7HygAQb7gKOQX45a3l+62MbRmG3hQ2dtYveR55nW0M7P9m+h79BTXNH9EVobunhw7x08d/BBDg++Tmd+IS8f2T4lx53e0Mkls6+nOTtjSvZnKVSF00UT5WLGzEpGDQuh60cwuJN49WqIka8USrazNmhaDYfvBALUAtM+gLI9aNr7Rt6k6Uri8N3QuBrllkDDuYXiRSLiKBz7OWRaJh7TFJEyzGkuTG9dMvt6IuLNS7wv776Ry7mRY0P95DKN3PfyP/D0r+9nMI6d1jHact3MalxAW66HizrW0p6fO+Xfw1LGxYyZWTKSoGEB0XA2HHt09HYz/g6y3cQb34BjT0IMuyN1dhGauRHlziOaryZeuxmaryHT+omxj51fBl0PgJpPWf9FykP+gkl9t1IZaa2a4wvwren5GJ2Ni/jPV76aeH+zGxdz1dxPMatxwZTFaGlXnSfyTpSLGTMrC838ErH3qhOLlOMyswpTRcpA/mIYeJI4/P3CqrtNq6HxMpQtnCir/DLo3AoJ12pRpnbWTIkIBqKfC9vfwy8O/Jhdh54Yd5s5TYt574LP05RtLUOEZpXhYsbMykLZLqJ5HRzafNIHbYViJg6DWgqjErnzUe780feVmV7iaKtPRHDnzlt4tf9F5jQt5sCx3Ym2W9X9URcydqoAhmpnnRkXM2ZWNmr9BOQvIl67qXAJdKYLtVyPGi+pdGhVLSL48d7b+eUbPyMY4sDBPYm2u2DmVfQ0n1Pi6Cy1PM1kZnb6pDw0rYG2DZBbihrmEzW0CmmpSGJZx3tpzrbyi9cfoO/w02O2n5nrYUXXBzmn7bLyBGjp5GLGzGzi1Hz1/z+Xl7tKIp+dxtKOdVzUfjXfefFTI54vMzPXw/LOP+DctpVk5T/vNpbqXC9motzbzcxSRMqwqvsm9vXv5MDAHh7cewdHBw+xvPP3WTbrWhoy1XcTS7NSczFjZpYynY0L6WxcCMDrx3ZzRvNvsGTGxRWOylIlqKkpXhczZmYptnLOH1c6BEurGppmSjRZLWmHpCclPSbp4ZM++zNJIalzlG3XS3q2+Fg/FUGbmZnZJNXQXbNPZ2RmZUTsHf6GpPnAGuDFkTaQ1AHcCvRSuKr9EUlbImL/BOM1MzMzO8FkLyP4IvDnFAqVkbwT2BoR+4oFzFbgykke08zMzCYjorBo3kQfVSZpMRPAfZIekXQDgKS1QF9EPD7GdnOBncNe7yq+Z2ZmZpVUh9NMKyKiT9JsYKuk7cBfUZhimhLFIukGgAULfDM0MzOzUooqHGGZqEQjMxHRV/y5G7gLuBQ4E3hc0g5gHvCopO6TNu0D5g97Pa/43kjH2BQRvRHR29XVdVpfwszMzE7HJEZlqnBkZtxiRlKLpNbjzymMxmyLiNkRsSgiFlGYProoIn510ub3AmsktUtqL25775R+AzMzM6trSaaZ5gB3STre/l8i4p7RGkvqBf4kIj4cEfsk3QZsK378mYjYN9mgzczMbBKCmlpnZtxiJiJeAC4Yp82iYc8fBj487PVmYPPEQzQzM7Mp5xWAzczMLK0CiHoamTEzM7MaE1FTIzOTXTTPzMzMrKI8MmNmZlaHPM1kZmZm6VZD00yKKlz8RtIe4JeVjmMCOoG947Yy5ykZ5ykZ5ykZ5ymZSuVpYUSUbcVYSfdQ+K4TtTciquZei1VZzKSVpIcjorfScVQ75ykZ5ykZ5ykZ5ykZ5ymdfAKwmZmZpZqLGTMzM0s1FzNTa1OlA0gJ5ykZ5ykZ5ykZ5ykZ5ymFfM6MmZmZpZpHZszMzCzVXMxMgqQLJf1E0mOSHpa0bJR26yU9W3ysL3eclSbpO8UcPSZph6THRmm3Q9KTx/NZ7jgr7TTydKWkZyQ9J+kvyh1nNZD0UUnbJT0tacMobeq6P0HiPNV1f5L0N5L6hv3uvXuUdnXfn6qZF82bnA3A30bEfxR/ATYAlw1vIKkDuBXopXBvr0ckbYmI/eUOtlIi4veOP5e0Efj1GM1XRkRdroWRJE+SssBXgNXALmBbsT/9b9kCrTBJK4G1wAUR0S9p9hjN67Y/JcmT+9ObvhgRX0jQrm77U7XzyMzkBDCj+LwNeGmENu8EtkbEvmIBsxWomoWGykmSgGuBb1U6lmo2Tp6WAc9FxAsRcRT4NoV/WPXkRuDzEdEPEBG7KxxPtUqSJ/cnqwkuZibnY8DfS9oJfAH4yxHazAV2Dnu9q/hePboYeCUinh3l8wDuk/SIpBvKGFe1GStP7k9wNnCxpJ9K+pGkt4/Srt77U5I8uT8V3CTpCUmbJbWP0qbe+1NV8zTTOCTdD3SP8NEtwBXAxyPiTknXAv8ErCpnfNVirDxFxL8Vn7+PsUdlVkREX3E4fKuk7RHxX1MdayVNUZ5q3ji/dw1AB7AceDvwXUlnxamXZtZ1fyJ5nmreOHn6KnAbhWLlNmAjcP0IbWu+P6WZi5lxRMSoxYmk24Gbiy+/B3x9hGZ9nHgezTzgh1MUXtUYK08AkhqAdcDSMfbRV/y5W9JdFIbAa+qPxRTkqQ+YP+z1vOJ7NWWc37sbgX8t/lN+SNIQhXvM7DlpH3XdnxLmqe7703CSvgZ8f5R91Hx/SjNPM03OS8ClxeeXAyNNC9wLrJHUXhy+XFN8r96sArZHxK6RPpTUIqn1+HMKeXqqjPFVizHzBGwD3irpTEl54DpgS9miqw53AysBJJ0N5DnpxoDuT0CCPOH+hKSeYS9/hxH6iftT9XMxMzl/BGyU9DjwOeAGAEm9kr4OEBH7KAxdbis+PlN8r95cx0lTJ5LOkPSD4ss5wAPFXD4E/HtE3FPmGKvBmHmKiAHgJgoF8c+B70bE02WPsrI2A2dJeorCCavrIyLcn04xbp7cnwDYULzk+gkKxd/HwX+f0sYrAJuZmVmqeWTGzMzMUs3FjJmZmaWaixkzMzNLNRczZmZmlmouZszMzCzVXMyYmZlZqrmYMTMzs1RzMWNmZmap9n/Uzr/BjIVh3AAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "cons_stats.plot(column='en_2016_pc', legend=True, ax=ax)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T13:57:52.123407Z", "start_time": "2018-06-08T13:57:52.120114Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Available Places per Capita" ] }, { "cell_type": "code", "execution_count": 171, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:27:50.952343Z", "start_time": "2018-06-08T18:27:50.580611Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 171, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "cons_stats.plot(column='av_2016_pc', legend=True, ax=ax)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Free School Meals" ] }, { "cell_type": "code", "execution_count": 175, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:28:34.781582Z", "start_time": "2018-06-08T18:28:34.740955Z" } }, "outputs": [], "source": [ "fsm_df= pd.DataFrame.from_dict({\n", " con:\n", " fsm[:,reference.major_axis[(reference.minor_xs('parliamentary constituency')==con).any(axis=1)],'fsme'].sum()\n", " for con in cons\n", "}).T.drop(np.nan)\n", "\n", "for c in fsm_df:\n", " cons_stats[f\"fsm_{c}\"] = fsm_df[c]\n", " cons_stats[f\"fsm_{c}_rat\"] = (fsm_df[c]/en_df[c])" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### FSM / Enrolled" ] }, { "cell_type": "code", "execution_count": 177, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:29:05.128829Z", "start_time": "2018-06-08T18:29:04.745008Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 177, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAFpCAYAAABpr6nOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd4nNWV+PHvnabee7MlF7l3GwgtQBJKCiyphA2QzRLSSG+7m/xSNz1LSDakOAmkLwkQwFTj0A0YXHCTrG71XmdUpt/fHyPbkq2u6XM+zzMPmpn3fe8ZYc2cueVcpbVGCCGEECJSGUIdgBBCCCHEYkgyI4QQQoiIJsmMEEIIISKaJDNCCCGEiGiSzAghhBAiokkyI4QQQoiIJsmMEEIIISKaJDNCCCGEiGiSzAghhBAiokkyI4QQQoiIZgp1AFPJzs7WpaWloQ5DCCGECIqDBw/2aq1zgtXeVZcn6b5+z4LPP3jUsVtrfbUfQ1qUsExmSktLOXDgQKjDEEIIIYJCKdUUzPZ6+z28urt4weebC+qz/RjOoskwkxBCCCEiWlj2zAghhBAikDQe7Q11EH4jyYwQQggRYzTgRYc6DL+RZEYIIYSIQV6ip2dG5swIIYQQIqJJz4wQQggRYzQaj5ZhJiGEEEJEMJkzI4QQQoiIpQGPJDNCCCGEiGTR1DMjE4CFEEIIEdGkZ0YIIYSIMRpkArAQQgghIlv0VJmRYSYhhPAbrTUej5eeriFeeqYSt2vhuxILEUgajWcRt3AjPTNCCLFITqcLUOzfW8PdP92D0+Gmp3OIpctzufaG87ns6g0kJsehlKK9uY/84gwMBvkuKUJIgyf8cpIFk2RGCCEWYWzUwZ3f2sXhVxsYGhiZ9FxTfTf/+51H+Pl3H8VsMWKJMzNsHWPHxSvZesFy8osy2Hz+MhIS40IUvRDRQZIZIYRYhJ99+xGef/LYjMdorXE63DgdbgD2761l/95aAJYuz+XXD9we8DiFmMi30WT0kGRGCCEWqPJwM88/dXzK54pLs9l83jKWry6guaGbmoo2Wht7GRoYnXTc+ZeWByNUIc6i8KBCHYTfSDIjhBALtHJdIT/67b/R222lcEkWj99/gPMuXklZeT75RRlTnmMbGuV7X76PQ/vqiYs38+5bLg5y1EKM98zInBkhhBBms4l1W5aevv/p/3ftrOekpCXyzpsv5NC+etZsLCYlLSGQIQoREySZEUKIIGpt6uU3/7MbgOKl2SgVPV39IrLIMJMQQogFufvOPTTVdwNw08evCHE0Ilb5NpqUZEYIIcQCDA2eWb7d22UlLSMphNGIWObVkswIIYRYgNS0RAAKSzJZtio/xNGIWBVtPTNSglIIIYLowivWoJSaNHFYiGiklLpaKVWtlKpTSv3HFM9/UCnVo5Q6PH67dcJztyilasdvt8zWlvTMCCFEEL3l2i001Xfz7lsulsm/ImQ0Ck8A+zOUUkbgLuAtQCuwXym1S2tdedahf9Na337WuZnA14Ht+DqRDo6fOzBde9IzI4QQQXbrZ68iPVPmyojQ8mq14NscnAfUaa0btNZO4F7gujmGdhWwR2vdP57A7AGunukE6ZkRQkQ8rTWP3bef+AQL5euKWLIsJ9QhCRHWgjBnpghomXC/FTh/iuPepZS6FKgBPqu1bpnm3KKZGpNkRggRsRrrujn0Sh2vPHeCYwebAMjOTeWL33knm3Ysm/f1PG4PRpPR32EKEYYUHr2owZlspdSBCfd3aq13zvMajwD/p7V2KKU+AvwBWFC9AklmhBARyePx8tVP/JHeLuukx3u7rdz/+5dYVp5PyvjKodk0N/RQd6KdB/74Erd/5R1YLCZKV+ZhNMpIvBDT6NVab5/h+TagZML94vHHTtNa9024+1vghxPOveysc5+bKRhJZoQQEeefjx7m/t/vPSeROWX/S7V89RN/YtWGYsxmE8tX5ZOVl0JKSiJ5RekkJcefPnawf5j/+Mjv6e+xAfDZm38D+DaAXLNpCU6Hixs/fBkms/TYiOjh2zU7oMn6fmClUqoMX3JyA3DjxAOUUgVa647xu9cCJ8Z/3g18Vyl1aoOzK4H/nKkxSWaEEBHj0Ct1PPngISoPN9PbPXUic0r18Taqj7ed8/h7P3QJN3/sCvp7bRzaV89ffv3c6URmoldfqOHVF2oAqK/u5MZb38iqDcX+eSFChIFAzpnRWruVUrfjS0yMwN1a6wql1LeAA1rrXcCnlFLXAm6gH/jg+Ln9Sqlv40uIAL6lte6fqT2ldfhtm7l9+3Z94MCB2Q8UQsSUb3/+Xl56+uyVncFz/QfeQEFxJv29NhISLbz33y7x6/LqU+/HsmQ79iilDs4ybONX5RsS9F27Shd8/pXLqoIa72ykZ0YIETQer5fRMSfWETsF2akYDPPr5r7yui0hTWYe/PMrp382m42s2VjCxu1li76u2+XhJ998iJefOYHRaOB9H7qEd91y0bx/P0LEKklmhBAB5fF40FpjG3NiNigGbWOkJCXM6YPa69U43W56BoYZG7Lz9/tfDULEc+NyefiP237PeZeu4rKrN3DZ1RsWdB2tNV/75J85tK/+9GO/++ke8ooyuPTK9f4KV4hzeKNoO4M5JTNKqUbABngAt9Z6u1LqG8CHgZ7xw/5La/34WeeVAH8E8vDNN9qptf6pf0IXQkSCU0lLRopvZVFyUsKs5/QODvPCoXr++WoNq0tz2V/RTE1zD5uW5AU01vnyejX7nqti33NVeDxe3vS2TfM63+3y8IsfPDYpkTll54+fJCk5nm0XrvBXuEKc5qszEz09f/Ppmblca9171mM/0Vr/eIZz3MDntdaHlFIp+EoS75minLEQIgr1DY1Q29TDBRtL53S8w+nmtw+9wt92H8Lh8gBw8MSZ2llmmzsQYfrFj77yAHUn2lm+uoC1G0soXJJ1zjF93VaGbXbcLg+HXqlj79OVU05SBt8S8x9/7R/8/K8fJSs3NdDhi5iz6DozYSWgw0zjS646xn+2KaVO4KviJ8mMEDEgLTmBvzx5kBG7kzedV87Q8Bi7X67C4XKzYUUh65fnY3e5OVzdxomGTna/UkVL1+A014qn/fDUH/zh4tScmoysZP7j++8+Xbiv4vUm2pr6+O2dT2EdHJ3z9QZ6h/ncB39LVk4KmTkpfOQL15CTnxaQ2EVsCcLS7KCaazKjgaeUUhr49YQqf7crpW4GDuDrgZl2EyilVCmwBQifQW8hRECZjAa+fttVfOArf+L+pw9zvK4D53iPy6nnlVK43J4ZruLjcLrJSolnbMgeyJD9YqBvmN/duYeVawupqWijtrJ9wdfqah+kq92X4B1+7SRXX7+V6z9wIVk5Kf4KV4iIN9dk5mKtdZtSKhfYo5SqAn4JfBtfovNt4H+AD011slIqGXgA+IzWesriEEqp24DbAJYsWTKvFyGECB92p4ujNe30W0fRWlPT3MOAbYyBE63nHOv2eOdxXTfJm/MYaJ265ybc1FS0UVPh356kYesY9//hJR79+34++dV3cPGb1uLxeElMivNrOyI2eOa2YWREmFMyo7VuG/9vt1LqQeA8rfULp55XSv0GeHSqc5VSZnyJzF+01v+YoY2dwE7w1ZmZ8ysQIkZ4vF727Ktm25oScjKSQx3OJHani8qGTnY9f5xDJ1rp6j+3CJ0/1HcPEGdQaG9sv0XYx5z86CsP8LNv7+K6Gy/gQ596S6hDEhFGo2JrArBSKgkwjM95ScJXVvhbZ5Uhvh44PsW5CvgdcEJrfYcf4xYi5igUf3z0Nb7+qye4+e07+Ph7Lg55cbW27kHae6z8v188xoBtLODtOd1ukuJMuMZcAW8rEjjsLoqnmGgsxFx4o2gC8FxeSR6wVyl1BHgNeExr/STwQ6XUMaXUUeBy4LMASqlCpdSpJdoXATcBVyilDo/f3ur/lyFE9DMYFO+41FfL5I+P7ue7d+/B6Qrt6p4f/+lZPv2jB4KSyAC43F4yimQC7ER3fOMhqo61zH6gEBOcWpq90Fu4mbVnRmvdAJxTPEFrfdM0x7cDbx3/eS9EUVUeIUJs3fL80z/vev44je39/PDT15KROrfdof2ppWuA+pZePEEe8olLkfkhZ/vul+5j5z9uJz7BEupQhAiJ8EuvhBDTMhgmfzc4WtvOzV/7M3sPN5ze1ydYDlS2BGxuzExie7bM1Lo7BmfdeFOIiTQKj174LdxIMiNEBOnoOfcDq7t/mM/f8RC3fP0vPPD0Eb8mGHbH1HNTnC43XX3BT2QAemp6Zj8oBv36R0/gCvGwo4gsXgwLvoUb2ZtJiAjS1jM07XPVjd38sPFpfviHpynJS2djeRGrluZQviSXguxU0lISiLeYJk0a9no1Dpeb7n4bje39AMTHmYkzm+jss7JnXzW3/ssF2EYdDFhHqWrqpqK+k6rGLhzO0Hxw5pbn0PJ6eBfPC4X9e2t59yXfY9OOMr78vXeTlBwf6pBEGNMaqQAshAiN7jn2urR0DdLSNchjL05+3GQ0EGcxYTQoQDE86sA7y/DU3sMNC4w2MOLzwmtZejhx2F289mINTz54kHfddFGowxEiaKInLRMiBhyobF7U+W6Pl5ExJ9YRB9YR+6yJTDhymcJvvD7cPH7fgVCHIMKewruIW7iRnhkhIoTb7aGte/phpljRZw//7QwCZd22pSiDAa/Hi2PMSevJXhz2c+c1ndr+QIjpaGSYSQgRAodr2uZV/j9atfQMsnxpBn1N024FF7WcDjdVDWcmQMclmlm3oZjW+m4SE+Mwmgy0NvZiNEXPh5QInHCsF7NQ0fNKhIhyzx+sC3UIYUFrSI3Bwnk5BWnEJVh8v4BxDruboxVtWN0e+u1O3ONJjMvpDvpSfRFZNAqvXvgt3EjPjBARYMzh4tEXK0IdRkiU5mWQ0uNgbGCMzPIcMELvsa5QhxU0S5bnYE6Kp6a2k86hMZhiCwu324vb7WR01Mn6zUuoPtqC1jrk210IESySzAgRAZ49UMvoFHMjot2WJfk0P1nDkNs3vBYrQ0sGo2LZqgIwG6mu6fQlMHNMTE7UdfGmt24McIQiGkTTMJMkM0JEgH88fSTUIQRVRkoCK1NSaXy6Hq87tuYJmcxGlq4toLq22/fAPHtX3nrdVm7//NXnVIsWYiJNdG00KcmMEGHuSE0bx+o6Zj8wiuSmJlH7RHWowwi6+AQLBctzqDmVyMzTBRet5FNfvMbPUYnopPCE4RLrhZJkRogwd/8/D4c6hKAzGaLnG+NsipZmkZGbChr6bWPUNSx8u4bBgRHaW/spLM70Y4QiGkVbz0z0vBIhotCQbYznYnAVkzFGJq6u21FGS4+VIxVtHKlso6Wlf1HXq6ps58H79vspOiEih/TMCBHGXni9HqfLE+owgi4WvmWt3bKEoxVt4Oeu/oH+Eb9eT0QvGWYSQgSc1pr79sTeEBOAKYreZKeSmBzHiYaFzYuZTU/3uTurC3E2rVVUDTNJMiNEmOnut2F3uElKsNA9MBzqcELC1RndvQvpmcnYeue2aeh85eSmBuS6IvrIdgZCiIB4+rUavvbLx3F7vBgNCo839qq4ZqUl0v5a9K7essSZMCRaAnb90mU5Abu2EOEqetIyISJc7+AwX//VE6f3X4rFRAZgWVIyboc71GEEhMlkoHhVPk3NfQG5flyciSulYJ6YAw2ya7YQwv8OV7fhcsfeZN+J4uNMtL3cHOowAmb5xhIqqwLX6/T+my8iNy/29q0SC6Giapgpel6JEBGuZyC654nMxbq8bMas9lCH4XdKwZptpQFNZDZuWcL7b7k4YNcX0cVXZ0Y2mhRC+Nnq0tyYnSdTlJ1GodFC09P1oQ7F7zKyk8ksSuf4ifaAtZGZncxn/+PtsoWBmJdo2pspel6JEBFuy+piPvuBy0MdRtDtKMhl5Jkm6vbU4hqLvs00C8sWvj3BXOUXpJOdkxLQNoQIZ5LMCBFG3nReeahDCCqloGVvYxhOJ/SfYPSz1VV3YjYZg9CSiBaahQ8xheMwkyQzQoSR3+96NdQhBJXWkHd5WVA+8EPFOeIg0FtNGYwKHdW/RREIXgwLvoWb8ItIiCDyai9ah8eHwN+eOsTfnno91GEE3ZHmLpZfuixqP4rrKttZuzI/oG2ULcvFJD0zYh60Bo9WC76FG5kALGJS59gg36/YRfNoHz/e8q84vW5WpxWGJBaH082df32OfzxzNCTth4ODg/0UXF5CassY3XW9oQ7H76qPtBCfnojdHpg5QZe9eR1aa1SMbNAp/CMch4sWSpIZEZN+Vfs0L/ZUA3DzK7/kM6uvZnVaIVprft/wAhmWJK4p3ITFYKJjbJCKoVYqhlpxeFxkxiWTFZfCksQsNmUsxWxY+Dfi1q5B/uvnj1LdFNgJopGgo89G3uo8iMJkxuvVlBVnUlPX5fdrG40G6ms7p01kPG4vLc192O1OsnNSyMpOkaRHRB1JZkRMeLmnlvOzl2NUBjzayzOdFaefM6C4ssBXNfWJ9iP8vOYpAP7W9ArddiuDrtFpr5sbl8q9F3+SNEvivGPq7rfxlycOSCIzQVVXH4lGA3q8CnI0cY86fH37fk4kPB4vTz1+lJy8VG760KU0N/ay97kqjh5uJiU1garKNnq6zmw+mZObwr9/7AquuHK9JDUxzDcBOHpmmkgyI6LGqNvBof5GliZlU5KUBYDL6+a7xx9mV9shPrT8jXxs5Zv55rF/MOJxnD7vk6uuIsUUj9aa3R1nhnpqbJ2zttntsDLqcZLG/JOZ/RXN2EYdsx8YQ8pyMuj0RF/PDEBTXTebtpfS2DbA0NCY36//l3v28sQjh+nvnXlz0p5uG9//5sM8dP8B7vzlLRhN0fOBJubHE+B1hEqpq4GfAkbgt1rr709z3LuA+4EdWusDSqlS4ARQPX7IPq31R2dqS5IZERVaRvp4oOU1/nRyLwDXFm3lc2vexk+rn2BX2yEA7ql/gSMDzRzsPznpXJfXTZ9zmIN9Jxlwzn+X6m6blYKE9Gmfd7l9bxnH6jrQaI7VdrDveCOHTrTOu61o19pvJSHBHJX1ZgCOH2jEZDJQsjyXlpZ+v19/tkRmoqqKNk42dLOiPLCTk0V4OlUBOFCUUkbgLuAtQCuwXym1S2tdedZxKcCngbOXctZrrTfPtT1JZkTEax8d4F0v3olHnxma2NV26HQSc4pGn5PIAPym/ll+Vr0bl57/vkjFcVl84VuP8IZ1ZVyxYyXxFjNtPUOYTUa6+qw0dgzw8pGTGAyKYemFmZVt1MHqy5ZR90T17AdHKLfbi2tojLg4E44QbqhpsZik0J4IpPOAOq11A4BS6l7gOqDyrOO+DfwA+OJiGpNkRkS0elsX3zr24KREZr6sroV1+ccbzKgXk7BaR9j9ShW7X6lacAzijCNdvWSnxTM2FH17NJ3S0znEys1LqKqZfSgzUFavKyQ9Iylk7YtQC/icmSKgZcL9VuD8SREotRUo0Vo/ppQ6O5kpU0q9DliBr2qtX5ypMUlmRMRyeFx85cjfqZ3D3BZ/K4vLxXwkmYb6oaC3He1ipfhbR0M369cWUn+yl7ExZ9Dbf/f7Lwh6myK8eBc3ZyZbKXVgwv2dWuudcz1ZKWUA7gA+OMXTHcASrXWfUmob8JBSap3W2jrFsYAkMyJCaa25q2ZPSBIZgGZnL5sK0yH2atwFnFeD3Rb9Q3LDVjsnDjRiMhtZv7EkoBtRni0pOY7zL1wZtPZE+DlVNG8RerXW22d4vg0omXC/ePyxU1KA9cBz46vq8oFdSqlrtdYHAIcvTn1QKVUPlAMTk6dJZBq7iDg2l52vH72fvzS+FLIYPNrLkbQ6ktLMIYshWpVkp6FjaOdwt8tDc3UnKSnxQWszACvERQTyasOCb3OwH1iplCpTSlmAG4Bdp57UWg9prbO11qVa61JgH3Dt+GqmnPEJxCillgErgYaZGpNkRkQUt9fDTS//gsfaD4c6FDzaS/r1HjLz40IdSlTJiou93+fIsJ2yksygtVdckkmY7OIhopTW2g3cDuzGt8z671rrCqXUt5RS185y+qXAUaXUYXxLtj+qtZ5x+d+chpmUUo2ADfAAbq31dqXUN4APAz3jh/2X1vrxKc6d0zpzIebil7X/pGW0L9RhnNbk6GHzm8vo/3P0D4sEi4rRD1mPa/6r6RbqbddtwWCQrplYdmrX7IC24csJHj/rsa9Nc+xlE35+AHhgPm3NZ87M5Vrrs6tZ/URr/ePpTpjrOnMh5ipUc2Rm0m+yhTqEqGE2GbC3xOakarfLg2/v68B+wBiMikuvWBvQNkRkWOQE4LAS6GGm0+vMtdZO4NQ6cyHm7UBfA6/11oc0hg2WpSSbJs9taHb0UrYpLUQRRZeluRm0He0IdRghUVfZzro1RcTHB3Yeltejsdn8X4FYRJZTRfMWegs3c01mNPCUUuqgUuq2CY/frpQ6qpS6WymVMcV5U60zL1pgrCKGaa25o+rxBRW2W6hNplK2uVeSa0klzZTIJlMp3Xs8xD2ewYb2lWzsXElJnG/bBOMWR8wsKQ6kpu4B8lZmhzqMkDlxsJEVy3IC2sZtt7+JgsKp3q6FiFxzHWa6WGvdppTKBfYopaqAX+Kr3KfH//s/wIcWGsh4knQbwJIlSxZ6GRGllFJ8cc3beaj1AI+1HQ5K4tBvtNFxH2TmJ5OVaaGi8sxw0tDzvrloyRlmtl5STt2jQ6go6rINFZfbi2VVDtRG5/5Mc+EO4FYOm7cu5T03viFg1xeRJZo2mpzTK9Fat43/txt4EDhPa92ltfZorb3Ab/ANKZ1ttnXmE9vYqbXerrXenpMT2G8mIjJtySzlYyvfHLT2Whx9FCxPor/TQXPl1PNihgdcHN3Vx6gtdGXpo0199wApucmhDiNkTtZ0kphoCci18wun30NMxJhFDDFF5DCTUippfCMolFJJwJXAcaVUwYTDrgeOT3H6jOvMhZiPzrFBbnr5F0Edzsl6gzFobQmfEbuT3HV5oQ4jZNwuD/npiaT6ue6MxWLiunft8Os1ReTS+CYAL/QWbuYyzJQHPDheoc8E/FVr/aRS6k9Kqc34fieNwEcAlFKF+JZgv1Vr7VZKnVpnbgTu1lpXBOB1iBjwVMcx+p0jQWtvi2EZlX+btnq2CCCVaEZDGL5lBkdTXTdZuaksXZXv+z0YDbS0DzI4OLrga3o8XrJyYrfHS5wrHHtYFmrWZGZ8x8tNUzx+0zTHtwNvnXD/nHXmQszXkHOUu+ufC2qbBqcRj0sm9YbC/pZO8i8rISc5gQQX1OyuibnEpq/bSl/35GR6ydIs0nJSOFHbids1v81VPR4v3//mw3z3jvczMuLAOjRGcRAL9QkRSLI3k4gIyeZ4Us0J2NzB20m5Lr6N0g25NB6TOjKh0Nlvo7PfxtK8DMxxJtwOmZfU1tRHW1MfqemJFKzOo7JqfsvYD+0/yUdv/g1tbf14PF6+9NVredNVGwIUrQhnp5ZmR4vomcosoppRGXhnyVRzzANnyD1K6gaZMxNqWaNaEpmzWAdHMaJZyJ4EjSd7cDk9eD2aRx86FIDoRKSIpgnA0jMjIoYniDVmTunY6wx6m2KyMdnMc0qVh5rZuK2U41XtLHRfzuNHWrjzB4/R0T5IX6+NrTuWccNNF5KZJXNrol0wtjMIJklmREQYdI7y9+ZXg9pmjiUVW5/suRRqPbaFT3qNdhUHG1m1vpiaph48noVlNI89/Prpn5tO9vLsngp+tvODFBRJYb1oF46rkhZKhplEREi3JLItsywobZXHFVC0r4SBP5ixjwS/N0hM1js0QtHGgtkPjFE1x1tZs9x/S9kHB0b41IfvwWaVLQ9E5JBkRkSEXoeNF7qrgtKWoSKBrpPSGxBOKpWdJdtLZj8wRp043MyaVfl+u97g4Ci/+9WzfrueCEM6uubMSDIjIkKWJZkLc8oD3k6i0YJjeH5LXkXgebUmPStZdr+agXa4FzQheDpPPX6EmnmulhKRI1Y3mhQipHx7M72NtWlFGAIwzrvVWk7+C0Xo+9JoOSFLscNRR9cQqy9YRkp6QqhDCUu1le1sXFtESko8CQmL3w7B5fTwlc/fi3ehs4tF2IumZEYmAIuw5PJ42FNVx6GWdlxeL2WZGRgMir4jSXiG89iwI57jY41+aSvbnMLRx/r8ci0RGCajgcHuYTpsfZSX5zN2tA23U5Zrn63iYCMAeeOTd8fGFrcab3BghJ/f8SSf+sI1iw1NiICSZEaEnd0navnR0y/SMjA07THttZrsZSn0Ohffi5Jbk8sgg4u+jphZcoKFrNRELCYT8SYjoy439e0zJ5FmkwGvhoKsVAbqO1BATU0nGzYVc2J/Y1DijkRdbQOs21HG0Yop9/Wdlyd2vc57bryAgkJZ3RRNom1ptgwzibByvKOLT93/6IyJDEBz5wiFhtxFt5djSaF638CiryNmtzI/i/5XO+h8qYXG5xtxNQyxqjiHeIsJo+HcN1WL2cjmwjwy2p3kJiVQuCL79HPDTjeo6Hkj9jej0UB3r3+GS91uLw/+fb9friXCi9ZqwbdwI8mMCCttg3Pf2LG/TS96/kyJMxcVRbUWgiE9OYFtpQVsyshkQ1oG5cZEtpXOvHRaKXB2T14hNtBpo21vM+ZaGytNSeRnpmA0KLaUFbCtrJD4+hEaD7XhGHNR82wDHXW9p889ebKHNduXBuT1RYNVm0ro7PLfJqn/fPIYdrvLb9cT4SHWds0WImhMhrnn11UnrRTkxWNzz14PIy8ujS7Hub091kpZuTQfCXFmVmSlU/1cw6THOxr6UKUJkxbTGJTCYjZid7rZmp9LzStN51xPAWhoq+nBZDay5cKlVD975tr24emLFjZ3DmI0GfG4pRbQ2Vx+XNUEYLOO0VDbxdoNxX69rggdraNrbyZJZkRYSYmPm9fxGaakGZOZtYlLGGg00tEzxqatOeBWYNI4jHZMXgNVR/z37TWarV+ah2XMy8nDbVRXT/E707BtaQEHGjswKEVKUhxag7neRn5G4pSJzNncLg/VzzfMetwpQ0NjbDyvlMqX6+fzUmJCdXUH+Pnb897nqySZEWFLkhkRVspzs2c/aILB6kTWrVlKq6uHfHMGRgwjENxKAAAgAElEQVSMaDv9rmFKzXm88oKNU2/qL7101iRfrXnDtiJOHFz8JMlolZuRzJKkZKqePznrR2PNiyfZur2E7oY+bM1DWOJMOOxu+joClzBW13ZiMBnwuqWHbaKsrBR6+4b9es1nnqrgxlsuJjkl3q/XFaETjnNfFkqSGRFW0hPiKUpLpW1obh+A7T2jtPcAJNLGxCGJJDo4k8hMSSm8UoZtRlmjiurXZ09kALRHU/tq8+n7jtHAb9JZmp9Ofc9IwNuJNImJFvBztYG+Xhs1Ve1s3bHMvxcWISKrmYQImOb+QTqt/ipaN/sfqrLKN/rpKAVej+/3E44pn8Gg6GruD3UYYWfdjjKaWwLze/ntL5/F6ZD6PtFCVjMJESA/efYlPH6evDidFUkZ1J/sDkpbkUhr6IzzUHBxCcsuC84mn/Ph9WqWrJENKE9RCtb7qbbMdGqrOvjMR3/P/n0yTynSRdt2BjLMJMLKyyebZz/ID8zKgKHZiUvmWsxoaMTO0IidTaX+28TQnxweWck0UWNr4Huqaqs7+crn/4+bb30j9jEXx440843vvZuMzOSAty3EdCSZEWElOc7C4Jg94O2UJ2fSVtMT8HaiQbzFRPv+8Jwk3d4+iMlsxO2SpEZryEywkJ+bSnVNZ0CLCmoNf/jN86fvv36gkSuuXB+w9kQAaL/uSxpyMswkwsrb168OSjtVtl4KclKD0lakS4gzYx8J/GTehbDZ7GQXpoc6jLDR3NDDULcVk8UY1HazclKC2p7wDymaJ0SAfPjCHdx78GjAe2c8AMVm1i4pwuBVuGwuWtsGWLYqF7vRQ7zHiMfuwZOkMGvF8UPh2TMRDMvT0qgmfCfajqApXZNP44nOUIcSFkasdoI9peH1AyfZtEUqMkcSjSzNFiJgkuMsXLy8lEePVwW8rRPDZz6gFRqKoG3krKTFChemFgY8lnDWeLA11CHMaGBghPy8tFCHETacDhdx6YmMBmFp/CmHDzaib9Uo2S9LhIgMM4mwc0Fp8KuMaqXQU70Ra43RHbtv0HFmU0Rs6Ggbnn1Li1iRW5jO6Mj020AEQsXRVn78nUc4fLARj0yqjxALX8kUjquZJJkRYafbFj5F0Lan5XPsSHj3TARKSmIcxTlppGUnhTqUWbW2DrDuDctDHUZYaG/up7g4M+jtPvX4Ub74yT9z759fCnrbYmG0Xvgt3MgwkwgrLo+Hf1aHTw2LeB2bfyLxFhOJbQ66KwdnPzhMDNvDc5JyKMTHh+7f7e93Pk9uXhpvuWZjyGIQcxNNc2akZ0aElbteeJXKzvApZPf6aDcry3JCHUbQ2Z1uktMiaw+epuY+sgtk7gyAyRTc1Uxn+8kPHmOgP3x6WMW5fD0sUgFYCL/bW9/EL/e+GuowJhnxuKiIG2RFaWwlNFvKCuhpi5xeGfDtup1TNr+NSqNVf9sAmZmThwfT0xNZvyY4k9ldTg8vvTB5Er/b7asFNDbqpLfHX1uWCOEjyYwIC16tOd7RFeowzhFnMLAlMZf4JDNxljNd96XFWazbVkRuVnhXPU2Kt7BuaR7bi/NZl5jG5jlU8t1Ymk/tsw1oTxgOjM+ir38EZQi/b43B1tdtY6h1gJVLMlm7PJeVS7JIjzdz4mAjm9YVgdasLs8nLy9wtZb++oeXaDrpK0zpdnu47aadNDf2Mjxs5wPv/F/+87N/5cCr4TOkHIuiaQJwbE4IEGHncGsHdz4bfhMHXV4v2DXHK9uxmI2UbsujzWGj0jnIeTqf7r7hUIc4reWFWfS82kZz1dDpxzJ6k1m3Jg+b3UHf0CgjZ80zSU9OoP94dxiWxJqb9vYBkuPN2IO4LDmcNVSdW3vn+P6TLC3NprWmk4zsFAwKvAHIW3u6rHz1C/eyeVspa9YX09dj49tfeYDs3BQ8Hi8HXm3gwKsNXP2Ozdz+uauIizP7Pwgxo3CcyLtQksyIsPDwsRNhuTOzF3jJ2c4lW4pp8do4bD0zn6fONURJQQYtHQOhC3AGRqXO6V0Z6B5moNuXgBmNis2bi7AnGhh1ukiyWDAOOGnqDd8CeXORmZdK+8neUIcR1lobfb+fseY+1m0v5Vhle0Da6ewY4slHj/Dko0cAaDzZQ+PJyduIPPnIYeqqO7nwknJu+vdLAxKHmFo4zn1ZKElmRMjVdvdy/+vHQx3G9JTixeFzKwB32kfoStJcuK2IioPhVyF4tuRQezT1EwrihWdKNn+OMemVmY+aw81k5qfRH8IJu3U1ndTVdLK8PJ8LLykPWRyxRBP4ibxKqauBnwJG4Lda6+9Pc9y7gPuBHVrrA+OP/Sfw7/gKtn9Ka717prZkzowIuUcrqnF7I7PQllaKl6ztbNhYFOpQzqHDsq8r8JLyZc+t+XC7vSSEOohx//PdRxgckFVQ0UApZQTuAq4B1gLvV0qtneK4FODTwKsTHlsL3ACsA64GfjF+vWlJMiNCqrqrlxfqGkMdxqK9ONrGmm3+XykSZzFhmKICb3F+OtkZMxezMxli88+7v38EY4iXJkcap8Md6hAAsA6N8Zd79oY6jJihF3Gbg/OAOq11g9baCdwLXDfFcd8GfgBM3JDvOuBerbVDa30SqBu/3rRi891OhIXKjm6u3fmnsKors2BK8cpQO+u2+m8rhrTkeAo3ZJO+MY21qwtYu7qApdvyWLEtn5pUG03ZY6zfMnV7S/PSsR7vmfK5aDc4OEr5eaWhDiMslK3Kp3xDMSbT9G/1BSWZ5C3NCmJUM3vkwYN0dw3NfqBYnMDXmSkCWibcbx1/7DSl1FagRGv92HzPPZvMmREh8/LJ5lCH4F9K8ZK1lcINySw3pVNb0YndufBvvEWrsnjZ6puY2cD4m7t18jF7ba1cvLWI+opuxhwuwLefUnyfi/6B2N2v6HhFKxlZSVj7YnfIYt22Uo5XtePVYEwwk5WZTFpaAs0t/aSmxJORkYjd7qa5uY/WMFqV5/F4eeDeV/nYp68MdSjRb3Ej0dlKqQMT7u/UWu+c68lKKQNwB/DBRUUxTpIZEXRur5ffvXyAnz3/SqhD8T+laLeP0M4I2zbkUX/w3KWxZysrySIhyYLBZAB8Ow87Lfp0IjNbe3tt7SxdncoyZxKG9jGajnXQ7o3tomSZmckMNUb2qqzFUgq8Xg1K4fFountsdI8Xq+txDNPTO3zmwDDzyD8O8r4PXEhmmNdxinG9WuvtMzzfBpRMuF88/tgpKcB64Lnx3dbzgV1KqWvncO455pTMKKUaARu+WcXuiS9AKfV54MdAjtb6nPWQSqkfAm/DN6S1B/i01tG0ul3Mxz+r6vjGE0/TMzwa6lACrts1SlZ6EobSOLKNCeghN1V1ZwoDxltMlG3I4xVru+8vyzPhZPs5l5tR06iVJqysbPSgA1E0JMJkZCRhbR6IyMJ//nL8QCMrNhRRVx95w40ul4cnHz3MjbdcHOpQolqAVzPtB1YqpcrwJSI3ADeeaVsPAadLdiulngO+oLU+oJQaA/6qlLoDKARWAq/N1Nh8emYuPztZUUqVAFcCU44XKKUuBC4CTu04thd4I/DcPNoVUcDj9XLXC/v41d7X8MRILts5Nkx2SRIdIwPUMgAK1m/NIWEALAlmWs0jvkTGT5alpzM21B6xBe/8Zd3KfKoONkXM72HpugIGuqzYBsYwm43kL8um+USnXyqaecdcfogwNO7908tc+daNZOfI6rRACeRbsdbarZS6HdiNb2n23VrrCqXUt4ADWutdM5xboZT6O1AJuIFPaK090x0Pix9m+gnwJeDh6WIC4gELoAAzEH4160XAdFmH2V1Vy6GWdp6orAl1OEHlQtNhnzwX4bit1/dX5xq/+YkCCnuNNPnvkhEpOTku7BMZc5yJuAQLaTnJpBamUVHXhcsIhtxEnMBYvJGU9ERSc5JIyUkBk4HhTiut1fN/63Q5Z3z/D2tjo06e3VPJe268INShRCVN4Ivmaa0fBx4/67GvTXPsZWfd/w7wnbm2NddkRgNPKaU08Gut9U6l1HVAm9b6iJpmzFVr/YpS6lmgA9/77c+11ifmGpyIbMMOB0faOvjO7udCHUrUe0N6AU33yT43RUUZ1LdbZz8whJZvW8KR+i76rCNgPTNB2Ts+PNjaNgAW6B0agSHf89kLnDvS2zVE+eoCamoj8ztkVWX4FaOMGhqIwQrAF2ut25RSucAepVQV8F/4hpimpZRaAazBN3mH8XMv0Vq/OMWxtwG3ASxZsmSu8YswNTA6xtt/9Ud6R6J/bkw4ODbWx/oLCmndF5iy9JEizg/1ZTSwfHMxDosRk8lIosnIiRdqZz2vZHU+HQ29uGdbwWaef4z9AyNkZiRiG5j670kZDSzbVIw53owyGfAqcHm8eLxejN7I/cBKTo4PdQgiQswpmdFat43/t1sp9SC+eS9lwKlemWLgkFLqPK31xOUb1wP7tNbDAEqpJ4A3AOckM+NLunYCbN++PTYmVUSxxyqqJZEJIpvDyesZXjZszKHzaORN+PQXW+/ilxiveeNKjlSdSQoNBsXaHaV0NfTgHHMxNupkzRtXcvK1pklbJ1iykzC6XawszKStop2hvpFJw125SzJJK82cdO258no1xesLsVvteN1eRq1jZBalU93eT2F+OnFjbiwpcRye4torCjLn3V64yAngrt4ixjaaVEolAQattW385yuBb2mtcycc0whsn2I1UzPwYaXU9/ANM70RuNNfwYvw1D8yyv88LVU8g83udnOyzEJqrQnXWHhUdA027zSrlxKS4hgbccx6vjIaaO2ePEzl9WpqOwcoXpFD38AwZTmpHKlqp2x9PkleBUlmTErh8mqsNjuHq9vBBNlr83A3DZJdkkFCajz9ThfHqzsW/NoO10w+1zvmxOFwc7LJ97abZp/69Q1bI7fe0PKVeaEOIbrFUjID5AEPjvfAmIC/aq2fnO5gpdR24KNa61vxbRx1BXAM36/tSa31I4uOWoS1jMQErl5bzj+OVIQ6lJjTOzrK6ouKaPpnbE4FNsf53tJMFhMpGYlYEsykLcnE7nKTZDBgt9lpOdGJ23XuxNiEpDiWbl8yZc+Jw+mmvtHX4zU45EsOTjb3zRhLb98wxjQLgwM2GPB/3Z/2zsFJ94emSVo8CSbKNxVTe6wt4pbtTzcfU/hD4DeaDKZZkxmtdQOwaZZjSif8fAC4dfxnD/CRxYUoIo1SivLc8CmPHkuyEhPoeyV2h5kyitIxZiVS19RDp9MDYx6onpycpJZmUJKbSrzBQOvxdmwDo6y5eAWVTd0LGgKaiccT+g1Ue3pt9PTaWL2lmLqDvgrxqzaX4HF5qKvwvV4N064AU0YVsno92TkpIWk3ZkRWbjsjqQAsAqKme+ZvrcL/lmdkkFnlpLM7NucqxSeYqWrpZXBw5tdvtY5hHe/FiEsxk5CTzZG6jqiaPzCVqppONm5fin3EQUvPEA67i7gEMyvWFdLRb0NbnQxMmHOUmZNM5pIMxuwu+hv7GRtxznD1wCheIl+KxNxIMiP8zunxsOuYrMAPtDiTkR2JubhNGnO/h8a/NzH75gnRy+XykBZvYZC5J3MOhxtHmOwYHQwn2/qx21243B4sFiP5K3M4Mt5ztbQki8S8ZJISLJiVgfqWXrprfP+i8gvSiBuwMxjEPZyUgmGbnfh4c9DajCk68HVmgkmSGeF3FqORovRUmvoHZz9YLJjD7cFRa43p1UsTedxe3CMO0tMSGLKORX1Py0LYhs/sk+F0eqg/eebfTlPL1L2p5cvzsHZag5rIgG+lzS/ufIqvfeddQW03pkTR38j0+8ILsQgGmbgXFHH5iaEOIaz0ddvITk1k5ZJsDAb5N7hYqakJ9Jzso7cz+IUIk1Pief/NFwa93diiFnELL5LMCL9zut0MjEbuctBIMnRiINQhhJ2TNV24XR4sFul4XiyrdYzc5dlB/wJvMhn43H+8jZWrCoLcsohU8tcu/E4phckgeXKg5SQlMthyzkb1MU8D2mzEbo/cTRbDRVFhBrZOW9C/h1/9js1ccvmaILcag2SYScSKlxuaaOyb/tt/fW8/VV2T52yYjUYe/9gtbCmWb1WBsiYzm1U2GWKayrotS04XkhOLYzAo7HMoNuhPmVnJ3P7Zq4PaZszSi7iFGUlmxJRcHg/ffOIZ/u0v/+Adv/4Tdzyzl2GH703N7fXS0NuP0+Phhnvu5c5nXwZAa43D7VsZkhIfx8ai/JDFH63WZmazozuZ4b810/R0c6jDCTvFpVlU1UXmporhqKW1nwHtZt32pUFrc+WqfIwm+WgKuFMbTS70FmZkmEmc41BLO9996jmOtfs+FJweD79+aT9PV9djMhoZGB2jyzZMUVoqVruDjMR4Pv+Px6nu7qVt0MrO9/8Lz9Q08IdXXw/xK4l8y9IzKBqLA48Xe+sIHXua8X8t2eiQmBTHiNuDy31udV+xcFoDxuB8eN1866W891/fEJS2RIztzSTCh9Y6oOW93V4vd72wj1/tfQ3vFP/K63r7J91vG/KtcPjHkcpJj3/gj/cFLMZYsikrl4H7m2h0n/l/EX7fh8KDBgqX51BdG8uVdgJnqDtwy7KVggsuKufCS8u5+u2bA9aOiG6SzESIp07U8uVdu8lNTqIsK4MfXHc1aQnxfru+0+Phk/c9wnO1J/12TbFwy9IzGHm8A+2Ooq9OAVS8JFMSmQBZXpZD01H/bvMw0Uc/dSXvfN95Abu+mEEUvb1IMhPm3F4vO1/az0+f881LaewfpLF/kEMt7VxevmzR128ZGOTufYc40dnN660L39FX+Ff83kFs1uBOvIxkGTmpNPcEvxZKLEg0Be5jYv2mEq5/746AXV/MIgznviyUJDNhTGvNJ+97hGdqGs557htPPM1Fy5diMRrnfc0/7z9MY/8gZVkZ/PCfL+CQOQZhJ2tzDraOkVCHETGGx4K/b1AsSIg301jlny85SoHJbMTl9JCSEs87bzifq962SXbGDiElPTMiGB4+emLKRAag0zrMNx5/mm9ccwXNA0NkJCaQlTTzUt3+kVG+9tjT7KmuC0S4wk9yk5Lo3y8bdc5VXIKJJqm3ExBlBZnUHG1d1DW27ijjHe/cxrbzlhEfb+bZPRWkZySyaWspRqOsWgqZMF1ivVCSzISp3uERvvvUczMe88DhCh47Xo3d7SYlLo73bl3Pl9586ZTH/u/zr3DPvkOMOOUbbLgrN6TQ1Cb7Lc3V0mW5nGjoDnUYUamlfuG/18RECx/55Ju55totk3pfrrhyvT9CE2ISSYvD1H/vfo4h++xzJuzjdV1sDgf/d+AotinO+fuhY/zyxVclkYkQe22d5N6w+PlQsSKKvlyGnZI1+RQuzQTm/3t+7wcu5K3XbZVhpLC1iBozYTjXRnpmwtDuE7U8UVkz7/NGXS7e/bu/sqW4kCvKl7EiJ4uSjDR+8/J+PNFUUCAGHOzr5A3vXU7r3+tDHUrYq6lop3xDETVSLM/vKqs7WFqSSV55DmM9I1gHRqc8Lj7ezDvfdx6XXLaG9EzfcHd2TmowQxULEUUfC5LMhFCn1caIw8mI08Wy7Ezue/0YCsXd+w4u+JqnVjs9eLSSrKRElmdn0jww5MeoRbCE33ef8KQAa7cNs9mIyyWT2f2tqcVXX2plUda0ycz3f3oj6zaUBDMs4Q+SzIjFcrjdXHnXPXi1b+uA9IR4Bsfsfm2jb2SUvpGp33xEeIs3mbC+LPNA5qqny8r67Us5UtEW6lCiisGgUErh8XhxOd3nPG8yGfj4Z65i7friEES3eG6XB5fTTf3xFtafvyLU4YhFkDkzIeJwu/nSmy8lfryGg78TGRHZ7G433osyQh1GRKk62kpOdkqow4h4S4ozKVuaTUl6CokuzdryfDavLaK7bXDScYXFGXz7R+/j7ddH7ryYvY8e4tHfv8CIdSzUoYRGFG00KT0zIZIaH88HdmxmzOWiZWCI+18/LvNaxCRZI0bZh2ke3E4PWSnx9PTKb20x2jsHKUxLpmN8eOnEa03nHLN+Uwlf+867yMhMDnZ4fvXGf9kOELHJ2KKc2mgySkgyE2IfvnAHLo+HvfVNp/c6EiI7MZGhI/2zHygmqa3sYM3mEk5USzXr2RjMCq01enz0qGRHKilLzQys6ifxVQWNU5+34w3L+cb33oPFEvkfHzGZxEwQTUXzZJgpxEadLj76t4clkRGTrDakMtAoE7cXoqGinTWrCkIdRljLXp5I8ZdMlF6YTkK6icQsMx1vauHYsmpaXT1Yz7eSsSKRhIzJCcvHP3Ml3/nxDWGVyDjtLvQ8e7WddhfP3P8a9tEYL1cRRcNMksyE0KjTxYf+8gB768/txhWxrdEwitEsf54L4XZ5qDnSwoa1RaEOJTwZNN4bhjjp6qDjolZcH+3De9sADq/r9CEtrh56P9hN8RUZYNBkZafwk1/dwvXvPc+vvRnNNR3UHln4+99zD+7nvau/wPdv+x0Vr9XjcrrZt/soj//xRaz9w7z2z+NTJjr/+6W/8qNP3MO3bvklR1+afxkMEX7CJ72OQSajQVYbiSktJYlmlzfUYUQuDRUHm9gkK5zO5VXkV+fTu8zKiMe38MCB65zD3NrD8c11ZO9I5XsrbqCsMM9vIXQ29fDQb57l8T++yPoLVvKhr/4LKzYumfd1EpLicYw5eWHXQV7YdRBLvBmn3fda/vC9hxkeHOWamy/h9h+8f9J5l71zByUr87nnvx8iNSuZjReV++V1idCRZCaELEYjlywv5S8HjoQ6FBFmXrJ2sPWGMuJOOmh9tT3U4UQkBRw/0MTGLUs5Vt2GzK8/o/L+Pla/dSU1G+rw6JmTZrPR5LdEpqulj/vveoon/rQXj9vX7uvPn+Bz+2r5wBfeznlvWc9gnw2FYmzEwfoLVvDanuOUrMyjdE0RfR0DfP8jd/ONP3+ctKxk2k9OLl9wKpEBsPb7Nmrd//RxbAMjpGQknX5u22Vr2XbZWrILMihbU+iX1xaJomnOjJrvWGMwbN++XR84cCDUYQSF0+3mlj8/wKEW+cAS51LA9qx84kdg8HAvgy0yt2ohVm8oorqxB7dberuWnJ9G/OVuqrzN6DlMfnhn8UV8ZtW/LLg9rTXH99Xx8G+f5dBzJxgbnnsZioLSHDoae0hOS+DGz72NP/3oUcaG7azcvJRR2xhtc9w76op3n8fnfnZLWG9sqZQ6qLXeHqz24paU6KLPf3bB55/8zOeDGu9spGcmxCwmE3e991puuOdemvoHZz9BxBQN7O/rJC85ifTRc4cCxNxUHWtj+ap8mruHsNtj9/eYmGVm5M19nHTN/b1mWXL+gtpqqe3kvp8/RdXBk7TUdi7oGh2Nvg1Xh4fG2Pn1+08/Xnt4fvNsTk32/cxPPkBKetLsJ8SCMJ3Iu1CSzISBzMQE7v23GzjW3smR1g7qe/t58kRtqMMSYeISSx7tu1sZlWRmUeqrOykuzWLA7MBqi80ilcuuSeOIa+7L1nPi0rgyf+u82tBa8+Cvn+ae/34IdxhtL/Hy44fpaevnbbdcyo63rCczNy3UIQk/kmQmTGQmJvDGFWW8cUUZgK+Q3uHjPHS0kk7rcIijE6GSn5xM5zPtOCWR8YvWxj5y89OwZCXT2xdbf1c55YkcL6qZ87dxozLw7Q03E2+0zLkNx5iTb978S15/oWqBUQZW7ZFm7vzcn3nHhy7j4997X6jDCb0o6pkJ3wHEGFeSkcZnL7/odHIjYlPn8DCeK7OIS40LdShRo7tziKIY+1auTMB7bLNO9p3IrIzU2FqxueZW6l9rzR2f+mPYJjIT1R5pQmuN1xvbc6iUXvgt3EgyE+aWZ2dO+fiWYikKFisaBgcpOH9h8xbE1KKoivusTPEGVn4+iU7XwLzOs3td3FH9INfv/Rbfqfg/Dg/UT1mzxT7q5IWHD/Kh87/GC7sO+ivsgKo6eJIffeIeal6P8RpfUVQ0T4aZwlzfyCgGpfBOeBO5Zm05P3nnW7n30FG+8fgzIYxOBE2yMdQRRJXRGJkEnJhlJuejcMK18A9tp9fN7s5D7O48RHFCNtdXbeDyq84nuyiLEdsYX3j7j2msirzVmM8+sJ9l64pZvU16v6OBJDNh7j1bNvDwsRNctWYlWoNXaz57+YUopXjPlg00DwzR3D+Ix6s51NLGkN0x6zVT4+O4cvVK7j98PAivQPhDjyU2PnyDpX9wJNQhBJxGU/ARIzWuVr9dM6fKzM5b7+G3ht+z45otxGWmRWQic8ra85aHOoTQCnAPi1LqauCngBH4rdb6+2c9/1HgE4AHGAZu01pXKqVKgRNA9fih+7TWH52pLUlmwlxuShIP3vqvZCYlnvOcyWDgy2++9PT9xyuq+ew/Hp/xeksz0/nimy5hWVaGJDMRpKq/jwvet5zWv9UTQyMkAWGJM9HfH/3JzIabcjji9t/8ldWeAio+/AoK8Ho1rz52iI1v3uS366MU861sWH7VRpTJiMs2RsMC5urklWTN+5xoEei5L0opI3AX8BagFdivlNqlta6ccNhftda/Gj/+WuAO4Orx5+q11pvn2p4kM2EuzmQizjS3/01vXrWcN5Uv5+maes5bWsyB5rbTw1Obiwr48lsuZWuJr9pls9S0iTj7+jvYtjaL7sq+UIcS0XLyUmnuif7ig5kOzXV5WYx6DByyjjLksuPWC1sqnWdKp+OmI5M+/FIyk2ltnt88nLMlZiZRcsU6Om12+gZHyUpPpMBiouqRQ5OOsyRaMBgN2MeX1Gtg1TWbONLl+/9osRhZ++7z8fQP013RirVr9k1al60rJjMvtiaCnyOwk8fOA+q01g0ASql7geuA08mM1nriH2ISi+grkmQmilhMJr5+zRX855WXUpyexsf+tou2wSFSE+L5883vmbRB3KmKw2ajEZcnfGpBiJk5NiaDJDOLkpyWCDGQzKQP2fl09t0A6FxwazMtnnIqHKv4WTO45pjYxBnMxD9kPzIAACAASURBVP93L4Odk/eRKywvxJgQj33UidPhnvZ8g1ERn2BmdHjyDtXJOSkUXraWwxOq+Hb22OgENr5lA2N9NvoaujGaDKRfsobmzkGWOt10VLSy/O1bOdxw5jyn03P6fsqqArKT4uhtmLk68FCfjbb6LopXxPDk+sAOMxUBLRPutwLnn32QUuoTwOcAC3DFhKfKlFKvA1bgq1rrF2dqbE7JjFKqEbDhG9dyTyxhrJT6PPBjIEdr3TvFuUuA3wIl+H51b9VaN86lXTF/eanJp3/+xfuuxaAUI07nOTvdXrdxDVevLef2+x7hxfrGIEcpFsosCxAXzWyJve9wSoFZuVhmqGCZuYLK7H9n3+AoA66ZN7o1KSNlfzFy8ulz591U7/PtNm0wKFZdUI4lMZ7qE524nR4SEi2ULMvGbFBUvHCctOX5uJwmXE5f0pOUlYzeVMqRabYjONo3DChM5QUkJliobfJ9tDSYDJRcuXFSIjMpXpOB9Nb+WRMZgP4uK8lSDXgxspVSE/cd2qm13jnfi2it7wLuUkrdCHwVuAXoAJZorfuUUtuAh5RS687qyZlkPn/Vl5+drCilSoArgeYZzvsj8B2t9R6lVDIQ2wv7g8gwnsAkWc4teqWUwu310Ny3uG5iEVxWr5P0pWkMNs3ejS6m5o7i2iLbNqdx4dYe+geTKczrmva4L+X8jvqMjdxaM/NKnrXPpVJ99+szHuP1ak68XE1KZjLlW5fjHB6jtbqNymfPTAxuqWqjdMMSMkpLsJfkMux009DSP+vrcbu9k6o1u91eTrZOf152RhK6x0rx1lJaDzXOeG2tNfff9RS3fv1ds8YRrRY5Z6Z3lr2Z2vB1YpxSPP7YdO4FfgmgtXYAjvGfDyql6oFyYNpNGxf7FeUnwJeAh6d6Uim1FjBprfeMBxVbJTfDkMvlpqN1gJqKNh595igrhtw0lYY6KjFX9QMDpG+MZ93yJTQ/M9N3CDGd4ZHo3crg/W87zJby2cs1KAWd7jPDK2tSsrg+q4e7O9PptPu+/G5pKKDyv1+Zc9u2/mGO/vPItM83Hmvm5LFm4q6/iJFR57THLUZnjw0yklEKytYV01Ex80qulx8/ws1fvhZLvDkg8YS9wA4z7QdWKqXK8CUxNwA3TjxAKbVSa31q7563AbXjj+cA/Vprj1JqGbASaJipsbkmMxp4SimlgV9rrXcq9f/ZO+/wOMpzb9/vVmmLeu/dkmy5dxt3Y7rBdAgEQkIS0hMOJ5CEJHBCSW+EcnLyJYEkhEAgdDC927hblmTJVu+9S1vf74+VbdlWWa3KFs19Xbq85Z2ZR/LuzG+eKrYDdVLKg2eGMIaRA3QKIf4NpANvAN+V0sMsNAWPqatu49Vn9/HGiwdobz2lKdPmxbO50oRKp2JnfJfrLKfg0+QYw2h8u2b8hQpnIYHm1sC8p8rJCiE1zv2KniztUW5MWM/coFp0oo2F+g/YZfo8zYOCVFUUR7708bRUzo1xvZgypITQrNiTYkYCmety0QTrUA1LMG6obOH44RrylmVMu00+xzRXM0kp7UKIrwKv4SrN/pOU8ogQ4h5gj5TyeeCrQogtgA3owBViAlgH3COEsOGK5nxJSjmmK89dMbNWSlknhIgBdgohSoC7cIWYxtv/OcAiXKGofwI3Af935kIhxK3ArQApKSlumqUwFo31HTz/5G7aWnr44I0i7PazNWRloWvoXMaiRFQIJQbowwhgrT6WiifLlfJsDwkNM9AxMD1eAW+QkWbmoe8/jBASlcqOWuX+NzhOU8Xnwv968rkkiG+ZPiH0xbk09mho1mqwW0dP7PWEvMtXcbh3/F5YU0Gf2pVflrwknZ7oEI40d0OvhRBzEDqDHku/hZwt8zhU0Tw7xcwMIKV8GXj5jNfuHvb4G6Ns9wzwzESO5ZaYkVLWDf3bLIR4FliPy9NywiuTBOwTQiyXUg6f9V4LHBhWmvUcsJIRxMxQ4tBjAEuXLvXBZsn+ReH+Ku69/Z90utlPo+ZII6EZkXTIwDnRBxpqlYqWT5oUITMJIqNMdNSNn6vhLzS3WrA5gjAGTT6H6s+/XMdTv+3ghDc/Pj0OfZCG8oOVk973CdQhBuidmUqyyvoO5l62jEO17TiaTx2zu2eQxA15RGo1HKppo/75fWRmxbFkUeqMeI18igC60o5bGiGEMAohzCce4/LGfCqljJFSpkkp03CJlsVnCBlwxczChuJf4Cq7KkJh2vn7H99zW8gA2KwO0lEy+30Zu9NJ5LzZ2+RrKgg2B014m8T4MBalRxMVaRp/8QzT22vlvf3nT2of772+lR99cSNP/fZ0kddQ0UxlcT1pBamT2v9wip94l7zUmfkMW60O9le14nCc7a2qa+yivMbV4qC1rZfbv/cU37jjHyN6rwOaAJrN5E6dZyzwgRDiILAbeElK+epoi4UQS4UQfwQYyo25HXhTCHEYl6f8fydvtsJoWC02XvvPfnQelJ/Kd1sI5tQMoDChxYQGtYRY1cQvAgpTy6rweGren7rW9LMRldq90vboSBMLM2NIszlo21lI8Qv7ifLB8JRKJYiPOvMe0n0KD2zi/ls72fWaqxR6JIJMwR7v/0ycNjsD+48RE+V7wvBQYe1plVOzgUCamj3uFW8oRDRmz+oh78yJx3uAzw97vhOY77mJCuPx8TslhIQZ+ODNIt586RBdHZ61au9o7SX/QxVBJh19nQN0d3ahVquQEhIy9TTlT7HhCuMSFhREjjGMo30daCwS6fDBs4gfMThGDkhoSDBpMSH0V7ZS/W4JPWe8X7m7nAWXLuHgsdFLnr2B1XZ26wV36BvI584rz/wtz6Z0bzlzVmRzdFfZuGvdoae+naSFmYzfCWbmKS1rZOVsn9fkp8y+7lEBRmN9B4/+4lUaaqemX0xbUzcMO1c7h7oDN5S3sjovlT2iE6uSJjxjdA4O4jCC+YUOKuhQ8mUmSWfX6U3igoO1ZCVGYG/sovKTYxx1usTiaH/nyp2FRC1Np7XNNyqinE5J4bEMlk/wRkMSwveuj8JuGxh3bd7yTIqHGuTpDTpi02KoLpq4hzB+QToqrRrDkiwOVvpmF+tf/O51brnxHFKSI8jPTfC2OQoTQBEzfo7JHERX59hdPKcCm9VB/bPlJABZS5N5P6UPiyJqZoTCrhZyr0mj76V6LD2+F+rwF4Ra0NLag1ajJis1EnXXAJWflFH2aYXb+7D0WYjrt9CuEjidvuEla22fWAh40JrNb+9K4ei+8RNxgwx6HHY7iVlx2Cw2pFBjCJ14iChj6wLK9cHYbA7wUSED0NLawwO/fJnFC1P55f1Xe9uc6cc3PsJTgtIb3Y9x2B088eg79M9QqeMJju2pIU8VSrjQncqxkZI0lZGtvZGsK9KzZSBywhNwFUbGYndwqK2Z+LXKnaKnqFSCvJw4CmJDMZY3U/GffRx7pxj74MRLj6s+rWBBatQ0WDkxEuNCKUiPIkXUuf1V++CNc7ksJ5S3n3avomiw30LpvirqylvobOujpbYNjVaNOS7MbTuDQg00R4S5hIyfsO9AFS++MnoDwIBgEvkyfpkzo+B7WC023ttZxJ9+u5O2lvFj3tOB5sN2Ilt7yTgnFWePjdaKDjpb6zgZVS9pYvHl6eyTyriEqWCtiKHylUpvm+F3pKZEEqZVUXugirIXx27LPxGKXthP3iWLKR42Ayg8zEB/vxWL1Y5arcLhcJKRHIGurhVNagyysRONSU/zgQocFjuaYC2GyBAqDcHY7e57OY1GPak2G2X/eI9moASYv2Ah+QsPjLmd3ZnITz7fzuhBtLExxISSuaGAugErA+GhzI0Ipujxt8m7Yg19dW1UvX92oWpwhImUK9dS6MPemNH4/aNvsXljHsFBnuUk+QU+KEo8RREzfsj//WYnz/1jl1dtaG1w9bUofWv0DtPGwj5iCvQ0O2fWcxRo5EZEUv9S/fgLFQCIiwslNiSIpqI66t8+wnT85QTQ8FYRizblU9bcRWaUidK/v49GoyJteTY9NS2YV+Whbmin7M3DY+ypnuybNzNgd1Bd3zlq6KogVI9Kr8VmDKL93ULKjp+ehFxXGUX+wrFtbm5IATxrgieB7nlpNA2bp3Sg3oZ5+2oOdgyiDwsl7qatGGqbOf7GwZNyKX3bYp/NjxkPq82ORq0ef6E/o4gZBW/xzOMf8fw/d3vbDLeoOdrMPEMib6UrYmYyRNQ6qelVcmXGIiLCSHKMmc7yFuo+PMpMXD4Hewcpfn4fadkxFL0w9J20QPnbhQC0HHVPRh37f28SHG7EuTBr1DVCq6bonx+O+N6ijUlsvuS5cY9Tst+Mq2P8xAlPjaJzBKHVMxTitljt1DR0glpH2ufOJUxIbK1dYA6G9vGTjH2R1Suy0GoDXMwEEErOjB/R3NjFY798zWcSD8dDo1XTlRHALtoZojC8n+hcpVnemRiNeublxpMdFkTPnnKKXjpAfXHdjFd82acgFyTjomUnH5tNetKSwpmXfiov51BrP/k3bxpx28MfNLDvo1UjvtfckIjdpsZhV9HqeTsaOqtayY53L0+msq6DA7WdFFvhYJV/dltWqQRf/eLIf+9AQaDkzCiMQGNdB7EJYQghkFJy9EgdTfWdrD933pQdIyYulPsfvpF7b/8n/X2+7e3IXJxIc4aGvU4lZ2aydFssHEwRJFeqcQz6TxLldKDTachKi0J29VHxaTlHD1V52yTaW3pRTaK6SQKdR6pJdUpMiRHUflRE84CVkAuXEBykZWDQRmZKJMf+9dGI29ttDn729WD+54m5vPNiDs01grR8BzaL4OnfNRCZkE97Yw/z1sQw3DMjVILEjFh0Bj0CcDicVB4ZfYBp884DRK/MpcXNsnR/uekaibBQg092fJ5y/Pe/6CwUMTMF1Ne0c8tlvyM6JoSsvHiOFtbR2tyNyRxER2sv269dMSUzP6SUVJU3Y7HYpsDq6SHtkiwGNE5KVIPUOSc/L0YBTDodC/rMVA/O3knZ8XGhROnUVH56nLJi3+qC3N9nITE7nho3w0pnIoC6fUO5ZwdOlYkX/+tjNHotBectovgvb43pcertHOC+LyfSUOH6jLz/n1PvNVW5BEx1cSMJWXHUH3O5aLR6LW0NnfT3uMJAKXmJRCdH0lIzcpCuq7aNXJWkxaPf0r9o7+hj38Fqli9J97Yp04ePelg8RREzU8CjP38Vp8NJU0MnTQ2dJ1/v7Rnk4Z+9gikkmC0Xnd5E2Wq1Y7XYaKjtIDo2lLAII53tvWi0akxmV/twm82OdErUGjWv/HsvLzy1m8pjvtg304UQcFDb7RpWqbSgmTRqCdEmI/FHHFSXeUfIREeaSIgJ5XBJHd660Y6PC8VytJ6SVu9U7o2HyRxEQ/kkYjhjYLfYKPnP7nFDZw67g4aKsUM6bQ2dZMWFoVKrcDqcWPotFKzN5fD7JQBUF9eh0apJn5tMf88ATdWtZ+2j8tUDxGxbRHOrbzQNnE5CTMoIF39CETOTZHDASsU47c0feuAlSo/UUXyohvN3LKG8tJHdH5TRVH9K+CSnR1FT0UpomAF9kJa4xHDKiusJCTUwpyCR914/Mt2/yqSREpb2mtlp9M/qBV9CSMnGwWj09Q4OldV5xQajQU98pJnC3RWERxiJiDFTVtvmUq0zRFxsKNayBnp8VMiA66Zl7jn5HHprrKol3+DY/kpikiORSOLSYjn8fvFp79ttDsoPVzNnWeaIYmawux9b3+xIRt+9t4LcOfHeNmN6UTwzCuAK+/z2Jy+eJkpGor/Pwn+edJVSlxaN7IquqXCdOE50821udIVoBvqtp3l7fJmMBQnsNLTiaR8LhVNsqQ+lbNcxYhPCiI40uZ2nMBWkpUSiVqlormjlyF5XTkpnex/6YC1ZGTFU1rRNqC+Kp8TGhmA73kh3s3sN3rxJ2dGmkx4PX6e5po3QKPNZQmY4umDtWa9JIOvcBRT54MDN6eDxf3yMVqvm2itXeNuU6SOAxIxSzTQJPnijiDdfCvAukRPAkRY8o3ftgcR6RyTLiWDLQCTndkdStqsawCWU+2wsmJPA3DnxRIQbpuR4kRFGMtOiz+rSrNOpqS1qoPJw3VmdpZvqOqk4VEdWQgQJcaGIM86EKuESQpERxknbFxMTgqO8ie4m/8i7ys6J8Qshc4KucTxdfR39yDM+G1EZsfRGu9/519+x2R08+qd36er2z9Jyd1CqmRSoq2rjoQdf9rYZPkPOhnReVyvhJU+IVwXTurOOvp7BEScJt7f00D7U6VmrU5M/Jx5tsBa7U2Kx2jhe0YwcxxuWlBBGkFOgNuo4erwJncVJ/dEm8ucnUnS04eS61KRIytvGTrAtO+LyLs5fns7B4lMhsNzsOI7urSZjThxWk50Biw27beIX+KgoM7Kyma5G/xAyQMCJeIfdQcb8VHrae2itcyUQt5U3EaPXokqI8utKpYkQHKwlxBzAuTMB9N+oiBkPeeTnr9DhI5NzfYG+MMXJ5yl5ZYLynkG31tqsDo4ePiU25i5LdzlXxrmWmg1BlO6vRqUWJCeGU1/tShatOFRHclwIpigTTqektdr9viAD3YPERpuJCDOgU2uoLnPljpUfdSXD5sxLpKa1i94J5lhECclxPwmtnqCiso3cFdmU7Cobf7EfUDUkUucsy6SzpQe71dU5uLm4lsRFma4GebMAh0PS22fBrCQD+zyKmPGAt185zO4PAuOkNVWoA0jhzyhS0lrt+YXBYrOd9AoYDDoiQg3o9VqC1WrUWjVSSKSEok8rAXA65EkhA66quvrqdnRN3Wi1avomMLT0eInLo9M6Sr/d0sI64ufE4JQw0G8Z13t0Ak3Q2fkavk5/j4XyARs5yzIp/fS4t82ZMo5+epx5a+Zw5ONSJJB20ybKqmePB9ZqtfP0s3u4+Ya13jZl6pEonpnZjN3m4IlH3/a2GT5FRKyZ91RK4u+4SEmw0OBEYsFJnCqIPmlHq/P8jNJW20l6aiT02+ntHqChtBmDUT/hpopWix2rxbO5PWPRXtWBSiWIDzMSkRBGVV3byRb4SEl2Zix9/VbqGzuJjwslQgUl7xT75SfJYXfi1OgIMuoZ9PGmlhOhfyhnJO+KVRysmj1C5gSNfpK35Qm+mPviKYqYmSBqjYqIKDO1s/BLPRrtTT2sPhCJZXEIe5Up2WexWISh39uDw+YgLNVEe0UHYnUkhqIBao+20zaJxNGO1l46zuj54UvdoS2DrgaPA/1Wmuo7Sc2KITUxErWAvq5Byg/WEpcYztyceKx9Fnr6rJhCg+nr8s+ky6aGLlIXZ2Ht6qXCB7oTTwV93f2kb5zLwbZ+b5viFUqPj916w69RxMzsRQjBQP/sKE2cCE3VHTiWBAXUl2OyRAodC8q1VBfWnJzf01w3FFJ6xvfLjaeDqhGaPjbWddBYd0oE5y7KpPSdwpk0a8ro77NwrKQRKSUR8WG0B0BuiTHUiDk5Gmpm541KVXUbrW09REWavW3KlBNInhkla3OC2Gx2KsoCWKl7SOaGNCqdfd42w6eYbw2hfH/dlAwinE3Y7f7/9xJCEJse620zJo1Gq6apqoXiJz8go76FiBH6zwQ6TqfkB/c+R4sPN25UUMTMmJzZZwGgtrItIE62U43FqHyUhqOWUP1yubfN8EvKjzWTvX4uQuWPmTOg0anJSA1lsMc/Q2XDsdsc9HX1Yx20UVtch0mr9rZJXqH4aAPX3/K//OK3r/HmO8VUBUoStJzEj4+hhJnOoLurn1ee2cv7bxTR0dZLamY0BlMQnW291Fa14fCjxlgzhdEcRIPOosxjAsKFjmXdZtpCnPTr+5WQpAc4nRKN04n0014mGclhHN1dFpC9WDqnIUncX7Ba7bzwykFeeOUgl29fwte+tNnbJk0OHxUlnqKImTNoqO3gT7974+TzVj9ope5tElYlstMZIHcqHjJHZabOOUCHtGILErQ9UzH+RgqjYhv03cnwYxEWaQxYIQOQpYZijYqBGRhn4auYTUHcdP0ab5sxaQSBVX+qxAaGKCmsZdf7pRzeW8nchSneNsdvCDbo+NDk/0mOoyIlW3sjSVeZANAgQEoihQ6ApSKCVftUOJ+vZ3WDkRChRdujhCEni02j8cubxo7WXnLOmUtIACaLAhS+sIcc6+z2Np67eS7mQO4K7KconpkhHvvFaxw5UO1tM/wOh8PJ2vYQ3o7owhaIcaahhnTG11s5d1E8jYeaCIs1017fxaI1ibTvbaah2ZUYWPpxFRFAKS1eNDgwMBq0fnnXKISgrKgBVDriM2JpKA+8YoHOcBN0udexOhBxOiVWqx2dLgAun/54xzAKAfC/MT5Vx5t5/40j1FW309s9QG/PICZzEAajHsNQm+rurtnZQ2GyWC12St+pYOPmDF4Pdb8Vvs8jJVnqELqx0hzioLd7kNJ3XaGj7g7XZ+XYK4HT6XU6iYoLwW5z0NnmfrXbgMWOE/91HUspcQRgoYBGq6axd3Z7Zp59YR87LllMclKEt02ZNIFUmh3wYsbhcHLkQDWPP/KOt00JaErfLCfy8hjapP+f6BJVBrKLnVQX12JwSrr90UXgI+QsSqZB5yBMp6N/t8WtLsN5K9JwBKlxbssmqdVC/V7/9JhGp0TTXN3qbTMmTVhsKEkrsqlDRWu/ddYXQej1GsJCp2Z6vddRxIz/oFarOO+yxez56BgfvlXsbXMCmiVdJl4P8Q/vTJrKiA4Vpc7Te0fEqoLIr9FQduTUBXSECn0FN4hLCmfPYBcMQh2QtiSOCK0ea10P1UPN85IyouiI0mLSaYlES4u0squ9HYby7gda/XOYqxCCkqPNZC5M4/iBSm+bMymcy3PY1+efCdnTQWpKJHp9gFw6A+jc5q9e3AmhUqm4+xfX8NA/vsTWixeiUs+KX3vmsfrPHVsvdlQvNZKmMgJgRM0mayRpuyyU7fJPT4CvYQo//e61sqObfc0t2OODMRj1AKiTzDT09FHW1sknbS0cbz99Do5zRQpZ1ywleo5/NqCrrOshe0mGt82YFCn22VuOfSZqtYqC/KRA0gABQ4DIS/fIyo3n9nsuY93Wufzg63/ztjkBh6V1kPVhUbyrbjmZOOtrLBHhmGxqLAfaaRywYXyt7WRib3nn7C4vn0rMocF0hahgBEddSWsHunQDCyKT2Ns8drJ0VVMnVcDShcm0HPXPZNq65j7y1s+j+F3/GtEQHhdGZEoUxU5BQN3CT4JHfn0D2Vn+KazPQio5M36N0+nkhad2e9uMgKSqqBGKwLAjkn68l/yoQ4VdOpFI5DBRFSK0RDZJSj84dvK1vp5BSt9TesJMJZGxIdRFq7C2jz5t2Opw8Ok4QmY4/X58prIM2jl6pJ75mwo49NZhb5vjNmLFHIp6LTCLe8oMJzYmhIz0aG+bMbUoYsY/uf/Op9nz0TF6u/2/zbivkrU0mUqmZoaJHhVrrBEMaCV7aMeg0hAp9DiEpMpxemVMuNCx0BqCo6yH2tJmzGEGHA4nCUvjcXRakXYn7XXdlLYqZdPTRVxSOB1xOuoGrVgdUytmm3r60ZuDsPT4Z0mw8FFP5Wio1CpafGj6ui+wYmkG6gBLUVA8M37KVTetoby0UREz04i110qKykC1c/Kl7hacSKDh2eOkalQ4pcTpkCSkRTAnMYz6eInJocHcYKP801oqHKcmMne1u8RO6ZvKfKSZwhxppLRvejpmt3X1M+fiuQy+d5yuWj9t0uhHmeTmCBODWjU91sArL58oK5dnsOOSJaQmR3rblKnHfz6S4zKrxEzmnHh+89cv8MBdT7PrvVJvmxOQ1JW1kJucjipUTHqKdqjQYi9zXRztw1zdDZXtNFS6kjF6gcZJHUVhqqgoaiB9WTwVHdMjaI7WtVGwIRveOUZXbce0HGO6MIcGg8p/7uqDjHr0QZpZL2buuv1Czt0819tmKLiB/3y7pgiDUc8Pf3ktOz6zytumBCQOh5PSnccxvd6GVnrmWldJ2GyJIun1HmqONo+/gYLX0WjV5CxLpc82vSW8h2taiFqQOK3HmGry5ydib23n0JuHvG2KW+TtWEldZiK13bM7zDQvPzHghYyQnv/4GrNOzICrvO6L3zmPb/zgYtSaWfknmHZ6uwfZ2BWOzs2PmKs0OopzW8NYsU/F8ZeO0een+RGzkaTMaD7paKW5d/pDuPv6esm8cN60H2eqqK5sJyQqxNtmuM1AeSNOPwqJTRcDA1Zqav2jb5ZHyEn+uIEQ4jwhxFEhxDEhxHdHeP9LQojDQogDQogPhBD5w967c2i7o0KIbeMda1ZfyS/YsZT7HroBkzI0bFoofaucdTXGMdfEqILYWhtC1jsDlL94jNL3KmmoCuATyAjog7TsuH4V+iCtt03xGLvVMWMnEylhICyIpBXpSCDj3Hwyrl+G3ke/x0kp4dQf849gaEikmYH0OJ9trTCTHK9o4d4HX0AGsrCbRjEjhFADDwHnA/nAtcPFyhB/l1IWSCkXAj8Ffjm0bT5wDTAXOA/4w9D+RsWt848QonKYetpzxnvfEUJIIUTUGNuHCCFqhRC/d+d4M8nC5Rn85vEvkJgSgMldPoCI0I34eoRKx1pnJCkfDlC2u5qu9tk5G2v+kjT+8uI3+eLt5/HXl77FsjXZrN6Y61Wb4pLCSc+Ln9A23R19RJmCp8misymqbaUwSJJx/TJaQ3Xsq20hcZVvNqdzOp2oVL4vDhJy4jGsm0tNt+IRPUHpsSZ+cO9zgS1opo/lwDEpZbmU0go8CWwfvkBKOTzBzsgpmbQdeFJKaZFSVgDHhvY3KhNJAN4opTxt0IgQIhk4FxivZeq9wHsTONaMkpQaxa//+nnuvf2fHNpT6W1zAoryNypYnxNNf56RT4c6qC0ngpZnyqmVszcfJizCyF0PXsn8JWkny3bDIoz86FfXotGqObingru//ncGB2Z+1pUj1cSh9k7Cl8QwaLMRHP5HFwAAIABJREFUXWejo801VsBg0tPfe3YuRVJ+HJ+0z/wcov21p0rtrV2+V6U4d36iX+TKhMWEUJkUA0NCJirSRGubf46SmGo++LiM3l4LZh/1/HmKYNpzXxKBmmHPa4EVZ9khxFeAbwM6YNOwbT85Y9sxk+Um6xn+FXAHYzidhBBLgFjg9Ukea1oJCTVw3x9uYPOFC7xtSkDhcDipKm6i55UaFotwttSYaf53uT9VqU4Lm86fz4Kl6Wf1H9FoXZ7U0DADYRFGrrnlHH7+x5uJjDbPiF1zlqRwvK0TiaC9f5B+mwNrpomcRckknZOKMy+MoGWx5K7LPG076WXPQ0ZcOHV7q7xqw5nkFSRwbHeZt81wi572PlRCEB1lYkF+EvZey6ilyMahURTTQWpyxJTsPzRkar2E7Z2Tq8z0WSYXZooSQuwZ9nOrRyZI+ZCUMhP4b+D7nv4q7npmJPC6EEICj0opHxNCbAfqpJQHR2sIJYRQAb8APgNs8dTImUKr1fCN719MR1sv+z457m1zAorBARuDz1SM1N1+1qHVabju1vVjrknLiuX/nv3aSXGTW5DER2+XTLu722JSQ//p3+eGnn4aAIZFH9RCEBljxhgajDbBxK4JdPOdDsK6rLT7WKdaq9XBYJ9/hGzytsxnMCkatU5N4X6XKOzuHiQiLoT2jlMXcp1OjUEIImJC0GrUmMMNIF3fb6cKyo5P3Nu6ID8RhMA6aONoUT158xIZtDvQqFVImxMbkooq97x+arWKgjkJHC9txBCso38KPJsajWrKxZGvICZ3PmmVUi4d4/06IHnY86Sh10bjSeBhD7d1W8yslVLWCSFigJ1CiBLgLlwhprG4DXhZSlk7XgfMIVV3K0BKSoqbZk09+iAt373vcn74zX9QfKhm/A0UFCbI5762GbMbJ8cTQgbglm9s5bv3X8GzT3zM//v9m9MiavJWpLGr2b35VA09/RApgEFo9v4FW0QaECqBdLr3d1FpVaRumEPFzuJps+lYSSPJeUlUHfH980jL0ToMej1H204Jl5S0KELDDaTEh1NW2Uxfv5W8zFgKD9TAiXXDJoEYDDrCww10dIyd/xYRbiQxJhSHw0lNYycDfVaOl7oSpAVQUnj6NSt3fpJbv0N8XCg6KTg8JMYKFqdy4EitW9uOhdMp0WnHzD31TyZQleQhnwLZQoh0XELkGuC64QuEENlSyhPuywuBE4+fB/4uhPglkABkA2POIXIrzCSlrBv6txl4FlgPpAMHhRCVuFTTPiFE3BmbrgK+OrTm58CNQogHRjnGY1LKpVLKpdHR3p1/ERpu5Ds/vvTkZF8Fhani/B1L2PGZ1RPeLjElEp1Ow/ZrV6BST09Ix10h4IvsrW1Bt939niBR2bHIWNO02RMSFkxKnNEvhAxAU0Uzre8XnuxSbDDq0ek0FO6v5vD+KnROmJeXQNHh0W+O+/utJEWHjnus5Pgwig7VcPRIHQMd/ZQfG3uAaGNNBwU58eRkxY6aSD0/P5GOhi5qq0+J8eryFrSayYsQp1Py96d2TXo/sw0ppR34KvAaUAw8JaU8IoS4RwhxydCyrwohjgghDuDKm/ns0LZHgKeAIuBV4CtSyjE7OI7rmRFCGAGVlLJn6PG5wD1SyphhayqBpWcmCEsprx+25qahNWfVmvsiyWlR3PE/O/jRt/7hbVMUAois3IlVCZ2JTq/hvoduoORwLW+9cpgqD9z6o+H0sTDNRLE7nIQkhtJdN/qAS3DdjNoK4uiw2pC4vAFTiZQSjVZDTYl/CJkTRKVG0y0ETqC/z3LSWwLQ3TVA94Hxf5/qylbCQoPpHCMZu6frlOfGHQHd2dFHZ0cf+QuScZ6xPizUQGy4kSP7z65B6ersJ68gkdLKFqyT7GRcVeOex9LfmO7md1LKl4GXz3jt7mGPvzHGtj8BfuLusdzxzMQCHwghDuJy87wkpXx1tMVCiKVCiD+6a4Avs2pDLunZATLuXcHrLF6ZybZLF01qHyqVioXLM7j6c+eQMzcBc2jwlJX9qnX+7Upv6+qne1ECKWtOT04+s2eKNkhDZVMHVU2dZG+f2oR/nU6NSdpwdHTisPv2KACN7vR72aCQYCYrZ3t7BklNOj1xOC72lLcmOzOGqgrPqt6OldQTHmY4+TwvJx7ngJVjR0fv4VN8uI64UBMx0RNvWhgeZiA3xxVsSIgPm7jB/sA0N82bScb1zEgpy4Exv/FSyrRhj/cAnx9hzZ+BP0/UQG9zz2+u43Pbf4vN5tsnJgXfZsW6HH74i2tQT4HbG1xTmG//8WX0dA/w0dslPPTAS1gGJzdKoKuxGwzjr/NlOnsG0EWbCI40Yh+0Y+uzkH7dUmqfPYit30p4WiS61Wm01rnutB3mkfsgeYLJHERSagRH3j48ZfucDvQGHRnnLqJ+wE6KFnpqWlGpVXSZTdA5+fL2w/uqSM+OQa1Ro3JIyo81MTc/ASGguqLV4wuh1eIgOyGcQYuNrJQojhyqdcurVlfbjsGgIy8njuJS95oXarVq/vf3nyXEHMyhwlrm5JyZQREY+OJYAk+ZVYMmPSEmPowN5xew8/kD3jZFwU+JjQ/jc1/fOmVCZjgqleCjt4q564ErefuVQ7zzWqHH+zKkhUHzzPeKmWqaO3rRLozFbAgi+lgHvU4nYdsLUAlo6Rmgve5UyKDVYp2yUFNyYgiFPiZk4jNjCU+JZrCrj+CUaJxCUNFlpbDVFeppBzAPeS2mQMiA62/Z1tBFfGI4x4bEw5lJvZ5SdawZs15LkZtC5gT9/VaOHq5jweIUDhfXnxWuOpMdlywmKtLVDmHp4jTPDfZ1FDEzu7jqs2sp3F9NQ41SWKwwMc67bDE3f3UzYRHTk2xqNAXx49+4CgSWrs7iyMEaWhrHzhkZiZSsGI60+dck6rGw2Z20d/fTHR+MvX70fIea5i6WXrOUY0/uGXWNuxwtayF3RTYlu3ynt0x4QRqHW/vBYILWmWsq2NdrGTP84ym9PYP0ejizTQCF+6qZuyCZwyX1Y64tHScpWcH3mNWzmdwlJSOay5Up2woTICYulDvvv4Jv3b192oTMmWi0aq6+ea1H25piTVgcgRdKtTvGzwLZ39yO1jD5cJPTIenos5GzNHPE90OjzOSsnoPBPHpZftr81EnbcYKkvESOz/LJ1yNRWdaEWj36pS85MZwH77liBi3yEpOYmO2L4SlFzLjJlosW8PjL3yJnbqJfDwRUmBm6uwZISht1XNm0sffjiTd7zCpIpNwaoB1O3cDhcBI7L2FK9tXa1ENbr42sxafmRMVlxKDRaUhenk2xSkfo+oKztpt3wWJyL1vBcbOZrOVZk7YjcU4C3cmx9E+yiicQ6e+3kpE6+nezt8/Ccy/u570PS2fQKi8RQAnAiphxk2CDnpj4MH73xK185bsXolIJ1mzKA+DS61by2a9s8othcgozw+CAlYd/+sqMH/e2O87HaHJ/hkxGfjxNBklzr+/NNZpJ+tLDp2xfnW19VDf2Mv+8xcy9dDk9mYkYNyzgSK8dgNrOAeZtWwi4cp5S5iZzdMDJkZZ+EIKuqHBM4WNPmx+PuqP1xHb1MOvnhoyCYYwb0o7Ofv73/73H3v2VM2eQFzgxmylQPDNKzowHbNu+iKWrs4iIMtHW0kNUjCuBrqyono/eLvGydQq+QExcKJsvmj/jx9XptQz0ux9a6A7TUNcx8RybQKOlu59gox5b39SEZRw2B0f2VpGwtYDu1rNzdg73O5i3uQCH2cCR1n4YVi3Z2D1I7pwEyj6ZXO5N5YFK0rYtpnKWTqQfi4aa0fPDQkOCefS3NzIwyepAhZlFETMecmLw3wkhY7XaPXLxKwQWeQVJ3HDbJrLmxBE6ybtrT+ju7CclI5rFKzJ5/YUD9HaP7nFJSI2kRBEyAPT2W8i9ZL4rEXiKvBlCrcKoH9kD4JRwyAJYRhYatrgIwuNC6fAgmfvkPiw2gqapW7S/09baQ1J6FLX1Z4uaz92w9rTeOAFNAHnulDDTFKHTabj8htWkZsaMv1ghIAmPNPG1713MkpWZXhEy4EpWf/RfX+GLt5/HfX+4gcuuX0l80ighFOU6dxp76lvIuG6suXkTY87muRwp86yi53hrP/356ZMKXactSONYm+KVGY2oUb6jJtPsGWOjhJkURuSzt23ixi9v5I5b/8yhPZXeNkdhBrnzgSvZsG2et804jTlzE5kzNxHLoJ2G2rNLj42pYeDlade+RklrFyFhwQxOsueKBKzayZ1e+y12IrcuJsqgwVJSR02xa2hifGYsdqudlnFa7BtjQrEP+PeIiumktan7rNeMRj1rVmZ7wRov4KOJvJ6iiJkpRgjBuZcsUsRMAPKV715A5px43nu9kH27yunpGsBmtXPfwzeS6cMdQuMSR27F3m23zrAlvo/d4cBhm7wAyN08l8OT7VUiBG19Vtr6rIQkRZObmwjAkeY+5qqdY4qZgguXYNNpYEDxzIxGQ10HBQtTOFx8qqGfXqfB6Zw9AlAE0K+qiJlp4Jwt+RzaW8nr/9nvbVMUppDn/r6LX//l83z5jgsAsNsc9PYMzFgfGU+58IqlvL+ziLLiejRaNcmZ0ehjjOxubj5rbtFsx6DXYe2zTDoCV7e/iqjcBFrbeqfEru4BO0cGXNVQCMFg18giRResI2bLQg6094NQxOp4VJY1ERoSTNdQbplKJWht7yXFMHtCTYGCImamgaBgHd/50aUAiqAJIOqq2+js6CNkaNidRqv2eSEDYDIH8+3/uYz/+fVLOHFysLUThsqAFU4nLsyIJ1kuumAt1oFT1S+maDOWMRqzTRZjlJnwuDA6GjsxhhrIOCcPp1oNAg61Dij/t27S32chLz2Kru4BFs5P5kd3bicszM8HlE0EJcyk4A43fWUz775WOOkBgAq+Q1N9Jynp0d42Y8JEx4ZwvKsbq83ubVN8mrKGdsxCTKjKI2dDHi0OSWRLNw0l9WSfM4fyHgsDzWfnZEwVhyxAZhL5q3Kp7BrkQKfihfGUosI6PnvzOdxw7So00zA/zZfxxUReT1GqmaaRyGgzF14xddURCt6nuaHT2yZ4hNkYhGkKWvbPBuQEhExwqIHjHf00NXfToNWQsLWAI809DAzMgLgQgqKWPqXL7yTQatXccceF3HzD2lknZFwJwNLzHx9DETPTTE5+ordNUJhCaqvGriDxZRJiZknvjEngcDiJn5/k9vrEeUknm6tZrXYqq/338zEbufbaVaxZM0uql0YgkEqzFTEzzeQvSD7ZWE/BPwkJM7BmUx4pGdGE+nE8/dEfXktkmHf63/gTptQIt9ce+6iMlGT31yv4BvHxYfzXHRfy/gdH6R6jsaSC/6DkzEwzsQlh/O5vt3Lv7f+k6GCNt81RmCAajZpv/3A7qzbk4nQ66Z+idvfeoLNngLbO2TtQ0h0y4yMoe3Kf29VMkamR1NaN3hpfwfc47/z5bNs2n/nzk9m2rQAxm5OlfdDD4imKmJkBIqLMPPjYTRzYVU5rczcOhxOjOYg//fYNWhq7UGtUOOwBVPAfQNz9y2tYcU4OACqVCpM52MsWeU6QXkNibBh1Tf6Z9zMTGGu7mUigqK2ylYKLFnGwbJI9ZRRmBKNRz7e/fT7qoUqz2SxkTgyaDBQUMTND6HQalg9dFE/QVN/Jn3//Jnfcu4M1m/M4XtLI7bf8CZtNSejzBbLzEli+NnDi6YYgHT+//VKu/a8/e9sUn0Wtn/gpsfS1Q8SsyKK5pWcaLFKYStaszWFgwIpOp0Gnm+WXPx9N5PWUWf6/6V2uvnktWy5aQFRMCEIIcguS2HzRAro6+nHYHVQdb6HJT6tnAoGy4noe+dkrLF83h8UrMgLiLm7QopRmj0XTgYmFgoPMwaRvyAWnVMSMH7B+fS6///1OlixOY+u5Bd42R2EKUcSMF1GpVESfMZ31q3deiFarobO9jwe/94wiZrzMc//YxXP/2MWCZel8+0fbiY0P81tR09jazc6PS7xthk9jTgijv839vKKIpHAOliohJn9Aq1WTmRlLUlIEMUpRBqCEmRSmEe3QcLr7vvsvDn5a4WVrFE5w8NMKbr38IRatyOC8SxezakOut01ymx//4WXmz0kkSKfl7y+dPXBS4RT1SSYSZAJNhfVurW861gQZsdNslX+hUgnUapXPhcs3bsonOtrsbTN8iwASM0pptg/S1ztIyeFab5uhcAaWQRufvHuUrg7/qgjq6hnk6df2U1LuSaP+2UVPv4W+XPc7PAu1IChIO40W+RfBwToeePBqb5txFsuXZ3D77Rd42wyfQ+kzozCtBAVpMZqUQWe+yPZrVrDlooXeNsNtpJTkZcbS1TvIU68pc8Lcobali9gC95pd2i0ORcwM48u3bSY83OhTXhmjUc+3hlUwKQwhAaf0/MfHUP53fZT21qmZtqswteiDtLz09Kf8+t7nefuVw942Z1yEEHzhijX8+ruXe9sUvyE2woxxTjx5Fy1CjHMBTF2USmfnyBOsZyMpKZHsfL3Q22acZPHiNL5z+wVKjswsQMmZ8UF86a5G4XSe+vMHJx9XV7SwYl0OBqPve9Hio0L4+X9dxsGSWp548VMiw0y0dfYGUmXmlJCfFkvFJzWcqEtaeG4BRa8cBCDIFIQxwkhbTTtBRj2DvYPoEyOgVAnfASxeksacOfHs31/lbVMAl7D66c+u8duE/RkhgL7/imfGB9EHabns+pXeNkNhHI7sr6bYT3KbjAY9axZlcPNlq3j6V5/nyZ/dxDlLsrxtls9xvL6NlKyok8+L6zrIP38BeRctoicpgoZgPdEb8tAUJBOxLo8KpfsvAHFxoTzwwNXodBrmzp25eXSxZ1SDZmXFcsONazAYdFx33SpFyIyDkjOjMK0IIbjlG1u5+Kpl3jZFYRxe/8/+CU1Z9jbBQVoSYkIxGvQ88K1L2LAscJoCTgUWqx1TtOnUc4udA+UtHCxrOunFqqvvpL29j8amLvr8eLzFVLL90iUnHxcUJM9IHlF2dhy3fnHjaeKpurqNBfNTeOTRm5U+Mu4QQFOzlTCTj6LVakhMjfS2GQrj8M6rh6mvbuO3T9zqd3eBQgia2pRGb8MRAroalb/JRPj2t89n0+Z8nnzyE/buqaCxsYvBoUni08miRamsX5+L1WpnxYpMHn/8Q6xWO2VlTSxanDbtxw8EfNHD4imKmPFhNBq1t01QGIewCCOrN+V52wyP0WmVz9gJgvRa8mMjKdld7W1T/IKMjBguv3wZaelRPPH4h0RFmenvt9LU1OXW9pu3zGXz5rmYjHrCI4zs3VPBhx+VoVIJTKYgMjNiGBi08vJLB2lrO7sg4qmndrFxUz5hYQbOPbeAd98toa2tl+2XLp7qX1XBD1DEjA+TM4OxZ4WJk5wexU9+fwOxCWHeNsVj8rPiOHi0zttm+ATZiZGUfKQIGXcpKEhCIvnKbX8BXM3yPvvZcygrO5UQrVariIsLJSraTG1NO9HRZpYsSSciwsjKVVnExZ367sRfHMaFFy1CpTrdw3nOObm8/NIBnntu71k2tLf3snKlK/dr06Z8Vq3ORq9XSuXdQhJQCcCKmPFhEpIjvG2CwhjYrA52f1DKBTuWoPZTL9rNl67kxbcL6elXcj8OlzcyJyuKmmOt3jbFL6hv6OTQoVOzrIKCtFx8ySLSM6JpauoiKzOW/LmJJz3MTqc8S6gMRwjBSJHazMwYLr10Ca+8chDLsNliRqOe0tLGk2LmmmtXTdFvNjtwTc0OHDWjJAD7MANKcqFP01jXwe/vf4n33yz2tikeYzYGcdu167xths/QrLKRvSgJMcZFV8FF0ZE6KipaAIiMNPHAg1cTGmpgzZocduxYxvwFKaeFyscSMuORkBhOfv7pnuprrl3JZz6zxuN9KgDOSfz4GIpnxoexWZV+M75OdFwoqzf6z5ymkVDyZk7R0T1AR/cA81YkM1DfS0NVu7dN8ln6+ixoNCquunolV1+9ApMpaNqOpVaruPiSRbS391FV1YpWq+bCCxdOSiApBBaKmPFhVGrli+rrtDZ1U1ZUz9yFKd42xWPWLc0iKsxIa6d/zZyaTgorGlEJQWiQFssMVOb4I+np0Xzv+9tJT3d/ltVkWL8+j6KieuwOB9/85nmEhhpm5LiBjBJmUpgR4hLDyclP8LYZCkBElIlFKzLOej080kRYhNELFk0dJoOezJRoFuYqCefDcUpJ2hLlbzISW7bM5aE/fHbGhMwJtm9fzAMPXM1ipfR68shJ/vgYimfGh/G36cyBzDfv3k5ouAG1WsWej46ROSeOJauy2HTBfBJT/L8f0K+/ezlSSm7/+XN8tL/c2+Z4HbVaRagpiMKqJuavSqP440pvm+QTCAG33rqJK69a7pW+SgkJ4TN+zMDFN5vfeYpbYkYIUQn0AA7ALqVcOuy97wA/B6KllK1nbLcQeBgIGdr2J1LKf06N6bMBQXZ+AuWlTdjtSv7MTGEw6snKi+fQnkr0QVrOvWQhi5ano9Nrufd319PZ3kd4pMnvmuSNhxCCrp4Bb5vhEyxMi6Pk4yrmr0qlsUypbgJXAu+dd13Cpk353jZFYYqY7qZ5QojzgN8AauCPUsoHznj/28DnATvQAnxOSlk19J4DODHNt1pKeclYx5qIZ2bjCGIlGTgXGK05Qz9wo5SyTAiRAOwVQrwmpeycwHFnLWERRr7+vYu5+Krl/O7+FzmyX+mBMd3EJ0fwo19dS1pmDDWVrej1GmLiT/XCUKlURESZvWjh9PLdz2/lmw88Q9ssz59xANIpKf6w0tum+Axf+MJGRcgouI0QQg08BGwFaoFPhRDPSymLhi3bDyyVUvYLIb4M/BS4eui9ASnlQnePN9kw06+AO4D/jPSmlLJ02ON6IUQzEA0oYmYCpGfH8ov/+xwfv3OUf/zfe5QecTU5U6kEWy9eiHGoiiArL57+Pgs2m4OwcCOrN+byxKPv8K+/fHjWPsMijMyZl8i+T8qZMzeRQh+ZdOtNMufEUbA4lbTMGACS06LG2SLwyEqJ5jd3XsE/Xt7DS+8e8bY5XqOsvhWJqxeHAsTEhCiddQOR6Q0zLQeOSSnLAYQQTwLbgZNiRkr59rD1nwCf8fRg7ooZCbwuhJDAo1LKx4QQ24E6KeVBd9ztQojlgA447qmxsxkhBKs35rJqwxz27yrnL394i03nF7D92rGna1/3hfWkZsYQnxROX68Fq8WOzWYnf34ycYnhVFe08Jt7X5ih38J3+f5Pr+KcrXO9bYZPkJkcxfdu3UawXsvTrx/wtjleoW/ASmZaBA2VSmk2gFarVjrrBhoSxPT2i0kEaoY9rwVWjLH+FuCVYc+DhBB7cIWgHpBSPjfWwdwVM2ullHVCiBhgpxCiBLgLV4hpXIQQ8cDjwGellCP++YQQtwK3AqSk+G+Z63QjhGDxyswRK2tGwmDUs/Xi0T11KenRZM6Jm/WembKSBj557yhX3bSW1CHPzGxGCMHXrl/PnLRYLDY7PX2DPLPzIK0dZ8/ICQ8x8IMvnwcS6po7+cWf3/KCxVOPOcKgiJkh6uo6eOaZT9mxY2nA5YrNaibnmYkaEhsneExK+ZgnOxJCfAZYCqwf9nLqkO7IAN4SQhyWUo7qDHFLzEgp64b+bRZCPDt0wHTghFcmCdgnhFgupWwcvq0QIgR4CfielPKTMY7xGPAYwNKlSwMnxXqamMoTyrZLF/PJe0dpqp990T+dXsOKc3IoK6rHbnMQHmnytkk+g06r4aIN804+X16Qxi0/+NtZ675xwwZWLUgHXC3rK+ra0KjVPPfmIfRatd+OSmi0DGDOjyQx3EyJkjvDw394g+zsOObPT/a2KQq+QevwYqARqAOGf1iShl47DSHEFuB7wHop5cmTxTDdUS6EeAdYxBiRnXHFjBDCCKiklD1Dj88F7pFSxgxbU4kriefMBGEd8CzwVynl0+MdS8E7ZM6JY+vFC3ni0Xe8bcqMYzIH89/3XY5Wq3QpGI+8jFgW5iZxoKT25GsZSZHkZ8adfK5SCf7r5i0AfP0z6ykpb+Lzd/99xm2dChrbegCICzMhgdikMFobunE6fLCX+wwgJfz0wRf5819uPW1MgYIfM71ug0+BbCFEOi4Rcw1w3fAFQohFwKPAeVLK5mGvhwP9UkqLECIKWIMrOXhU3GmaFwt8IIQ4COwGXpJSvjraYiHEUiHEH4eeXgWsA24SQhwY+nE7O1lh5sjIcV2QfvjLa7nz/itmTZvwqBizcmJ2EyEEV5+3GJUQbF3tGuHwX5/bQnLcyL0/1CoVc7PiuXCdf+ciHSxvwJgbTqW9n6z5s7uJZUNDJyXF9d42Q2GKEFJ6/DMeUko78FXgNaAYeEpKeUQIcY8Q4kSZ9c8AE/CvIX3w/NDrecCeId3xNq6cmSLGYNzb0aFM5AXjrEkb9ngPrrpxpJRPAE+MdwwF77N4ZQbf+P7FJ+cMdbT38sjPRtWsAUNjfSdOh9Nvp17PNGsXZ/DAt7dzzpJMNi7PJi1h/Mnud926DY1GzSvvF2G12cdd74u0dvaRnRRFVWGTt03xOseONzOvQAk1BQTT3DRPSvky8PIZr9097PGWUbb7CCiYyLGUcQYKAAQb9Fxw+anw52XXrWL7NWMlngcGOp2GIwdqxl+oAIBGo+acJZkAbFyeQ1jI+PNxVCrBdz+/lZ9+Z/t0mzetaDVqZU4TUFbaOP4iBd9HElBTsxUxozAqX77jfL7x/YsJDffv2UMnCArWEWzQnfZaa3M3v/jRczz+yNu0NHV5ybLZwfKCVDavzPG2GR6jUSmnS3CVaSso+BrKt1NhVIQQXHD5Uv760jeJig3xtjkek1uQRGS0me//9Coe/ueXmb8k7bT3+3oH0WjVOB1KEd10IoTghkuWe9sMjylvbMdo1nvbDK/T0DD7qh4DEYHn+TK+OG1bKeFQGJegYB3rtszl33/72NumTJjPtAQZAAAT00lEQVSV6+bww19dgxDiZDn78DlXKenR3P/IjUTF+K9Y8yfSEiLRadVYbf43a6y330L2/ASOzvIy7ZQAGKyqMIQPihJPUTwzCm4h/LC6KTY+jDsfuAKVSnVSyLQ0dVF08FSOTG/PwKzsr+MtdFo18dGh3jZjwmjUKhZkxmPvtnrbFK+Tl5/obRMUpgopPf/xMRQxo+AWGs3MfVRMIcGoNSqi40JZtSGXa245h80Xzp/QPoQQ3PLNrQQFn54jMzhwegJnb88gzQ1KrsxMIYaVdfsTBXHRlH1YxfHDSllyXJz/iVGFEQiwBGAlzKTgFlfetJaujn5efW7ftB4nPTuWBx/9LPogLZZB28nk47tu++uE9nPVTWtYf+6p7rVWq52+nkFeevrT09blFiSx8fwJVQAqTJLhYT5/wapFGTwJREaayMmJG3+hgsIMo4gZBbcwhwTzrR9uJ7cgiV/f+/z4G3iASq3i3t9df1LABAXrcDqdPP/kbvZ+7N580pi4UH7y0A2kZESf9vrr/9nP7+578bTXhBBce8u6qTFewS2qG9rZU1jtbTMmzJHKJhYvT6Fkt//ZPpVcdPEipclkAOGLibyeooSZFCbE+m3z+NpdF3Hu9kUYTUFs2DaPRSsy0Oo818Xm0GAuvno5jz51G9Gxp7uwf373czz8s1cQQpCUeirxcMnqLBYuP3vYZnNjF/d991/09Qye9vqiFRlcdOUyDKZT1ShSSpLSojy2W2HiPPLPDyk81uBtMzyivKOLYKNu/IUBSmSkiR07xhrFo+B3BFDOjOKZUZgQBqOei65cxkVXLuNbd1+CSqWit2eAKzeOOTZj7H0a9Hzlvy8YcXjmvEUpRMWYuez6VYRHmvj3Ex9RX9vBV/77At5+9TAHdpeftU1FWROlRfU01nVw/o4lACSmRPK1uy7ioiuX8aWr/gBAWISRoGCtx3YrTJzapg5vm+AxnT0DLF6YMGuHTm7ZOg+TKcjbZihMGb4pSjxFETMKHqMaaiImhGDp6ix2v1962vsGo56vf+9iSovq+PcTo5d1r9s2d9Qp4MO7EgPs+MxqbDY7d3/9b+z+oGzUfd71lccJCtISnxxBWLiBfZ8cZ9uli0+GmuYvSeNHv7oWo1k5Oc8k+kl48HyBssY2jCF6+rr9cxL4ZNiyxb9nbCkENv59ZlHwCYymIO75zXXccunvaG3uxjJo45wt+UTHhrLx/AJWb8xl8cpMujv7eeTnr9Ld2X/a9hddscztY0kp+dWP/8PuD8pYsS6H2+64gO7Ofu788l/pHRZacjqc9PdZKNxXSWpGDI/+4jX+/NBbWAZtxMSFcvcvr1GEzAxS19TJTx57jcIy/wwxnaCnz0LOvASKP6r0tikzTnf3gLdNUJhKJIpnRkHhTIQQPPzPLyOl5P47n+a8y5awdHUWAPogLcvWZAOwYl0OpUfqeeTnr9Le2kP+gmRCw8ef73OCIweqef+NIuYvSeO/f3I5RlMQcYnh3PPb63nwrmdoGupOmpweRU1FK++/UUT6l+MwhwbT0+U6GadlxWAOCZ7iv4DCaOwvrsVmt7O/uNbbpkwJx1s6ECqBdAbOhcAdXnvtMAsXpnrbDIWpxAdLrD1FSB9UZkuXLpV79uzxthkKHuKwO5ASNOPMcLEM2lCpBVqt+5q6rbmbxvpO5i5MOeu9Tz8o4/tfe4Lla7O568EruX7bL+nrHWTRigyuuWUdrz67l9Ub81i5LgedXsmVmSku+NIfMAbrqW0KnOaES9ITKP640ttmzBhqtYrv3H4+27ZNrN+TgvsIIfZKKWcswzo0OF6uTr/Z4+1fLb5/Ru0dD8UzozDlqN0s3dQHTVxQRMaEEDnK6IH45HD+694d5MxNINigZ+X6HIINei6/YTUJyREsXJY+4eMpTJ6c1Bh2Ha7ythlTyoGqBhLjQmht7Pa2KTPCvIIkRcgEIj7ozPAURcwoBAxJqVEkpZ4qtf769y4+qwOwwsxz6ZYFfiNmrjl/CcsLUvnoQDkXbZjHY099yEcHKs5a53BKlm7KIcVkZucbhVSUt3jB2pnDZFTyyxR8G0XMKAQsipDxDdYvzeKiDfN48Z1Cb5syLkF6LasWprNqocuL94MvnccXf/wk1Q2nSsq3byzgim2LSE+KRK1ScfEli7j1C38K6GnSl1yyyNsmKEw1EgigvC+laZ6CgsK0IoTgqm2L0Kh9/3RTd0YfnLAQAyFneCW+cOUaslKiUQ+1JjAY9Dzw4NWsWJl52jqVSqBWq1D54ZDW4axdm8OixWneNkNhyplEwzwfDE8pnhkFBYVpJzs1hq2rc3nl/SJvmzIm+4pr6eodINR0qtqtp/9UT5nF+clEhhnP2i4pKYL77ruKkpJ6/va3j9i4IY81a3Po7bWg12uwWu28+OIBLIM2Pv74GFVVrTPy+0wGIeC661ZzxZXLUfuBEFXwAB8UJZ6iiBkFBYVpw+F08pvH32HBnEQ+9YO8mSCd5qzGfuuWZPKJVk1lXTvfunHjmNvn5iZwzz2Xn2wCqR9WNXfjjWsB+Nwt63nk4Tf59799t2IzMTGcq69ZyYUXLvS2KQrTiSJmFBQUFMZHJQSfHKzkX6/t97YpbtHY2u3KJRjGbdeu47Zr11FR20Z6UuTIGw5jtG7WJ1CrVSxdmu6zYmbxkjR+/OMdGAz68RcrKPgIiu9QQUFh2hBC8IUrVnvbDLdxOCV9A9YR33NHyLiLL/Y5Uv//9u49yKvyvuP4+wO4XLYLCyzLZVlckDUI4WJcMBrtApoVYgzVJoIOLS0VRlNNVDpWYiY22kkZlNhM6nRiDXXKTIyXREONF0inibFJGsCCoKAyFoVlBBGDU1MB5ds/fmftsu7lsJffZX+f18xvOL9znnPOw3ee3f3O85zzPH37sHTpH7Jq1UInMsWg6QHgzn7yjHtmzKxHvb7/cK6rcEre/t17rT4X052mTatm0qTR7NqVH8s7VFYO5oavNHD++bW5roplTUD0nimA3TNjZj3q9++33tPR3YaXl3Lu1K5Pt5+N+vbt24c5cyb3+H3SmDq1mrX/vMyJTDHqRW8zOZkxsx7x/rHj/OXfPsyPNm7Nyv3OmjCSNX99Bd+97UucUV3BjElVp3yNYUMGdetwUnsu/fwM/v47ixk9ujwr92vLzSvmM9BzMlmBczJjZj1iQMlpnDd9PMeOf5iV++1983es/fGvmfGJKtat+lNW3bSAqsohqc5d8Wdzuf+Oq3n0nmtOei27Jw0cWMLUqdV8776ljBuXnQSqpYkTR1Jenn6hV+tF/MyMmVk69TMn8sgzz3Ponfc40YNd05fN/iQ3L5nLgGYP1g4pG8h5M8bz6IaTe4aqKofQt28f3jz0LseOf8g5U8bxxYbczXBbWtqf769dxu7dBxg6tJSfPL6F7Tv2csMNDYwYUca6df/Br3/1KkeO/C81NRXs3Lm/W+5bUVHGsuVzGOwV5ItXHg4XdZZXzTazHhUR7D94hCVfW9fmm0JplJUOYPbMiTzxix1EwKCBJXyp4Wwqh5dxxcXTWz3n+Z17ueXux6mfWcvE6gpqayo5Z3I1kjj+wYe8sucgpQNLqKnKTc9IWyLiY694Hz16nP79T+Pba55iw4btHD/FHq/Ro8sZd/pwxowu548ur2Ps2GHdWWXroqyvml0yMs6vXNjp859u/K5XzTaz4iGJqpHlTKiuYPsrbfcqrFz2WUYMK+Ohp55n12tvcuR/3v/oWPWooXzz+s9x1oRRzLtwMl//zhNcNvuTXLvwgnbv/amzqvnXe69lQP9+H0sOTuvXlykTR3ftP9dDWpurpmkCvptXzKdmfAX3/sPPUl9v4sSR3Pb1BTkbzrJ8lJ8P8naWkxkzy4q/u/ELXH3LA7zbLElpMnTwID5fP5U+fcSnp9Ww87UDbPzVLv678W3qZ07kM2dPoHJYGZBJUB759lJKStL9+ho4IP/mdOmsiODo0Q9YsOAcnvvlK2zb9kaH59TWjuKuuxdRVubhJOu9nMyYWVYMLy/l0vopPPjTLSftLysdwNAhg3j/2HEGDShBEpPPGMXkM0a1ea3SIpzULSJYeetDvP7629TWjuTAgSOpzrvxxkucyNjHBXCi98wz42TGzLLm2isvYNqZVay8Zz0Txg5neHkpV11ax3nTx+e6anktInjggV+yZcseTpwIDh58N9V5l112NpPOGtPDtbOC5WEmM7NTV3JaP2bPrOUb181n+ieqGFM5hBN5+JpnvpHEwoXnMrhsAM8++zI7duxrt/yYMeX8+dJ65s7Nj4n5LE85mTEz67z5F/7/H9k+fdpfmNEyBg3qzx9/cRaXXzGTv1rxg1aflxkzppzFf/IZLrpoCv369c1BLa1w5Od8MZ3lZMbMrID06SO+8tVL2PvG2xx8613WrXuO3793jMWLz2fRVeelfjDarDdxqzczKzA1NRXU1FQAcODAEaZMGUt9/aQc18oKSkD0ooUmncyYmRWwL3/54lxXwQpVLxpmSrU2k6Q9krZL2ippc4tjKySFpIo2zl0i6dXks6Q7Km1mZmZd1ItWzT6Vnpk5EXGo+Q5J1UAD0OrMTZKGAbcDdWTeat8iaX1EvNPJ+pqZmZmdpKurZt8D3EImUWnNJcDGiDicJDAbgXldvKeZmZl1RURm0rzOflKQNE/Sy5J2S7q1leM3S3pJ0guS/k3S6c2OndKoTtpkJoANkrZIWp7caAHQGBHb2jmvCtjb7Pu+ZJ+ZmZnlUg8OM0nqC9wLzAcmA1dJajnx0X8BdRExDXgUWJ2c2zSqcy4wC7hd0tD27pd2mOmCiGiUVAlslLQL+BqZIaZukSRJywHGjRvXXZc1MzOzVkTPLmcwC9gdEa8BSPohsAB46aP7R/x7s/K/ARYn2x+N6iTnNo3qPNjWzVL1zEREY/LvQeAxoB4YD2yTtAcYCzwvqeViKo1AdbPvY5N9rd3jvoioi4i6ESNGpKmWmZmZdUoXemXSPQB8qiMzfwE81clzO05mJJVKKmvaJtMbsykiKiOiJiJqkht9KiLebHH6M0CDpKFJF1FDss/MzMwKV4Wkzc0+yzt7IUmLybwodFdnr5FmmGkk8JikpvI/iIin26lUHXBtRFwTEYcl3QlsSg7f0dRtZGZmZjkSdHWemUMRUdfO8VQjM5IuBm4D6iPiaLNzZ7c49+ftVabDZCYZ75reQZmaZtubgWuafV8LrO3oPmZmZpZFPTsD8CagVtJ4MsnJIuDq5gUknQ18D5iXPMbS5BngW80e+m0AVrZ3M88AbGZmVmQCiB6cATgiPpB0PZnEpC+wNiJelHQHsDki1pMZVvoD4JFk9OeNiPhCZ0Z1nMyYmZkVm4ie7pkhIp4Enmyx7xvNtttci+NUR3W6OmmemZmZWU65Z8bMzKwI9eQwU7Y5mTEzMytGPTzMlE2KPFz9UtJbwOu5rkcnVACHOixljlM6jlM6jlM6jlM6uYrT6RGRtRljJT1N5v/aWYciIm/WWszLZKZQSdrcwXv3huOUluOUjuOUjuOUjuNUmPwAsJmZmRU0JzNmZmZW0JzMdK/7cl2BAuE4peM4peM4peM4peM4FSA/M2NmZmYFzT0zZmZmVtCczHSBpBmSfiNpa7IE+qw2yi2R9GryWZLteuaapIeSGG2VtEfS1jbK7ZG0vSme2a5nrp1CnOZJelnSbkm3Zrue+UDSDZJ2SXpR0uo2yhR1e4LUcSrq9iTpbyQ1NvvZ+1wb5Yq+PeUzT5rXNauBb0bEU8kPwGpOXrYcScOA24E6Mmt7bZG0PiLeyXZlcyUiFjZtS1oDHGmn+JyIKMq5MNLESVJf4F7gs8A+YFPSnl7KWkVzTNIcYAEwPSKOSqpsp3jRtqc0cXJ7+sg9EXF3inJF257ynXtmuiaAwcn2EGB/K2UuATZGxOEkgdkI5M1EQ9mkzLKoVwIP5rou+ayDOM0CdkfEaxFxDPghmT9YxeQ6YFVEHAWIiIM5rk++ShMntyfrFZzMdM2NwF2S9gJ3AytbKVMF7G32fV+yrxhdCByIiFfbOB7ABklbJC3PYr3yTXtxcnuCM4ELJf2npF9ImtlGuWJvT2ni5PaUcb2kFyStlTS0jTLF3p7ymoeZOiDpZ8CoVg7dBlwE3BQRP5J0JfB9oM0lzXuz9uIUET9Jtq+i/V6ZCyKiMekO3yhpV0Q82911zaVuilOv18HPXT9gGPBpYCbwsKQJ8fFXM4u6PZE+Tr1eB3H6R+BOMsnKncAaYGkrZXt9eypkTmY6EBFtJieS/gX4avL1EeD+Voo1cvJzNGOBn3dT9fJGe3ECkNQPuAI4p51rNCb/HpT0GJku8F71y6Ib4tQIVDf7PjbZ16t08HN3HfDj5I/ybyWdILPGzFstrlHU7SllnIq+PTUn6Z+AJ9q4Rq9vT4XMw0xdsx+oT7bnAq0NCzwDNEgamnRfNiT7is3FwK6I2NfaQUmlksqatsnEaUcW65cv2o0TsAmolTReUgmwCFiftdrlh8eBOQCSzgRKaLEwoNsTkCJOuD0haXSzr5fTSjtxe8p/Tma6ZhmwRtI24FvAcgBJdZLuB4iIw2S6LjclnzuSfcVmES2GTiSNkfRk8nUk8FwSy98CP42Ip7Ncx3zQbpwi4gPgejIJ8U7g4Yh4Meu1zK21wARJO8g8sLokIsLt6WM6jJPbEwCrk1euXyCT/N0E/v1UaDwDsJmZmRU098yYmZlZQXMyY2ZmZgXNyYyZmZkVNCczZmZmVtCczJiZmVlBczJjZmZmBc3JjJmZmRU0JzNmZmZW0P4PhOocKDe+i2QAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f,ax = plt.subplots(figsize=graph_figsize)\n", "cons_stats.plot(column='fsm_2016_rat', legend=True, ax=ax)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### FSM is (loosly) a young persons problem" ] }, { "cell_type": "code", "execution_count": 182, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:31:24.449295Z", "start_time": "2018-06-08T18:31:23.234014Z" }, "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 182, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "unyearify = lambda c:'_'.join([c.split('_')[0]]+c.split('_')[2:])\n", "cons_stats_2016 = cons_stats[[c for c in cons_stats.columns if '2016' in c]].rename(columns=unyearify)\n", "\n", "sns.pairplot(data=cons_stats_2016, hue='topqt',\n", " vars=['age_avg','fsm_rat','pop_m_per_f'])" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### \"I'm bored, make a GIF!\"" ] }, { "cell_type": "code", "execution_count": 183, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:32:06.557337Z", "start_time": "2018-06-08T18:32:06.548477Z" }, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "import matplotlib.animation as animation\n", "\n", "unyearify = lambda c:'_'.join([c.split('_')[0]]+c.split('_')[2:])\n", "years = list(range(2009,2017))\n", "explanations={\n", " 'age_avg': \"Average Age\",\n", " 'av_pc': \"Available School Places per capita\",\n", " 'av_rat': \"Ratio of Available Places to Actualised Enrolment\",\n", " 'av': \"Available School Places\",\n", " 'en_pc': \"Enrolled Pupils per capita\",\n", " 'en_pk': \"Enrolled Pupils per $km^2$\",\n", " 'en': \"Enrolled Pupils\",\n", " 'fsm_rat': \"Ratio of FSM pupils to total pupils\",\n", " 'fsm': \"FSM pupils\",\n", " 'pop': \"Population\",\n", " 'pop_females': \"Population (F)\",\n", " 'pop_males': \"Population (M)\",\n", " 'pop_m_per_f': \"Ratio of Males to Females\",\n", " 'topqt': \"Most populous age quartile (Age or younger)\"\n", "}" ] }, { "cell_type": "code", "execution_count": 246, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T10:42:26.336146Z", "start_time": "2018-06-09T10:41:40.149661Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "age_avg:2016 failed\n" ] }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "geometry:2010 failed\n" ] }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "geometry:2012 failed\n" ] }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "geometry:2014 failed\n" ] }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "geometry:2016 failed\n" ] }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for metric in set(map(unyearify, cons_stats.columns)):\n", " for year in years:\n", " try:\n", " f, ax = plt.subplots(figsize=graph_figsize)\n", " if metric in explanations:\n", " ax.set_title(f\"{explanations[metric]}:({year})\")\n", " else:\n", " ax.set_title(f\"{metric}:({year})\")\n", " \n", " cons_stats[[c for c in cons_stats.columns if str(year) in c]+['geometry']]\\\n", " .rename(columns=unyearify).plot(column=metric, legend=True, ax=ax)\n", " ax.axis('off')\n", " f.tight_layout()\n", " p = Path(f\"outputs/{metric}/{year}.png\")\n", " p.parent.mkdir(parents=True, exist_ok=True)\n", " f.savefig(p)\n", " plt.close(f)\n", " \n", " fps = 12\n", " except:\n", " print(f\"{metric}:{year} failed\")\n", " finally:\n", " if f:\n", " plt.close(f)" ] }, { "cell_type": "code", "execution_count": 245, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T10:41:12.098596Z", "start_time": "2018-06-09T10:41:10.765644Z" }, "code_folding": [], "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "[MoviePy] Building file outputs/Population Distribution.gif with imageio\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 92%|█████████▏| 11/12 [00:01<00:00, 10.61it/s]\n" ] } ], "source": [ "import moviepy.editor as mpy\n", "import moviepy.video as mpyv\n", "clips = {}\n", "for p in Path('outputs/').iterdir():\n", " if not p.is_dir():\n", " continue\n", " metric = p.parts[-1]\n", " file_list = [str(_p) for _p in sorted(filter(lambda s:s.suffix=='.png', p.iterdir()))]\n", " clip = mpy.ImageSequenceClip(file_list, fps=1.5)\n", " clip = mpyv.fx.all.freeze(clip, t='end', freeze_duration=2)\n", " clip.write_gif(f\"outputs/{metric}.gif\")\n", " [Path(f).unlink() for f in file_list]\n", " p.rmdir()\n", " clips[metric]=clip\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### We're getting older, or at least living longer\n", "![](outputs/age_avg.gif)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### But younger people are taking over the west\n", "![](outputs/topqt.gif)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T17:32:52.044695Z", "start_time": "2018-06-08T17:32:51.907125Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### 💕 Go West for Men, or West Belfast for Women 💕 \n", "10% fewer men than women in West Belfast, ~2% more men than women out west\n", "![](outputs/pop_m_per_f.gif)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Free School Meals are rising with population\n", "![](outputs/fsm.gif)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### But the divide is getting wider per capita\n", "![](outputs/fsm_rat.gif)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### There aren't necessarily fewer available school places either...\n", "There just aren't any where people want to send their kids...\n", "\n", "Could *possibly* indicate over-provisioning in yellow areas...\n", "![](outputs/av_pc.gif)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Population distribution isn't really changing at all\n", "![](outputs/pop.gif)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:00:05.675285Z", "start_time": "2018-06-08T18:00:05.537181Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### And as such, noones sending their kids anywhere differently despite closures...\n", "\n", "![](outputs/en_pc.gif)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T17:47:39.111883Z", "start_time": "2018-06-08T17:47:39.106434Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### 🎶All together now🎶" ] }, { "cell_type": "code", "execution_count": 188, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:37:15.571349Z", "start_time": "2018-06-08T18:37:15.564826Z" } }, "outputs": [ { "data": { "text/plain": [ "dict_keys(['av_pc', 'pop', 'pop_males', 'av', 'en_pk', 'en_pc', 'age_avg', 'fsm', 'pop_females', 'fsm_rat', 'pop_m_per_f', 'av_rat', 'en', 'topqt'])" ] }, "execution_count": 188, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clips.keys()" ] }, { "cell_type": "code", "execution_count": 208, "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:44:00.895307Z", "start_time": "2018-06-08T18:43:51.993882Z" }, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "[MoviePy] Building file outputs/all.gif with imageio\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 92%|█████████▏| 11/12 [00:08<00:00, 1.25it/s]\n" ] } ], "source": [ "\n", "def batch(iterable, n=1):\n", " \"\"\"\n", " Split an iterable into n-length batches\n", " :param iterable:\n", " :param n:\n", " :return:\n", " \"\"\"\n", " parent_length = len(iterable)\n", " for ndx in range(0, parent_length, n):\n", " yield iterable[ndx:min(ndx + n, parent_length)]\n", "ex_list = ['pop_males','pop_females']\n", "all_gifs = [v for k,v in clips.items() if k not in ex_list]\n", "mpy.clips_array(list(batch(all_gifs,4))\n", ").write_gif('outputs/all.gif')\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "![](outputs/all.gif)" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T15:29:57.337119Z", "start_time": "2018-06-08T15:29:43.951Z" }, "slideshow": { "slide_type": "slide" } }, "source": [ "# Conclusions\n", "## Hypotheses / conjectures\n", "* East Antrim Constituency is literally 'little britain'\n", "* None wants to go to school in West Belfast for some reason\n", "* Everyone wants to go to school in North Down\n", "* The 'places' scandal is either over blown, or more related to 'preference'\n", "* There is a demographic wave of <11's that is gonna hit education system in 2 years. Good luck.\n", "* South Belfast steals all-the-18-year-olds, keeps em for a decade or so and then the fuck off home\n", "* Foyle has been experiencing a sustained brain drain of < 35's that is now impacting services" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Final Comments\n", "* Data is hard\n", "* Open Data is hard without a budget\n", "* 80/20 rule is more like 90/10\n", "* __GIVE US THE GOD DAMNED POSTCODE BOUNDARIES__" ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-08T18:08:16.298279Z", "start_time": "2018-06-08T18:08:16.287156Z" }, "slideshow": { "slide_type": "slide" } }, "source": [ "# Idiots Guide to (Open) Data Science - Thank you\n", "\n", "Andrew Bolster \n", "* [bolster.online](https://bolster.online)\n", "* Tweets [@bolster](https://twitter.bolster.online)\n", "* GitHubs at [andrewbolster](https://github.com/andrewbolster)\n", "* Works at [AlertLogic](https://alertlogic.com) **We're hiring Threat/Exploit Researchers**\n", "* Plays at [Farset Labs](https://www.farsetlabs.org.uk)\n", "* **[THIS NOTEBOOK IS AT present.bolster.online](http://present.bolster.online)**\n", "* [Also available in source at presentgh.bolster.online](http://presentgh.bolster.online)" ] }, { "cell_type": "code", "execution_count": 249, "metadata": { "ExecuteTime": { "end_time": "2018-06-09T10:45:49.310770Z", "start_time": "2018-06-09T10:45:37.716615Z" } }, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('
');\n", " var button = $('');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "[MoviePy] Building file outputs/Population Distribution.gif with imageio\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 92%|█████████▏| 11/12 [00:01<00:00, 10.36it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "[MoviePy] Building file outputs/Population Distribution (normed).gif with imageio\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 92%|█████████▏| 11/12 [00:01<00:00, 10.34it/s]\n" ] } ], "source": [ "metric='Population Distribution'\n", "for year in years:\n", " try:\n", " f, ax = plt.subplots(figsize=graph_figsize)\n", " if metric in explanations:\n", " ax.set_title(f\"{explanations[metric]}:({year})\")\n", " else:\n", " ax.set_title(f\"{metric}:({year})\")\n", "\n", " df = cons_pop[(cons_pop.Gender == 'All People') \\\n", " & (cons_pop.Mid_Year_Ending == year)]\\\n", " .groupby(['Age','constituency'])['Population_Estimate']\\\n", " .sum().unstack()\n", " sns.heatmap(df.T, ax=ax)\n", " f.tight_layout()\n", " p = Path(f\"outputs/{metric}/{year}.png\")\n", " p.parent.mkdir(parents=True, exist_ok=True)\n", " f.savefig(p)\n", " plt.close(f)\n", "\n", " fps = 12\n", " except:\n", " print(f\"{metric}:{year} failed\")\n", " finally:\n", " if f:\n", " plt.close(f)\n", " \n", "metric='Population Distribution (normed)'\n", "for year in years:\n", " try:\n", " f, ax = plt.subplots(figsize=graph_figsize)\n", " if metric in explanations:\n", " ax.set_title(f\"{explanations[metric]}:({year})\")\n", " else:\n", " ax.set_title(f\"{metric}:({year})\")\n", "\n", " df = cons_pop[(cons_pop.Gender == 'All People') \\\n", " & (cons_pop.Mid_Year_Ending == year)]\\\n", " .groupby(['Age','constituency'])['Population_Estimate']\\\n", " .sum().unstack()\n", " sns.heatmap(colnorm(df.T), ax=ax)\n", " f.tight_layout()\n", " p = Path(f\"outputs/{metric}/{year}.png\")\n", " p.parent.mkdir(parents=True, exist_ok=True)\n", " f.savefig(p)\n", " plt.close(f)\n", "\n", " fps = 12\n", " except:\n", " print(f\"{metric}:{year} failed\")\n", " finally:\n", " if f:\n", " plt.close(f)\n", " \n", "import moviepy.editor as mpy\n", "import moviepy.video as mpyv\n", "clips = {}\n", "for p in Path('outputs/').iterdir():\n", " if not p.is_dir():\n", " continue\n", " metric = p.parts[-1]\n", " file_list = [str(_p) for _p in sorted(filter(lambda s:s.suffix=='.png', p.iterdir()))]\n", " clip = mpy.ImageSequenceClip(file_list, fps=1.5)\n", " clip = mpyv.fx.all.freeze(clip, t='end', freeze_duration=2)\n", " clip.write_gif(f\"outputs/{metric}.gif\")\n", " [Path(f).unlink() for f in file_list]\n", " p.rmdir()\n", " clips[metric]=clip\n", " " ] }, { "cell_type": "markdown", "metadata": { "ExecuteTime": { "end_time": "2018-06-05T17:32:52.359231Z", "start_time": "2018-06-05T17:32:52.356493Z" }, "slideshow": { "slide_type": "subslide" } }, "source": [ "### NOTES FOR LATER\n", "\n", "#### Fucked Notes:\n", "##### DoE\n", "* inconsistent file names\n", "* inconsistent extensions\n", "* inconsistent cases in extentions 🤦‍\n", "* changing schema almost every year\n", "* recent years don't have headers for de ref/school name\n", "* multi row headers\n", "\n", "\n", "\n", "#### Housing Stock Data\n", "https://www.opendatani.gov.uk/dataset/ni-housing-stock\n", "\n", "\n", "#### SEN scaling is complex AF\n", "https://www.education-ni.gov.uk/sites/default/files/publications/de/the-code-of-practice.pdf\n", "\n", "~ hundred page doc to work out that 5 is 'confirmed and fully stated special educational needs. Everthing less is 'suspected and in need of advice and support'\n", "\n", "\"Controlled and Maintained schools have [a budget] for this\"\n", "\"Grant maintained integrated schools also receive this through their annual budget\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" }, "livereveal": { "footer": "present.bolster.online", "header": "

NIDC 2018

", "scroll": true }, "toc": { "base_numbering": "0", "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "288px" }, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }