Discussion:
[Matplotlib-users] how to create interactive plots in jupyter python3 notebook?
Andy Davidson
2016-02-27 03:04:18 UTC
Permalink
Hi
I currently have a plot that gets update in a loop with data from a
remote system. It works and looks great. (matplotlib rocks!) I currently
use
%matplotlib inline
Now I need to make the graph interactive. By interactive I mean I would
like the user to be able to
1. move the mouse to get info about that point in the graph
2. Click on a point on the graph to do some sort of drill down. I¹ll
probably need to fetch additional data, to display. The data might be
text or some sort of table to display
3. Scroll the graph along it¹s x and y axis
4. Add a couple of widgets that let users select parameters of the graph
or underlying data set
Googling around I found people mention several choices
1) Œ%matplotlib notebook¹ and the nbagg backend, how ever I have not been
able to find any documentation or code tutorials, or examples
2) Plot.ly https://plot.ly/python/ipython-notebook-tutorial/
3) Python widgets for the Jupiter Notebook
https://github.com/ipython/ipywidgets
Any comments or suggestions would be appreciated.
Kind regards
Andy
Jens Nielsen
2016-02-27 08:45:53 UTC
Permalink
Hi Andy

Please just try replacing %matplotlib inline with %matplitlib notebook
which should give you a complete interactive backend in the notebook.
It's by no means as nicely documented as it should be, but I use it on a
regular basis with matplotlib 1.5.1 and don't have any major issues. If you
see any issues
please report them here or on the github bug tracker.

You can use the IPython widgets together with the notebook backend with the
caveat that the interactive slider has to be defined in a new cell
following the figure due to a bug see
https://gist.github.com/jenshnielsen/20d9bf3fa40b309ad865 for an example

Hope this is useful
Jens
Hi
I currently have a plot that gets update in a loop with data from a
remote system. It works and looks great. (matplotlib rocks!) I currently
use
%matplotlib inline
Now I need to make the graph interactive. By interactive I mean I would
like the user to be able to
1. move the mouse to get info about that point in the graph
2. Click on a point on the graph to do some sort of drill down. I¹ll
probably need to fetch additional data, to display. The data might be
text or some sort of table to display
3. Scroll the graph along it¹s x and y axis
4. Add a couple of widgets that let users select parameters of the graph
or underlying data set
Googling around I found people mention several choices
1) Œ%matplotlib notebook¹ and the nbagg backend, how ever I have not been
able to find any documentation or code tutorials, or examples
2) Plot.ly https://plot.ly/python/ipython-notebook-tutorial/
3) Python widgets for the Jupiter Notebook
https://github.com/ipython/ipywidgets
Any comments or suggestions would be appreciated.
Kind regards
Andy
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Andy Davidson
2016-02-27 19:18:22 UTC
Permalink
Hi Jens

Thanks. %matplitlib notebook looks great!. As I move the mouse around I see
values for x, and y . Any idea how I can get programmatic access to the
mouse events? I.E. When a user clicks I need to fetch some additional info.

I am sure there are many other things I’ll eventually want to do. For
example I have several different lines on the same graph. I want to make it
easy for the user to select values on a give line not just some random spot

Are there any other code examples or documentation?

Kind Regards

Andy


From: Jens Nielsen <***@gmail.com>
Date: Saturday, February 27, 2016 at 12:45 AM
To: Andrew Davidson <***@SantaCruzIntegration.com>,
<matplotlib-***@lists.sourceforge.net>
Subject: Re: [Matplotlib-users] how to create interactive plots in jupyter
python3 notebook?
Post by Jens Nielsen
Hi Andy
Please just try replacing %matplotlib inline with %matplitlib notebook which
should give you a complete interactive backend in the notebook.
It's by no means as nicely documented as it should be, but I use it on a
regular basis with matplotlib 1.5.1 and don't have any major issues. If you
see any issues
please report them here or on the github bug tracker.
You can use the IPython widgets together with the notebook backend with the
caveat that the interactive slider has to be defined in a new cell following
the figure due to a bug see
https://gist.github.com/jenshnielsen/20d9bf3fa40b309ad865 for an example
Hope this is useful
Jens
Hi
I currently have a plot that gets update in a loop with data from a
remote system. It works and looks great. (matplotlib rocks!) I currently
use
%matplotlib inline
Now I need to make the graph interactive. By interactive I mean I would
like the user to be able to
1. move the mouse to get info about that point in the graph
2. Click on a point on the graph to do some sort of drill down. I¹ll
probably need to fetch additional data, to display. The data might be
text or some sort of table to display
3. Scroll the graph along it¹s x and y axis
4. Add a couple of widgets that let users select parameters of the graph
or underlying data set
Googling around I found people mention several choices
1) Œ%matplotlib notebook¹ and the nbagg backend, how ever I have not been
able to find any documentation or code tutorials, or examples
2) Plot.ly https://plot.ly/python/ipython-notebook-tutorial/
3) Python widgets for the Jupiter Notebook
https://github.com/ipython/ipywidgets
Any comments or suggestions would be appreciated.
Kind regards
Andy
----------------------------------------------------------------------------->>
-
Post by Jens Nielsen
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Fernando Perez
2016-02-29 06:52:35 UTC
Permalink
On Sat, Feb 27, 2016 at 1:18 PM, Andy Davidson <
Post by Andy Davidson
Thanks. %matplitlib notebook looks great!. As I move the mouse around I
see values for x, and y . Any idea how I can get programmatic access to the
mouse events? I.E. When a user clicks I need to fetch some additional info.
I am sure there are many other things I’ll eventually want to do. For
example I have several different lines on the same graph. I want to make it
easy for the user to select values on a give line not just some random spot
Are there any other code examples or documentation?
Unfortunately it doesn't work perfectly yet, see:

