web-dev-qa-db-fra.com

Chiffres interactifs de matplotlib dans Google Colab

Normalement, dans un cahier jupyter, j'utiliserais %matplotlib notebook magic pour afficher une fenêtre interactive, mais cela ne semble pas fonctionner avec google colab. Existe-t-il une solution ou n'est-il pas possible d'afficher des fenêtres interactives dans google colab?

13
skoeb

Voici un exemple de création interactive de iplot() dans Plotly et cufflinks() sur Google Colab Notebook. Fonctions utilisées et suggestions de la réponse [1 , 2]

La clé semble être d'inclure configure_plotly_browser_state() dans la cellule qui fait le tracé.

Le code ci-dessous devrait fonctionner:

Importer des bibliothèques

import datetime
from datetime import date
import pandas as pd
import numpy as np
from plotly import __version__
%matplotlib inline

import plotly.offline as pyo
import plotly.graph_objs as go
from plotly.offline import iplot

import cufflinks as cf
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot 


cf.go_offline()

Définir le bloc-notes sur faux

init_notebook_mode(connected=False)

Créer une fonction pour Colab copiée de: [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>
        '''))

Créer un exemple de trame de données

Source de données: données annuelles sur les précipitations pour la ville de Peachtree, GA du 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

Créez un iplot interactif

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()

Sortie: enter image description here

enter image description here

[Remarque: les titres x, y, ne s'affichent pas! en ce moment.]

3
Nilesh Ingle

Cela semble être un problème de backend. Dans les cahiers jupyter, la commande pour lister les différents types de backends est:

%matplotlib --list

Sortie:

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

Cependant, pour mon système/configuration, seul 'notebook' et un autre fonctionnent. Dans les laboratoires jupyter, pour moi, aucun des backends ne fonctionne pour les graphiques interactifs (même le "inline" qui est ce qu'ils recommandent).

J'espère que cela réduit les heures de recherches et de permutations d'installation/réinstallation que j'ai effectuées :))

1
BigH