Skip to content

Interactive plots in IPython notebooks #50

Open

Description

@cwrowley

I find IPython notebooks a great way to work interactively, and it would be nice if inline plots could be interactive (e.g., letting you zoom, or having tool tips show more information). With matplotlib, though, inline plots are just images, so they cannot be interactive.

There's a new plotting library called Bokeh, an open-source project led by Continuum Analytics (the wonderful folks that make Anaconda), that looks really nice for making interactive plots like this. I'd like to try making an alternate backend one could specify with, say, control.set_backend("bokeh") that would make commands like bode() and nyquist() generate plots using Bokeh. The default could still be matplotlib, of course.

Any thoughts or suggestions for other libraries that might be useful for making interactive plots?

Activity

  1. self-assigned this
    on Mar 20, 2015
  2. slivingston commented on Mar 20, 2015

    @slivingston
    Member

    Outside of IPython notebooks, you can zoom-in, pan, etc. in Matplotlib plots. I just shared a link via issue #49 to matplotlib.backend_bases.MouseEvent for responding to clicks on points in these plots.

    Perhaps there can be two major interactive use-cases: with and without IPython. The former case could be treated with Bokeh, and the latter case with Matplotlib and various GUI hooks that we create.

  3. blinkminster commented on Mar 21, 2015

    @blinkminster

    Clancy,

    I use the following code in my ipython notebooks and it makes the plots
    interactive (zooming, panning work; this is in the standard Anaconda
    distribution on OSX 10.10):

    import matplotlib as mlt
    mlt.use('nbagg') # makes plots interactive for zooming.

    I haven't tested it with python-control yet but I don't see why there would
    be a problem.

    • Sawyer

    Sawyer B. Fuller, Ph.D.
    Harvard School of Engineering and Applied Science
    Wyss Institute for Biologically Inspired Engineering
    http://people.seas.harvard.edu/~minster/

    On Fri, Mar 20, 2015 at 1:55 PM, Clancy Rowley notifications@github.com
    wrote:

    I find IPython notebooks a great way to work interactively, and it would
    be nice if inline plots could be interactive (e.g., letting you zoom, or
    having tool tips show more information). With matplotlib, though, inline
    plots are just images, so they cannot be interactive.

    There's a new plotting library called Bokeh http://bokeh.pydata.org, an
    open-source project led by Continuum Analytics (the wonderful folks that
    make Anaconda http://continuum.io/downloads), that looks really nice
    for making interactive plots like this. I'd like to try making an alternate
    backend one could specify with, say, control.set_backend("bokeh") that
    would make commands like bode() and nyquist() generate plots using Bokeh.
    The default could still be matplotlib, of course.

    Any thoughts or suggestions for other libraries that might be useful for
    making interactive plots?

    Reply to this email directly or view it on GitHub
    #50.

  4. cwrowley commented on Mar 21, 2015

    @cwrowley
    ContributorAuthor

    @blinkminster, that is pretty slick! I never new about nbagg. (Incidentally, this also apparently works with the IPython magic %matplotlib nbagg.) I still might give the Bokeh library a try, but this is great to know about.

  5. ilayn commented on Jan 2, 2017

    @ilayn

    I am also wondering about this issue for my library and I have been also trying to find a good basis for this issue. So far I've been experimenting with Bokeh. Things are still wonky as an experiment but I just wanted to also get your opinion about the following prototype

    http://nbviewer.jupyter.org/gist/ilayn/f8cf8b0a68c6839dbcc346884511e2ed

    There are some issues of course since I'm still learning JS magic but I guess it might serve as a basis. Though I don't follow the same structure as python-control the data will come from somewhere anyway for frequency responses. Hence, from the point on where one has the complex number array this can be used independently. Maybe python-control devs can use this and put more momentum to this kind of development?

  6. removed their assignment
    on Jan 1, 2018
  7. murrayrm commented on Dec 28, 2018

    @murrayrm
    Member

    See PR #204 and #209 for some initial implementations of this type of functionality.

  8. lucasbellinaso commented on Jan 13, 2021

    @lucasbellinaso

    Hello,
    I teach control systems. I recently created an interactive interface with Bokeh for using in Google Colab similar to Sisotool (Matlab): https://github.com/lucasbellinaso/PythonSisoDesignApp
    Still needs improvement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions