与google colaboratory的Plotly笔记本模式

elz*_*elz 25 plotly google-colaboratory

我正在尝试使用情节笔记本模式进行实验 - 我打开一个新笔记本,从plotly的文档中复制并粘贴以下简单示例,但是看不到输出.输出空间中有一个大的空白,通常情节.

这在我的本地笔记本(这是一个较新版本的情节,但根据他们的文档离线模式应该与谷歌colab版本工作)工作正常任何想法?

import plotly
from plotly.graph_objs import Scatter, Layout

plotly.offline.init_notebook_mode(connected=True)

plotly.offline.iplot({
    "data": [Scatter(x=[1, 2, 3, 4], y=[4, 3, 2, 1])],
    "layout": Layout(title="hello world")
})
Run Code Online (Sandbox Code Playgroud)

Bob*_*ith 35

这是一个显示在Colab中使用Plotly的例子.(Plotly需要自定义初始化.)

https://colab.research.google.com/notebook#fileId=14oudHx5e5r7hm1QcbZ24FVHXgVPD0k8f

您需要定义此功能:

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

并在每个离线绘图单元格中调用它:

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-latest.min.js?noext',
            },
          });
        </script>
        '''))
Run Code Online (Sandbox Code Playgroud)

  • 即使版本 4.6.0,`plotly` 也不适合我,所以我不得不求助于 Pratik Parmar 的 [answer](/sf/answers/3834016581/) (3认同)

Rem*_*oon 27

简单地传递"colab"作为参数的值rendererfig.show(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")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Mar*_*sov 19

您需要更改默认渲染。这是文档的摘录。 https://plot.ly/python/renderers/#setting-the-default-renderer

当前和可用的渲染器使用plotly.io.renderers配置对象进行 配置。显示此对象以查看当前默认渲染器和所有可用渲染器的列表。

>>>import plotly.io as pio
>>>pio.renderers


Renderers configuration
    -----------------------
        Default renderer: 'notebook_connected'
        Available renderers:
            ['plotly_mimetype', 'jupyterlab', 'nteract', 'vscode',
             'notebook', 'notebook_connected', 'kaggle', 'azure', 'colab',
             'cocalc', 'databricks', 'json', 'png', 'jpeg', 'jpg', 'svg',
             'pdf', 'browser', 'firefox', 'chrome', 'chromium', 'iframe',
             'iframe_connected', 'sphinx_gallery']
Run Code Online (Sandbox Code Playgroud)

因此,问题的解决方案是指定默认渲染“colab”。

import plotly.io as pio
pio.renderers.default = 'colab'
Run Code Online (Sandbox Code Playgroud)


小智 10

configure_plotly_browser_state() 可以通过使用IPython的pre_run_cell挂钩在运行每个单元之前执行:

import IPython

IPython.get_ipython().events.register('pre_run_cell', configure_plotly_browser_state)
Run Code Online (Sandbox Code Playgroud)

Run Code Online (Sandbox Code Playgroud)

  • 我得到这个:&gt; Traceback(最近一次呼叫过去)&lt;module&gt;()中的&lt;ipython-input-19-ac1874a09e95&gt; 1 import IPython ----&gt; 2 IPython.get_ipython()。events.unregister('pre_run_cell', configure_plotly_browser_state)/usr/local/lib/python3.6/dist-packages/IPython/core/events.py in unregister(self,event,function)62 def unregister(self,event,function):63“”“删除一个给定事件的回调。“”“-&gt; 64 self.callbacks [event] .remove(function)65 66 def trigger(self,event,* args,** kwargs):ValueError:list.remove(x) :x不在列表中 (2认同)

小智 6

您需要添加一种方法才能在Colab中使用Plotly。

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

必须为每个显示绘图图的单元格执行此方法。

样品:

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

enable_plotly_in_cell()

data = [
    go.Contour(
        z=[[10, 10.625, 12.5, 15.625, 20],
           [5.625, 6.25, 8.125, 11.25, 15.625],
           [2.5, 3.125, 5., 8.125, 12.5],
           [0.625, 1.25, 3.125, 6.25, 10.625],
           [0, 0.625, 2.5, 5.625, 10]]
    )
]
iplot(data)
Run Code Online (Sandbox Code Playgroud)

参考:https : //colab.research.google.com/notebooks/charts.ipynb#scrollTo=WWbPMtDkO4xg

  • 这太棒了。尝试了所有其他解决方案后,这是唯一有效的解决方案。干得好,感谢您找到并发布它。 (2认同)