【问题标题】:How to display plotly outputs in google collaboratory notebooks?如何在谷歌合作笔记本中显示输出?
【发布时间】:2019-05-30 10:28:49
【问题描述】:

我整天搜索如何在 google colaboratory jupyter notebooks 中显示绘图的输出。 google colaboratory 有一个 stackoverflow 问题和官方教程,但它们都对我不起作用。

官方链接:
https://colab.research.google.com/notebooks/charts.ipynb#scrollTo=hFCg8XrdO4xj

stackoverflow 问题:
Plotly notebook mode with google colaboratory
https://colab.research.google.com/drive/14oudHx5e5r7hm1QcbZ24FVHXgVPD0k8f#scrollTo=8RCjUVpi2_xd

内置 google colaboratory plotly 版本为 1.12.12。

测试情节版本

import plotly
plotly.__version__
1.12.12

加载库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

安装谷歌驱动器

from google.colab import drive
drive.mount('/content/drive')

dat_dir = 'drive/My Drive/Colab Notebooks/data/'

谷歌官方合作方法(失败)

# https://colab.research.google.com/notebooks/charts.ipynb#scrollTo=hFCg8XrdO4xj
def enable_plotly_in_cell():
  import IPython
  from plotly.offline import init_notebook_mode
  display(IPython.core.display.HTML('''
        <script src="/static/components/requirejs/require.js"></script>
  '''))
  init_notebook_mode(connected=False)

测试官方建议(失败)

import plotly.plotly as py
import numpy as np
from plotly.offline import iplot
from plotly.graph_objs import Contours, Histogram2dContour, Marker, Scatter

enable_plotly_in_cell()

x = np.random.randn(2000)
y = np.random.randn(2000)
iplot([Histogram2dContour(x=x, y=y, contours=Contours(coloring='heatmap')),
       Scatter(x=x, y=y, mode='markers', marker=Marker(color='white', size=3, opacity=0.3))], show_link=False)

Stackoverflow Bob Smith 方法

# https://stackoverflow.com/questions/47230817/plotly-notebook-mode-with-google-colaboratory
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>
        '''))

测试 Bob Smith 方法(失败)

# https://colab.research.google.com/drive/14oudHx5e5r7hm1QcbZ24FVHXgVPD0k8f#scrollTo=8RCjUVpi2_xd
import plotly.plotly as py
import numpy as np
from plotly.offline import init_notebook_mode, iplot
from plotly.graph_objs import Contours, Histogram2dContour, Marker, Scatter

configure_plotly_browser_state()

init_notebook_mode(connected=False)

x = np.random.randn(2000)
y = np.random.randn(2000)
iplot([Histogram2dContour(x=x, y=y, contours=Contours(coloring='heatmap')),
       Scatter(x=x, y=y, mode='markers', marker=Marker(color='white', size=3, opacity=0.3))], show_link=False)

问题

如何在 google colaboratory 中显示 plotly 输出?

有可能吗?如果是这样,哪个版本的 plotly 或 cufflinks 适合您?

如果无法显示,能否将输出文件保存为.html在我们的google drive中手动打开查看?

感谢您的帮助。

【问题讨论】:

  • 我测试了 Bob Smith 的笔记本,它运行良好。
  • @KorakotChaovavanich 很高兴知道,你的情节和/或袖扣版本是什么?你的意思是工作意味着显示图像还是只是工作?代码对我来说也很好,只是没有在笔记本上显示任何东西,代码没有失败,只有不显示!
  • 当我运行笔记本 colab.research.google.com/drive/… 时,它正常显示。在运行之前,您可能需要制作笔记本的副本,或“在操场上打开”。

标签: python jupyter-notebook plotly google-colaboratory


【解决方案1】:

plotly 4.x 版

从版本 4 开始,plotly 渲染器了解 Colab,因此以下内容足以在 Colab 和 Jupyter(以及 Kaggle、Azure、nteract 等其他笔记本)中显示图形:

import plotly.graph_objects as go
fig = go.Figure( go.Scatter(x=[1,2,3], y=[1,3,2] ) )
fig.show()

plotly 3.x 版

我也在努力在 Google colab 中显示绘图图,并偶然发现了这个线程,您在其中解释了网络上不同解决方案的问题。每个解决方案的感觉都是相同的。最后,当我遇到this video.时,我的搜索结束了

我遵循了他的方法(可能与您已经尝试过的方法相似),这对我有用。

  1. 按照建议通过 !pip install plotly --upgraderestart runtime 在 colab 中升级 plotly。
  2. 在重新运行笔记本之前评论升级选项
  3. 定义函数configure_plotly_browser_state()
  4. 调用 plotly 库
  5. 在您要调用 iplot 的每个单元格中调用函数和笔记本模式,如下所示

    configure_plotly_browser_state()

    init_notebook_mode(connected=False)

    iplot(XXXXXX)

只需导入 plotly 库

如果这有帮助,请告诉我:)

【讨论】:

【解决方案2】:

在笔记本的开头添加行'%matplotlib inline'

参考以下链接: https://github.com/jupyter/notebook/issues/3523

【讨论】:

    【解决方案3】:

    尝试使用renderer="colab"如下图:

    import plotly.graph_objects as go
    fig = go.Figure(
        data=[go.Bar(y=[2, 1, 3])],
        layout_title_text="A Figure Displayed with the 'colab' Renderer"
    )
    fig.show(renderer="colab")
    

    【讨论】:

      【解决方案4】:

      使用 plot 而不是 iplot ...我花了一段时间才弄明白。您可以将绘图同时写入笔记本和 gdrive。

      【讨论】:

        猜你喜欢
        • 2018-04-24
        • 1970-01-01
        • 2019-02-04
        • 1970-01-01
        • 2021-12-12
        • 1970-01-01
        • 1970-01-01
        • 2017-03-21
        相关资源
        最近更新 更多