https://github.com/jupyter/notebook/issues/244
https://github.com/matplotlib/matplotlib/issues/4582

But the following code can be used as a workaround, using an IPython widget
to display the event data:

```
%pylab notebook
import ipywidgets as widgets

fig, ax = plt.subplots()
ax.plot(np.random.rand(10))

w = widgets.HTML()

def onclick(event):
w.value = 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f'%(
event.button, event.x, event.y, event.xdata, event.ydata)

cid = fig.canvas.mpl_connect('button_press_event', onclick)
display(w)
```

Note, however, that at least for me, the interactive figures in the
notebook are getting auto-closed for reasons I don't understand:
https://github.com/matplotlib/matplotlib/issues/6075.

Cheers,
--
Fernando Perez (@fperez_org; http://fperez.org)
fperez.net-at-gmail: mailing lists only (I ignore this when swamped!)
fernando.perez-at-berkeley: contact me here for any direct mail
Bilheux, Jean-Christophe
2016-02-29 13:52:40 UTC
Permalink
Hi all,

Just to let you know I found this conversation and tips very useful
 I just wish there was a nice complete tutorial somewhere (web, book) about everything there is to know about jupyter, widgets
.etc. I started a github repo myself where I try to gather tips here and there (like today in those emails) into one place.
There isn’t too much yet (https://github.com/ornlpython/ipython_notebook_101) and also I should renamed it “jupyter_notebook_101” but it’s a start. If that can help somebody else !

Jean


On Feb 29, 2016, at 1:52 AM, Fernando Perez <***@gmail.com<mailto:***@gmail.com>> wrote:

On Sat, Feb 27, 2016 at 1:18 PM, Andy Davidson <***@santacruzintegration.com<mailto:***@santacruzintegration.com>> wrote:
Thanks. %matplitlib notebook looks great!. As I move the mouse around I see values for x, and y . Any idea how I can get programmatic access to the mouse events? I.E. When a user clicks I need to fetch some additional info.

I am sure there are many other things I’ll eventually want to do. For example I have several different lines on the same graph. I want to make it easy for the user to select values on a give line not just some random spot

Are there any other code examples or documentation?

Unfortunately it doesn't work perfectly yet, see:

https://github.com/jupyter/notebook/issues/244
https://github.com/matplotlib/matplotlib/issues/4582

But the following code can be used as a workaround, using an IPython widget to display the event data:

```
%pylab notebook
import ipywidgets as widgets

fig, ax = plt.subplots()
ax.plot(np.random.rand(10))

w = widgets.HTML()

def onclick(event):
w.value = 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f'%(
event.button, event.x, event.y, event.xdata, event.ydata)

cid = fig.canvas.mpl_connect('button_press_event', onclick)
display(w)
```

Note, however, that at least for me, the interactive figures in the notebook are getting auto-closed for reasons I don't understand: https://github.com/matplotlib/matplotlib/issues/6075.

Cheers,
--
Fernando Perez (@fperez_org; http://fperez.org<http://fperez.org/>)
fperez.net<http://fperez.net>-at-gmail: mailing lists only (I ignore this when swamped!)
fernando.perez-at-berkeley: contact me here for any direct mail
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140_______________________________________________
Matplotlib-users mailing list
Matplotlib-***@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Loading...