Google Colab中的交互式matplotlib图形

sko*_*oeb 16 python matplotlib google-colaboratory

通常,在Jupyter笔记本中,我会使用%matplotlib notebook魔术来显示交互式窗口,但这似乎不适用于google colab。有解决方案,还是无法在Google colab中显示交互式窗口?

Nil*_*gle 13

下面是iplot()在 Plotly 和cufflinks()Google Colab Notebook 上创建交互的示例。来自答案的使用功能和建议[1 , 2]

关键似乎是包含configure_plotly_browser_state()在进行绘图的单元格中。

下面的代码应该工作:

导入库

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()
Run Code Online (Sandbox Code Playgroud)

将笔记本设置为 false

init_notebook_mode(connected=False)
Run Code Online (Sandbox Code Playgroud)

为 Colab 创建函数 复制自:[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>
        '''))
Run Code Online (Sandbox Code Playgroud)

创建示例数据框

数据来源:国家气象局提供的佐治亚州桃树市的年降雨量数据[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
Run Code Online (Sandbox Code Playgroud)

创建交互式 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()
Run Code Online (Sandbox Code Playgroud)

输出: 在此处输入图片说明

在此处输入图片说明

[注意:x, y, 标题不显示!在这一刻。]

  • 我很沮丧必须使用plotly而不是matplotlib,但这或多或少实现了所需的功能,所以我会接受! (2认同)

Mar*_*arc 9

面对同样的问题(经过大量阅读),我无法%matplotlib ipympl/widget与 Colab 合作。然而,下一个最佳解决方案确实是使用 Plotly,正如 @Nilesh Ingle 在他的详细回复中概述的那样。

然而,有一种更简单的方法可以在 Colab 中启动并运行 Plotly。

请参阅此共享 Colab 笔记本以获取最小示例。

Python 代码也复制如下以供快速参考:

!pip install plotly

import plotly.express as px

SHEET_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()
Run Code Online (Sandbox Code Playgroud)


小智 6

这似乎是一个后端问题。在 jupyter 笔记本中,列出不同类型后端的命令是:

%matplotlib --list
Run Code Online (Sandbox Code Playgroud)

输出:

Available matplotlib backends: ['tk', 'gtk', 'gtk3', 'wx', 'qt4', 'qt5', 'qt', 'osx', 'nbagg', 'notebook', 'agg', 'svg', 'pdf', 'ps', 'inline', 'ipympl', 'widget']
Run Code Online (Sandbox Code Playgroud)

但是,对于我的系统/设置,只有“笔记本”和其他一个可以工作。在 jupyter 实验室中,对我来说,没有一个后端适用于交互式图表(甚至是他们推荐的“内联”)。

希望它能减少我所经历的搜索和安装/重新安装排列的时间:))