{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Working with Data in Pandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When we are working with data, it can be extremely useful to have arrays that are \"smart\", so they have information on which columns are which data channels, or perhaps index by a date. It's also really nice to have powerful data selection with little coding. Pandas is a fairly new package that accomplishes that." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Further Resources" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are many available resources for tutorials with pandas. Here is just a few: \n", "- [DTU Wind Energy Toolbox](https://gitlab.windenergy.dtu.dk/toolbox/WindEnergyToolbox/blob/master/docs/using-statistics-df.md) \n", "- [Pandas cookbook](https://pandas.pydata.org/pandas-docs/stable/tutorials.html) \n", "- [Dataquest blog](https://www.dataquest.io/blog/pandas-python-tutorial/) \n", "- [Google](https://www.google.dk/search?q=pandas+tutorials) \n", "- (etc.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tutorial will be loading data from `risoe_demo_data.csv` (located in the repository). I generated the data in the `.csv` file by quering the Risø V52 met mast SQL database.\n", "\n", "In case you want to query an SQL database yourself later: \n", "1. Get granted access to the database by the owner (you need a username/password) \n", "2. Use conda to install Python package `sqlalchemy` (see Workshop 1) \n", "3. Install `mysqlclient` using conda (Mac/Linux) or pip \n", "4. Use the code in the cell below to query the SQL database and load the results to pandas. Be sure to delete the \"DEMO ONLY\" lines (unless you want to save your queried data as a `.csv`)." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# host, port = 'ri-veadbs04', 3306 # this is the host and port I was told for the Risø V52 met mast SQL database\n", "# dbname = 'v52mast_risoe.calmeans' # this is the database name for the mean values of the met mast\n", "# username, password = ADD_ME, ADD_ME # here is where you add strings of your username and password\n", "# db_path = 'risoe_demo_data.csv' # name of the csv I created for this demo. (DEMO ONLY)\n", "# n_load = 500 # how many values to load for the demo\n", "#\n", "# query = f'select * from {dbname} limit {n_load};' # an SQL query (get n_load rows from the database)\n", "# con_str = f'mysql+mysqldb://{username}:{password}@{host}:{port}' # connection string for sqlalchemy\n", "# engine = sqlalchemy.create_engine(con_str) # create a conneciton engine in sqlalchemy\n", "# with engine.connect() as conn: # use what's called a \"context manager\" to make sure connection closes\n", "# df = pd.read_sql_query(query, conn) # load the results from my query to a pandas dataframe\n", "# df.to_csv(db_path, index=False) # save the pandas dataframe to a csv file (DEMO ONLY)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As always, we must first import the modules we want to use before we can write any code. Iøm also setting the jupyter matploblib option to be interactive, as we can do in notebooks." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "% matplotlib notebook\n", "import matplotlib.pyplot as plt\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading Data using Pandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we have a `.csv`, pandas can immediately load it. If you have a file that's delimited by whitespace, you can use the option `delim_whitespace=True` to parse it properly. Our file is separated by commas, however, so there's no need to use that option." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "means_path = 'data/demo_risoe_data_means.csv' # define the path to our csv file\n", "means_df = pd.read_csv(means_path) # read the CSV to a pandas dataframe\n", "stdvs_path = 'data/demo_risoe_data_stdvs.csv'\n", "stdvs_df = pd.read_csv(stdvs_path)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that `read_csv()` is a function that is defined in the pandas module. We imported pandas as `pd`, then we used the dot operator to access the function defined in the module.\n", "\n", "The `read_csv()` function has now loaded the `.csv` information into a pandas-specific object called a [DataFrame](https://pandas.pydata.org/pandas-docs/stable/dsintro.html#dataframe). This object comes with many useful attributes (things associated with the object) and methods (functions associated with the object) that are listed [here](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Indexes and Columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For now, let's focus on the dataframe with the mean values. We'll look into combining it with the std one a bit later.\n", "\n", "The dataframe is essentially a 2D array. We can determine the shape of the underlying array using the `shape` attribute: " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "means_df.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We pulled 500 rows from the SQL database, so that makes sense. We have 65 columns. Let's see what those are, eh?\n", "\n", "The beauty of dataframes is that the rows and columns are labeled with an \"index\" and a column identifier, respectively. We can access the index and list of columns using the following commands:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(means_df.index)\n", "print(means_df.columns.values) # add '.values' to \"prettify\" output" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So, our current index is just a \"range\" (i.e., a set of integers) from 0 to 499, and we have a lot of columns. Let's glimpse our dataframe." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "means_df.head() # take a look at the first few rows" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "How cool! And jupyter prints things so nicely. \n", "\n", "We can also get a statistical glimpse at the dataframe using `describe()`:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "means_df.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That's pretty cool. All the information is lined up nicely.\n", "\n", "**BUT** now that we are looking at it, our index should probably be `name`. (After all, that's a unique identifier for each row.) And, while we're at it, let's change `name` from an integer to a datetime datatype. (This is not only [really powerful](https://pandas.pydata.org/pandas-docs/stable/timeseries.html), it will also be useful later.) The string format specifiers can be found [here](https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "means_df['name'] = pd.to_datetime(means_df['name'].astype(str), format='%Y%m%d%H%M') # convert name to datetime\n", "means_df.set_index('name', inplace=True) # set name as index (see cell below for notes)\n", "means_df.head() # preview new dataframe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sweet! Now our index is a datetime that makes sense.\n", "\n", "A few notes on `set_index()`: \n", "- By default, it will not change the original dataframe but will return a new dataframe. We actually want to change the original, though, so we use `inplace=True`. \n", "- By default, it will delete the column once the new index has been defined. If you don't want this for some reason, use `drop=False`.\n", "\n", "Let's quickly do the same for the dataframe with the standard deviations." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "stdvs_df['name'] = pd.to_datetime(stdvs_df['name'].astype(str), format='%Y%m%d%H%M') # convert name to datetime\n", "stdvs_df.set_index('name', inplace=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hm...it's annoying that we have two different dataframes. Could we combine them?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Merging Dataframes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If two dataframes have the same index (e.g., a date), then we can merge them into a single dataframe. This is really nice for slicing, as we'll see later.\n", "\n", "First, we need to check that their indices match. If they don't, then merging will cause weird things." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "means_df.index.equals(stdvs_df.index) # check whether one index equals the other" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The indices match! Great.\n", "\n", "Now, for merging. The webpage on merging is [here](https://pandas.pydata.org/pandas-docs/stable/merging.html). It's important that our column names of each dataframe don't match." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "means_df.columns.equals(stdvs_df.columns) # check whether the columns match" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Crap. They do. Well, let's fix it by appending `'_mean'` to the columns in `means_df` and `'_stdv'` to the columns in `stdvs_df`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "means_df = means_df.add_suffix('_mean') # append '_mean' to all columns\n", "stdvs_df = stdvs_df.add_suffix('_stdv') # append '_stdv' to all columns\n", "print(means_df.columns[:2].values, stdvs_df.columns[:2].values) # check our new columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cool. Now that the columns are different, but the indexes are the same, we can just use pandas `concat()` function." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "met_df = pd.concat([means_df, stdvs_df], axis=1) # concatenating horizontally\n", "print(means_df.shape, stdvs_df.shape, met_df.shape)\n", "met_df.columns.values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "EXCELLENT. Now that we have a dataframe with both the means and the standard deviation combined, let's look into how we can sub-select useful data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Slicing a Pandas Dataframe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are generally two ways to slice a dataframe: by integers (i.e., classic array slicing) or by index/column labels. A detailed explanation of indexing is [here](https://pandas.pydata.org/pandas-docs/stable/indexing.html).\n", "\n", "Let's explore both ways." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Integer-Based Slicing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Integer slicing should look very familiar to you: this is very similary to NumPy array slicing. We perform integer slicing using the `iloc` attribute.\n", "\n", "There are two categories within integer-based slicing to keep in your mind: \n", "1. Slicing and returning a dataframe \n", "2. Slicing and returning a pandas dataseries \n", "\n", "Let's start with returning a dataframe." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "slice_df = met_df.iloc[4:9, [0, 3, 7, 9]] # rows 4 through 8 of a selection of 4 different columns\n", "slice_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, you can return a data series instead of a dataframe if you specify the column as a single integer. Note, in this case, that you will lose some of the dataframe-specific methods and attributes. For example:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "bad_slice = met_df.iloc[:, 0] # bad_slice is actually a series, not a dataframe\n", "print(type(bad_slice))\n", "bad_slice.columns # this dies! series don't have columns!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Label-Based Slicing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Integer slicing can be really annoying in a lot of cases. After all, who wants to keep track of which column is a specific data channel? Ain't nobody got time for that.\n", "\n", "That's where label-based slicing is king.\n", "\n", "Just as with integer-based slicing, there are two categories within label-based slicing: \n", "1. Slicing and returning a dataframe \n", "2. Slicing and returning a data series\n", "\n", "Let's tackle option 2 first." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "wsp_ds = met_df.Wsp_70m_mean # you can access any underlying data series by using the dot operator\n", "wsp_ds.head() # the resulting ds still has its index, and a few of the same methods as the dataframe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, onto option 1. Let's show how powerful pandas is.\n", "\n", "Let's say I want all the mean wind speed outputs at all heights for October 18, 2015. How can I do that?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "oct_day_slice = met_df.loc['2015-10-18', [s for s in met_df.columns if 'Wsp' in s and '_mean' in s]] # BOOOOOOOOM\n", "oct_day_slice.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's explain this in a bit more detail.\n", "\n", "First, the date slicing. Pandas is *smart*. If you feed in a string that is 'YYYY', 'YYYY-MM', or 'YYYY-MM-DD', it will interpret what you probably mean. So, we've used this option to pull out all data from the 18th of October with this index: \n", "\n", "`'2015-10-18'` \n", "\n", "You could also specify a range of days (e.g., `'2015-10-18':'2015-10-20'`). Note that the last day will be included in the slice, unlike normal array indexing.\n", "\n", "That's dang snazzy.\n", "\n", "Now, I have also used list comprehension to get a list of columns with `Wsp` in the column with this line: \n", "\n", "`[s for s in met_df.columns if 'Wsp' in s]` \n", "\n", "Remember that, with list comprehension, the line above is just like the following for loop: \n", "```lc_list = []\n", "for s in met_df.columns:\n", " if 'Wsp' in s:\n", " lc_list.append(s)\n", "```\n", "\n", "We can check that the output matches what we expect:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(f'First: {oct_day_slice.index[0]}, Last: {oct_day_slice.index[-1]}') # first and last index items\n", "print(oct_day_slice.columns.values) # adding `.values` keeps it from outputting useful, though cluttering, metadata" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Selecting and Plotting Data Based on Dataframe Values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pandas can also select sub-dataframes based on the values in the dataframe. For example, let's take all the data in October, filter it so that the $U_{70m}>2$ m/s and $\\sigma_u> 0.2$, and do some quick analyses with it." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "oct_slice = met_df.loc['2015-10', :] # all data in october\n", "oct_slice = oct_slice.loc[(oct_slice.Wsp_70m_mean > 2) & (oct_slice.Wsp_70m_stdv > 0.2)] # u > 2 and sig_u > 0.2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the first line, we are using pandas's partial string slicing to get all the data in October. In the second line, we then take the October slice, and apply our desired filtering. Note that we've had to separate the partial-date slicing with the other filtering, because pandas unfortunately can't seem to handle them combined.\n", "\n", "Now that we have our filtered, desired slice, let's make a few quick plots." ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "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 = $('<div/>');\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", " this.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", " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", " 'ui-helper-clearfix\"/>');\n", " var titletext = $(\n", " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", " 'text-align: center; padding: 3px;\"/>');\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 = $('<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 = $('<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 = $('<canvas/>');\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 = $('<div/>')\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 = $('<button/>');\n", " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", " 'ui-button-icon-only');\n", " button.attr('role', 'button');\n", " button.attr('aria-disabled', 'false');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", "\n", " var icon_img = $('<span/>');\n", " icon_img.addClass('ui-button-icon-primary ui-icon');\n", " icon_img.addClass(image);\n", " icon_img.addClass('ui-corner-all');\n", "\n", " var tooltip_span = $('<span/>');\n", " tooltip_span.addClass('ui-button-text');\n", " tooltip_span.html(tooltip);\n", "\n", " button.append(icon_img);\n", " button.append(tooltip_span);\n", "\n", " nav_element.append(button);\n", " }\n", "\n", " var fmt_picker_span = $('<span/>');\n", "\n", " var fmt_picker = $('<select/>');\n", " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", " fmt_picker_span.append(fmt_picker);\n", " nav_element.append(fmt_picker_span);\n", " this.format_dropdown = fmt_picker[0];\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = $(\n", " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", " fmt_picker.append(option)\n", " }\n", "\n", " // Add hover states to the ui-buttons\n", " $( \".ui-button\" ).hover(\n", " function() { $(this).addClass(\"ui-state-hover\");},\n", " function() { $(this).removeClass(\"ui-state-hover\");}\n", " );\n", "\n", " var status_bar = $('<span class=\"mpl-message\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "}\n", "\n", "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", "}\n", "\n", "mpl.figure.prototype.send_message = function(type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "}\n", "\n", "mpl.figure.prototype.send_draw_message = function() {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", " }\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1]);\n", " fig.send_message(\"refresh\", {});\n", " };\n", "}\n", "\n", "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", " var x0 = msg['x0'] / mpl.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", " var x1 = msg['x1'] / mpl.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0, 0, fig.canvas.width, fig.canvas.height);\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "}\n", "\n", "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "}\n", "\n", "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", " var cursor = msg['cursor'];\n", " switch(cursor)\n", " {\n", " case 0:\n", " cursor = 'pointer';\n", " break;\n", " case 1:\n", " cursor = 'default';\n", " break;\n", " case 2:\n", " cursor = 'crosshair';\n", " break;\n", " case 3:\n", " cursor = 'move';\n", " break;\n", " }\n", " fig.rubberband_canvas.style.cursor = cursor;\n", "}\n", "\n", "mpl.figure.prototype.handle_message = function(fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "}\n", "\n", "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "}\n", "\n", "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Called whenever the canvas gets updated.\n", " this.send_message(\"ack\", {});\n", "}\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function(fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " evt.data.type = \"image/png\";\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src);\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " evt.data);\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig[\"handle_\" + msg_type];\n", " } catch (e) {\n", " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", " }\n", " }\n", " };\n", "}\n", "\n", "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function(e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e)\n", " e = window.event;\n", " if (e.target)\n", " targ = e.target;\n", " else if (e.srcElement)\n", " targ = e.srcElement;\n", " if (targ.nodeType == 3) // defeat Safari bug\n", " targ = targ.parentNode;\n", "\n", " // jQuery normalizes the pageX and pageY\n", " // pageX,Y are the mouse positions relative to the document\n", " // offset() returns the position of the element relative to the document\n", " var x = e.pageX - $(targ).offset().left;\n", " var y = e.pageY - $(targ).offset().top;\n", "\n", " return {\"x\": x, \"y\": y};\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * http://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys (original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object')\n", " obj[key] = original[key]\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function(event, name) {\n", " var canvas_pos = mpl.findpos(event)\n", "\n", " if (name === 'button_press')\n", " {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * mpl.ratio;\n", " var y = canvas_pos.y * mpl.ratio;\n", "\n", " this.send_message(name, {x: x, y: y, button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event)});\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " // Handle any extra behaviour associated with a key event\n", "}\n", "\n", "mpl.figure.prototype.key_event = function(event, name) {\n", "\n", " // Prevent repeat events\n", " if (name == 'key_press')\n", " {\n", " if (event.which === this._key)\n", " return;\n", " else\n", " this._key = event.which;\n", " }\n", " if (name == 'key_release')\n", " this._key = null;\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.which != 17)\n", " value += \"ctrl+\";\n", " if (event.altKey && event.which != 18)\n", " value += \"alt+\";\n", " if (event.shiftKey && event.which != 16)\n", " value += \"shift+\";\n", "\n", " value += 'k';\n", " value += event.which.toString();\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, {key: value,\n", " guiEvent: simpleKeys(event)});\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", " if (name == 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message(\"toolbar_button\", {name: name});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.close = function() {\n", " comm.close()\n", " };\n", " ws.send = function(m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function(msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", " ws.onmessage(msg['content']['data'])\n", " });\n", " return ws;\n", "}\n", "\n", "mpl.mpl_figure_comm = function(comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = $(\"#\" + id);\n", " var ws_proxy = comm_websocket_adapter(comm)\n", "\n", " function ondownload(figure, format) {\n", " window.open(figure.imageObj.src);\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy,\n", " ondownload,\n", " element.get(0));\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element.get(0);\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error(\"Failed to find cell for figure\", id, fig);\n", " return;\n", " }\n", "\n", " var output_index = fig.cell_info[2]\n", " var cell = fig.cell_info[0];\n", "\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function(fig, msg) {\n", " var width = fig.canvas.width/mpl.ratio\n", " fig.root.unbind('remove')\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable()\n", " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", " fig.close_ws(fig, msg);\n", "}\n", "\n", "mpl.figure.prototype.close_ws = function(fig, msg){\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "}\n", "\n", "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width/mpl.ratio\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message(\"ack\", {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () { fig.push_to_output() }, 1000);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\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) { continue; };\n", "\n", " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></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 = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></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", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\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<ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code'){\n", " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 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": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,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+EN59NFHJ5qkZ6DMmzdPzj77bPnEJz4h3/rWt+THf/zHJ/5+5plnyqpVqzoHz42MjFQGxfOf/3xRU/V///d/Mjz87O//Y489JkcccYRonT/96U9P1PWDH/ygXHzxxR0DoqaEy04gy+cGA2LnjAHJz/AGETm/z+M6nvveQHlGQAKBcTsEIAABCMQTyJJINYWdTr3S0YD77rtPXvCCF3Saddddd8nixYtlbGysM8Khyfpv/dZvdf62c+fOjjkZHR3tjID86Ec/kj/5kz+RG264Qb7//e/L9OnT5bDDDutM3YqmSem/P+c5z5E/+IM/6BiZK6+8Ur73ve9N/Ns555xjxvmVr3xFTj75ZHnLW97SaU906dSrN77xjbJy5Uo57bTTJv59y5YtndGdX/7lX5abb7658+9f/OIXO/foM5s3b5YPfehDHTOzaNEiuf766+WYY46Rv/u7v5MrrriiM5Xrec97XqesJUuWBNU/mkL29a9/vVPWP/zDP8jWrVs7IzIf/ehHZZ999pE/+qM/ko9//OMdA3XKKafIX/3VX3WMVPf1xBNPdKbB/fM//3Onnjq1TEeztH4ao+j6j//4D/nzP/9zWb16tTz88MMye/bsTlzf9773TcQ8ulcP3nz9618vF154YWfU6Bvf+IYceOCB8nu/93vy1re+tW87s3xuMCBBXSX2ZgxIfoYnicjzYh5/u4icICKjOoARKM8akEBg3A4BCEAAAoMzILt27Zb1W7bL/FnDA50urNOV1Cx85CMf6STqel199dVy1VVXiSa4r3zlK+Wggw6aSNI1mX3pS18ql19+eSdJjpLpCy64QE466STZvn1750Ts//zP/+wYFL0iA3LsscfKD37wg04iu++++8qNN97YuU8NgCa9lkvrrsn8mjVrOuYoui666KJOUq+Go3e9x0te8hJ56qmnOiM83Qbk+OOP77TjN37jNzrPKY+5c+fKe9/73o6pUk01WvrvOlr0wAMPdP6e9YqYaTnKVkdgdEqZ1lOnji1cuFD+67/+qzMC9eCDD3YMoJorNUjRpSM9Wv/HH3+8Ezc9fVzboUbphS98YcdERqNTl156acd86LS6Qw45pKOp8d61a1enHC2v24C86EUv6ky7U91DDz1U/v7v/74zHe/222/vaCRdGJCsPcB2HwbExq/36VkiopNMvy8ix+SQ7hiQlavullNP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\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = oct_slice.plot(y='Wsp_70m_mean', linestyle='none', marker='o', markersize=2) # plot mean wind speed over time\n", "ax.set_xlabel('Date'); # suppress jupyter output" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "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 = $('<div/>');\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", " this.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", " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", " 'ui-helper-clearfix\"/>');\n", " var titletext = $(\n", " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", " 'text-align: center; padding: 3px;\"/>');\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 = $('<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 = $('<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 = $('<canvas/>');\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 = $('<div/>')\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 = $('<button/>');\n", " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", " 'ui-button-icon-only');\n", " button.attr('role', 'button');\n", " button.attr('aria-disabled', 'false');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", "\n", " var icon_img = $('<span/>');\n", " icon_img.addClass('ui-button-icon-primary ui-icon');\n", " icon_img.addClass(image);\n", " icon_img.addClass('ui-corner-all');\n", "\n", " var tooltip_span = $('<span/>');\n", " tooltip_span.addClass('ui-button-text');\n", " tooltip_span.html(tooltip);\n", "\n", " button.append(icon_img);\n", " button.append(tooltip_span);\n", "\n", " nav_element.append(button);\n", " }\n", "\n", " var fmt_picker_span = $('<span/>');\n", "\n", " var fmt_picker = $('<select/>');\n", " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", " fmt_picker_span.append(fmt_picker);\n", " nav_element.append(fmt_picker_span);\n", " this.format_dropdown = fmt_picker[0];\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = $(\n", " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", " fmt_picker.append(option)\n", " }\n", "\n", " // Add hover states to the ui-buttons\n", " $( \".ui-button\" ).hover(\n", " function() { $(this).addClass(\"ui-state-hover\");},\n", " function() { $(this).removeClass(\"ui-state-hover\");}\n", " );\n", "\n", " var status_bar = $('<span class=\"mpl-message\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "}\n", "\n", "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", "}\n", "\n", "mpl.figure.prototype.send_message = function(type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "}\n", "\n", "mpl.figure.prototype.send_draw_message = function() {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", " }\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1]);\n", " fig.send_message(\"refresh\", {});\n", " };\n", "}\n", "\n", "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", " var x0 = msg['x0'] / mpl.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", " var x1 = msg['x1'] / mpl.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0, 0, fig.canvas.width, fig.canvas.height);\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "}\n", "\n", "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "}\n", "\n", "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", " var cursor = msg['cursor'];\n", " switch(cursor)\n", " {\n", " case 0:\n", " cursor = 'pointer';\n", " break;\n", " case 1:\n", " cursor = 'default';\n", " break;\n", " case 2:\n", " cursor = 'crosshair';\n", " break;\n", " case 3:\n", " cursor = 'move';\n", " break;\n", " }\n", " fig.rubberband_canvas.style.cursor = cursor;\n", "}\n", "\n", "mpl.figure.prototype.handle_message = function(fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "}\n", "\n", "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "}\n", "\n", "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Called whenever the canvas gets updated.\n", " this.send_message(\"ack\", {});\n", "}\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function(fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " evt.data.type = \"image/png\";\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src);\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " evt.data);\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig[\"handle_\" + msg_type];\n", " } catch (e) {\n", " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", " }\n", " }\n", " };\n", "}\n", "\n", "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function(e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e)\n", " e = window.event;\n", " if (e.target)\n", " targ = e.target;\n", " else if (e.srcElement)\n", " targ = e.srcElement;\n", " if (targ.nodeType == 3) // defeat Safari bug\n", " targ = targ.parentNode;\n", "\n", " // jQuery normalizes the pageX and pageY\n", " // pageX,Y are the mouse positions relative to the document\n", " // offset() returns the position of the element relative to the document\n", " var x = e.pageX - $(targ).offset().left;\n", " var y = e.pageY - $(targ).offset().top;\n", "\n", " return {\"x\": x, \"y\": y};\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * http://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys (original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object')\n", " obj[key] = original[key]\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function(event, name) {\n", " var canvas_pos = mpl.findpos(event)\n", "\n", " if (name === 'button_press')\n", " {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * mpl.ratio;\n", " var y = canvas_pos.y * mpl.ratio;\n", "\n", " this.send_message(name, {x: x, y: y, button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event)});\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " // Handle any extra behaviour associated with a key event\n", "}\n", "\n", "mpl.figure.prototype.key_event = function(event, name) {\n", "\n", " // Prevent repeat events\n", " if (name == 'key_press')\n", " {\n", " if (event.which === this._key)\n", " return;\n", " else\n", " this._key = event.which;\n", " }\n", " if (name == 'key_release')\n", " this._key = null;\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.which != 17)\n", " value += \"ctrl+\";\n", " if (event.altKey && event.which != 18)\n", " value += \"alt+\";\n", " if (event.shiftKey && event.which != 16)\n", " value += \"shift+\";\n", "\n", " value += 'k';\n", " value += event.which.toString();\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, {key: value,\n", " guiEvent: simpleKeys(event)});\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", " if (name == 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message(\"toolbar_button\", {name: name});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.close = function() {\n", " comm.close()\n", " };\n", " ws.send = function(m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function(msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", " ws.onmessage(msg['content']['data'])\n", " });\n", " return ws;\n", "}\n", "\n", "mpl.mpl_figure_comm = function(comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = $(\"#\" + id);\n", " var ws_proxy = comm_websocket_adapter(comm)\n", "\n", " function ondownload(figure, format) {\n", " window.open(figure.imageObj.src);\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy,\n", " ondownload,\n", " element.get(0));\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element.get(0);\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error(\"Failed to find cell for figure\", id, fig);\n", " return;\n", " }\n", "\n", " var output_index = fig.cell_info[2]\n", " var cell = fig.cell_info[0];\n", "\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function(fig, msg) {\n", " var width = fig.canvas.width/mpl.ratio\n", " fig.root.unbind('remove')\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable()\n", " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", " fig.close_ws(fig, msg);\n", "}\n", "\n", "mpl.figure.prototype.close_ws = function(fig, msg){\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "}\n", "\n", "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width/mpl.ratio\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message(\"ack\", {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () { fig.push_to_output() }, 1000);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\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) { continue; };\n", "\n", " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></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 = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></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", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\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<ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code'){\n", " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 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": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQVR4XuydB3hkV3n+3xnNqEujXrf3dbfXBdsYN8AmgTQgJAEChASCCRAIJQkkQBI6gQQINQUIpuQPhBpjXDA2rngNrtuLdqXVqmvURtK0//MdzdXOzEqadu6dM3few7MPsHvuKb/vXOm895zv+zxgIQESIAESIAESIAESIAESIAGHCHgc6ofdkAAJkAAJkAAJkAAJkAAJkAAoQLgISIAESIAESIAESIAESIAEHCNAAeIYanZEAiRAAiRAAiRAAiRAAiRAAcI1QAIkQAIkQAIkQAIkQAIk4BgBChDHULMjEiABEiABEiABEiABEiABChCuARIgARIgARIgARIgARIgAccIUIA4hpodkQAJkAAJkAAJkAAJkAAJUIBwDZAACZAACZAACZAACZAACThGgALEMdTsiARIgARIgARIgARIgARIgAKEa4AESIAESIAESIAESIAESMAxAhQgjqFmRyRAAiRAAiRAAiRAAiRAAhQgXAMkQAIkQAIkQAIkQAIkQAKOEaAAcQw1OyIBEiABEiABEiABEiABEqAA4RogARIgARIgARIgARIgARJwjAAFiGOo2REJkAAJkAAJkAAJkAAJkAAFCNcACZAACZAACZAACZAACZCAYwQoQBxDzY5IgARIgARIgARIgARIgAQoQLgGSIAESIAESIAESIAESIAEHCNAAeIYanZEAiRAAiRAAiRAAiRAAiRAAcI1QAIkQAIkQAIkQAIkQAIk4BgBChDHULMjEiABEiABEiABEiABEiABChCuARIgARIgARIgARIgARIgAccIUIA4hpodkQAJkAAJkAAJkAAJkAAJUIBwDZAACZAACZAACZAACZAACThGgALEMdTsiARIgARIgARIgARIgARIgAKEa4AESIAESIAESIAESIAESMAxAhQgjqFmRyRAAiRAAiRAAiRAAiRAAhQgXAMkQAIkQAIkQAIkQAIkQAKOEaAAcQw1OyIBEiABEiABEiABEiABEqAA4RogARIgARIgARIgARIgARJwjAAFiGOo2REJkAAJkAAJkAAJkAAJkAAFCNcACZAACZAACZAACZAACZCAYwQoQBxDzY5IgARIgARIgARIgARIgAQoQLgGSIAESIAESIAESIAESIAEHCNAAeIYanZEAiRAAiRAAiRAAiRAAiRAAcI1QAIkQAIkQAIkQAIkQAIk4BgBChDHULMjEiABEiABEiABEiABEiABChCuARIgARIgARIgARIgARIgAccIUIA4hpodkQAJkAAJkAAJkAAJkAAJUIBwDZAACZAACZAACZAACZAACThGgALEMdTsiARIgARIgARIgARIgARIgAKEa4AESIAESIAESIAESIAESMAxAhQgjqFmRyRAAiRAAiRAAiRAAiRAAhQgXAMkQAIkQAIkQAIkQAIkQAKOEaAAcQw1OyIBEiABEiABEiABEiABEqAA4RogARIgARIgARIgARIgARJwjAAFiGOo2REJkAAJkAAJkAAJkAAJkAAFCNcACZAACZAACZAACZAACZCAYwQoQBxDzY5IgARIgARIgARIgARIgAQoQLgGSIAESIAESIAESIAESIAEHCNAAeIYanZEAiRAAiRAAiRAAiRAAiRAAcI1QAIkQAIkQAIkQAIkQAIk4BgBChDHULMjEiABEiABEiABEiABEiABChCuARIgARIgARIgARIgARIgAccIUIA4hpodkQAJkAAJkAAJkAAJkAAJUIBwDZAACZAACZAACZAACZAACThGgALEMdTsiARIgARIgARIgARIgARIgAKEa4AESIAESIAESIAESIAESMAxAhQgjqFmRyRAAiRAAiRAAiRAAiRAAhQgXAMkQAIkQAIkQAIkQAIkQAKOEaAAcQw1OyIBEiABEiABEiABEiABEqAA4RogARIgARIgARIgARIgARJwjAAFiGOo2REJkAAJkAAJkAAJkAAJkAAFCNcACZAACZAACZAACZAACZCAYwQoQBxDzY5IgARIgARIgARIgARIgAQoQLgGSIAESIAESIAESIAEdBPYDeC9APYA6AYQA3AEwH8B+DyAxSw6PA/ARwE8O1H3FwDeCeCpLJ5lFYMJUIAYbBwOjQRIgARIgARIgARKlMDzAbwdwMMA+gFUALgawB8C+AGA38kwr+0AfglgHMCnE3XfDKAJwOUADpUoFw4bAAUIlwEJkAAJkAAJkAAJkIBTBD4D4I0AdgE4sEan3wZwMwA5STmZqLcewD4AtwF4qVMDZj/6CVCA6GfKFkmABEiABEiABEiABFYmIKciHwPwrMTpyEq16gGMAfgmgFelVfgKgJcBaAUwS8ilSYACpDTtxlGTAAmQAAmQAAmQ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0VL0GMsUERABERCBUghIgJRCTdeIgAi4TCAoQBhorSYCIiACIiACIuAQAQkQhxZDUxEBEbBCQALECkbdRAREQAREQATiISABEg9X3VUERKB8BIoVIAxuZ6G+fI1FEkfLZ0rekZkSuFDLrFNSqL9+LwIiIAIiIAKxE5AAiR2xBhABEUiYQLEChMHZrIuRr2WmpU3YlLzDHSpiMvobXwQkdREBERABEUiWgL6ckuWt0URABNwhwGxQrEGSrzHr1QF3pjxtJsweVqix6rmaCIiACIiACDhFQALEqeXQZERABERABERABERABEQg3QQkQNK9vrJOBERABERABERABERABJwiIAHi1HJoMiIgAiIgAiIgAiIgAiKQbgISIOleX1knAiIgAiIgAiIgAiIgAk4RkABxajk0GREQAREQAREQAREQARFINwEJkHSvr6wTAREQAREQAREQAREQAacISIA4tRyajAiIgAiIgAiIgAiIgAikm4AESLrXV9aJgAiIgAiIgAiIgAiIgFMEJECcWg5NRgREQAREQAREQAREQATSTUACJN3rK+tEQAREQAREQAREQAREwCkC/x+3q4803Rd15QAAAABJRU5ErkJggg==\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "oct_slice.plot(x='Wsp_70m_stdv', y='Wsp_70m_mean', kind='hexbin');" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "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 = $('<div/>');\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", " this.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", " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", " 'ui-helper-clearfix\"/>');\n", " var titletext = $(\n", " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", " 'text-align: center; padding: 3px;\"/>');\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 = $('<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 = $('<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 = $('<canvas/>');\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 = $('<div/>')\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 = $('<button/>');\n", " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", " 'ui-button-icon-only');\n", " button.attr('role', 'button');\n", " button.attr('aria-disabled', 'false');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", "\n", " var icon_img = $('<span/>');\n", " icon_img.addClass('ui-button-icon-primary ui-icon');\n", " icon_img.addClass(image);\n", " icon_img.addClass('ui-corner-all');\n", "\n", " var tooltip_span = $('<span/>');\n", " tooltip_span.addClass('ui-button-text');\n", " tooltip_span.html(tooltip);\n", "\n", " button.append(icon_img);\n", " button.append(tooltip_span);\n", "\n", " nav_element.append(button);\n", " }\n", "\n", " var fmt_picker_span = $('<span/>');\n", "\n", " var fmt_picker = $('<select/>');\n", " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", " fmt_picker_span.append(fmt_picker);\n", " nav_element.append(fmt_picker_span);\n", " this.format_dropdown = fmt_picker[0];\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = $(\n", " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", " fmt_picker.append(option)\n", " }\n", "\n", " // Add hover states to the ui-buttons\n", " $( \".ui-button\" ).hover(\n", " function() { $(this).addClass(\"ui-state-hover\");},\n", " function() { $(this).removeClass(\"ui-state-hover\");}\n", " );\n", "\n", " var status_bar = $('<span class=\"mpl-message\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "}\n", "\n", "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", "}\n", "\n", "mpl.figure.prototype.send_message = function(type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "}\n", "\n", "mpl.figure.prototype.send_draw_message = function() {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", " }\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1]);\n", " fig.send_message(\"refresh\", {});\n", " };\n", "}\n", "\n", "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", " var x0 = msg['x0'] / mpl.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", " var x1 = msg['x1'] / mpl.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0, 0, fig.canvas.width, fig.canvas.height);\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "}\n", "\n", "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "}\n", "\n", "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", " var cursor = msg['cursor'];\n", " switch(cursor)\n", " {\n", " case 0:\n", " cursor = 'pointer';\n", " break;\n", " case 1:\n", " cursor = 'default';\n", " break;\n", " case 2:\n", " cursor = 'crosshair';\n", " break;\n", " case 3:\n", " cursor = 'move';\n", " break;\n", " }\n", " fig.rubberband_canvas.style.cursor = cursor;\n", "}\n", "\n", "mpl.figure.prototype.handle_message = function(fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "}\n", "\n", "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "}\n", "\n", "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Called whenever the canvas gets updated.\n", " this.send_message(\"ack\", {});\n", "}\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function(fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " evt.data.type = \"image/png\";\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src);\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " evt.data);\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig[\"handle_\" + msg_type];\n", " } catch (e) {\n", " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", " }\n", " }\n", " };\n", "}\n", "\n", "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function(e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e)\n", " e = window.event;\n", " if (e.target)\n", " targ = e.target;\n", " else if (e.srcElement)\n", " targ = e.srcElement;\n", " if (targ.nodeType == 3) // defeat Safari bug\n", " targ = targ.parentNode;\n", "\n", " // jQuery normalizes the pageX and pageY\n", " // pageX,Y are the mouse positions relative to the document\n", " // offset() returns the position of the element relative to the document\n", " var x = e.pageX - $(targ).offset().left;\n", " var y = e.pageY - $(targ).offset().top;\n", "\n", " return {\"x\": x, \"y\": y};\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * http://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys (original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object')\n", " obj[key] = original[key]\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function(event, name) {\n", " var canvas_pos = mpl.findpos(event)\n", "\n", " if (name === 'button_press')\n", " {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * mpl.ratio;\n", " var y = canvas_pos.y * mpl.ratio;\n", "\n", " this.send_message(name, {x: x, y: y, button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event)});\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " // Handle any extra behaviour associated with a key event\n", "}\n", "\n", "mpl.figure.prototype.key_event = function(event, name) {\n", "\n", " // Prevent repeat events\n", " if (name == 'key_press')\n", " {\n", " if (event.which === this._key)\n", " return;\n", " else\n", " this._key = event.which;\n", " }\n", " if (name == 'key_release')\n", " this._key = null;\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.which != 17)\n", " value += \"ctrl+\";\n", " if (event.altKey && event.which != 18)\n", " value += \"alt+\";\n", " if (event.shiftKey && event.which != 16)\n", " value += \"shift+\";\n", "\n", " value += 'k';\n", " value += event.which.toString();\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, {key: value,\n", " guiEvent: simpleKeys(event)});\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", " if (name == 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message(\"toolbar_button\", {name: name});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.close = function() {\n", " comm.close()\n", " };\n", " ws.send = function(m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function(msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " // Pass the mpl event to the overriden (by mpl) onmessage function.\n", " ws.onmessage(msg['content']['data'])\n", " });\n", " return ws;\n", "}\n", "\n", "mpl.mpl_figure_comm = function(comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = $(\"#\" + id);\n", " var ws_proxy = comm_websocket_adapter(comm)\n", "\n", " function ondownload(figure, format) {\n", " window.open(figure.imageObj.src);\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy,\n", " ondownload,\n", " element.get(0));\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element.get(0);\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error(\"Failed to find cell for figure\", id, fig);\n", " return;\n", " }\n", "\n", " var output_index = fig.cell_info[2]\n", " var cell = fig.cell_info[0];\n", "\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function(fig, msg) {\n", " var width = fig.canvas.width/mpl.ratio\n", " fig.root.unbind('remove')\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable()\n", " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", " fig.close_ws(fig, msg);\n", "}\n", "\n", "mpl.figure.prototype.close_ws = function(fig, msg){\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "}\n", "\n", "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width/mpl.ratio\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message(\"ack\", {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () { fig.push_to_output() }, 1000);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\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) { continue; };\n", "\n", " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></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 = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></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", " // select the cell after this one\n", " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", " IPython.notebook.select(index + 1);\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<ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code'){\n", " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 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": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,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BATS0tJUoUIF1a5dW+np6SVwBZwSAQQQQAABBCIVIIBEKlX4fgQQe0OXFcIGEBM+1qxZ44UP84MrP7C65C+ZWqZNTZA0IaRhw4a0ack0A2dFAAEEEEAgIgECSERMRe5EALE3dFkhbABZv369tm3bpszMTNWpU0dlytCELhugJGrl5ubql19+0datW1W9enXVq1evJC6DcyKAAAIIIIBABAIEkAiQwuzCT6/2hi4rhA0gq1atUlZWlpo2bUr4cClfwrVMCPn2229VtmxZNW7cuISvhtMjgAACCCCAQGECBBD7Z4MAYm/oskLYAPL9999752vSpInL81IrAQRo2wRoBC4BAQQQQACBMAIEEPtHhABib+iyAgHEpWYpq0UAKWUNxuUigAACCKSkAAHEvtkJIPaGLisQQFxqlrJaBJBS1mBcLgIIIIBASgoQQOybnQBib+iyAgHEpWYpq0UAKWUNxuUigAACCKSkAAHEvtkJIPaGLisQQMJoDho0SM8//7w3ED8jI8OlfYnXIoCUeBNwAQgggAACCIQVIICEJQq7AwEkLFFcdyCA+LjNf9xvvPGGTOBo1KhRoBEIIHF9HjkZAggggAACCIQIEEDsHwkCiL2hywoEEJ/mM888o6FDh2r+/Pnq0qULAcTlU0YtBBBAAAEEEIhZgAASM13gQAKIvaHLCgSQUhpAdu3apUqVKlk9C7yCZcXHwQgggAACKSiwfU+Wxr6+XIvXblW7Bpka262lqlUoW6wSBBB7XgKIvaHLCgQQSWPHjtW4cePyuT777LN6//33vTEgZuXw0aNHa86cOcrOztbZZ5+tJ554QjVr1gw6bs2aNV6t//u//9OmTZtUv3599evXT7fccovKly8ftO+7776rO+64QwsXLvS+3qFDB2+/U089NWg/s/p8//79vX9uvfVWffXVV7r88su1bt06vfPOO961VaxYMeiY+++/X9ddd52++OILr25BGwHE5X9K1EIAAQQQSAWBa6cv1qxF6wK32v3Y+nqwT7tivXUCiD0vAcTe0GUFAoikpUuX6tFHH9XkyZN144036phjjvGMO3furNtuu80LIOaHeDM2xISDb775RhMnTlTfvn314osvBtrDrBrfqVMnb3XxSy+9VPXq1dPnn38uE2TOPPNMzZ07N7Ca/MyZM9W7d28dddRRGjx4sFdjypQpMjXMZ926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\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = oct_slice.plot(x='SWsp_70m_mean', y='Wsp_70m_mean', kind='scatter', s=3, label='data')\n", "ax.plot([2, 7],[2, 7], 'k--', label='theory')\n", "ax.legend(); # suppress jupyter output with ';'" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.1" } }, "nbformat": 4, "nbformat_minor": 2 }