Interactive matplotlib figures in Google Colab Interactive matplotlib figures in Google Colab python python

Interactive matplotlib figures in Google Colab


Below is an example of creating interactive iplot() in Plotly and cufflinks() on Google Colab Notebook. Used functions and suggestions from the answer [1, 2]

The key seems to be to include configure_plotly_browser_state() in the cell that does the plotting.

Code below should work:

Import libraries

import datetimefrom datetime import dateimport pandas as pdimport numpy as npfrom plotly import __version__%matplotlib inlineimport plotly.offline as pyoimport plotly.graph_objs as gofrom plotly.offline import iplotimport cufflinks as cffrom plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot cf.go_offline()

Set notebook to false

init_notebook_mode(connected=False)

Create function for Colabcopied from: [1, 2]

def configure_plotly_browser_state():  import IPython  display(IPython.core.display.HTML('''        <script src="/static/components/requirejs/require.js"></script>        <script>          requirejs.config({            paths: {              base: '/static/base',              plotly: 'https://cdn.plot.ly/plotly-1.5.1.min.js?noext',            },          });        </script>        '''))

Create sample dataframe

Data source: Annual rainfuall data for the Peachtree City, GA from National Weather Service [3].

df = pd.DataFrame({    'month': ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],    'Year_2018': [3.26, 6.11, 4.86, 6.53, 4.45, 3.86, 8.04, 7.59, 1.48, 4.75, 7.27, 11.83],    'Year_1996': [8.26, 3.82, 6.42, 2.91, 2.12, 1.70, 2.14, 4.66, 4.32, 0.89, 3.22, 4.14]})df

Create an interactive iplot

configure_plotly_browser_state()df.iplot(kind='line',x='month',y=['Year_2018', 'Year_1996'], color=['white', 'gold'], theme='solar', mode='markers+lines',title='Annual Rainfall in the city Peachtree City, GA')plt.show()

Output:enter image description here

enter image description here

[Note: The x, y, titles do not show up! at the moment.]


This seems to be a backend issue. In jupyter notebooks, the command to list the different types of backends is:

%matplotlib --list

Output:

Available matplotlib backends: ['tk', 'gtk', 'gtk3', 'wx', 'qt4', 'qt5', 'qt', 'osx', 'nbagg', 'notebook', 'agg', 'svg', 'pdf', 'ps', 'inline', 'ipympl', 'widget']

However, for my system/setup, only 'notebook' and one other works. In jupyter labs, for me, none of the backends work for interactive graphs (even the 'inline' which is what they recommend).

Hope it reduces the hours of searches and permutations of install/re-installs that I went through :))


Facing the same issue (and after a lot of reading), I could not get %matplotlib ipympl/widget magic to work with Colab. However the next best solution is indeed to use Plotly, as outlined by @Nilesh Ingle in his detailed reply.

There is however a much simpler way to get Plotly up-and-running in Colab.

Please see this shared Colab notebook for a minimum example.

Python code also copied below for quick reference:

!pip install plotlyimport plotly.express as pxSHEET_ID = '153pKW5IZRHwx9mLu_uU-hDSK0D3R19vR71EcgMYHn3I'df = pd.read_csv('https://docs.google.com/spreadsheets/d/' + SHEET_ID + '/export?format=csv')fig = px.scatter(data_frame=df, x="x", y="y", width=1000, height=800)fig.show()