【问题标题】:Plotly chart is not displayed in PyCharmPlotly 图表不显示在 PyCharm 中
【发布时间】:2018-10-19 08:57:39
【问题描述】:

如何在 Pycharm 中显示交互式绘图?我运行以下代码:

import plotly.offline as py
import plotly.graph_objs as go

py.init_notebook_mode(connected=True)

data = [go.Bar(
    x=['giraffes', 'orangutans', 'monkeys'],
    y=[20, 14, 23]
)]

py.iplot(data, filename="barplot")

PyCharm 中的结果是一个空白字段:

在 Jupyter Notebook 中,此代码会给出一个(正确的)交互式图表作为结果。

更新: Embed Plotly HTML in PyCharm IDE 的答案对我不起作用。当我使用plot() 函数(而不是iplot())时,它将图表导出到单独的文件中并在新窗口中打开浏览器。 notebook 中的输出是生成图表的文件名。我想将图表包含到笔记本中并以交互方式使用它,就像在 Jupyter Notebook 中一样。这些答案只是关于将图表导出到单独的 html 文件中。

【问题讨论】:

  • @MaximilianPeters 这个问题是不同的——我不想将图表导出到单独的文件中,我想将它包含到笔记本中并以交互方式使用它,就像在 Jupyter Notebook 中一样。这个问题(和答案)是关于将图表导出到单独的 html 文件中。
  • 我想这个问题在这里讨论:youtrack.jetbrains.com/issue/PY-14534
  • Issue PY-1453 是关于交互式小部件的,这就是 plotly 创建交互式图表的方式吗? PyCharm 中缺乏对这些小部件的支持是否是无法在 PyCharm SciView 中显示的原因?我想要在 PyCharm SciView 中解决问题的答案,而不仅仅是笔记本。
  • @vestland 我记得那是 2018.1

标签: python pycharm plotly


【解决方案1】:

jayBana 的回答是正确的,但是如果您想在 PyCharm 中继续使用 .py 脚本,您可以简单地将默认渲染器设置为“浏览器”以获取交互式绘图:

import plotly.io as pio
pio.renderers.default = "browser"

如此处所述:https://plot.ly/python/renderers/

【讨论】:

  • 这是很好的建议! Plotly 比使用普通的 Python 文件工作。
【解决方案2】:

借助最近发布的 Plotly 4.0 主要版本,以下步骤适用于我在 macOS Mojave 上使用 PyCharm 中的 iPython 笔记本的 PyCharm 2019.2。

我相信这应该适用于其他操作系统以及支持 Jupyter 笔记本的其他最新版本的 PyCharm。

我正在使用conda 进行包和环境管理,但这应该也适用于其他工具,例如pip 或 pipenv(假设 orca 是独立安装的)

这是我的步骤:

创建并激活 conda 环境:

  • $ conda create -n pycharm-plotly python
  • $ conda activate pycharm-plotly

按照plotly.py's GitHub README for Jupyter Notebook Support 安装 Plotly 4.0 及其依赖项

  • $ conda install -c plotly plotly==4.0.0
  • $ conda install "notebook>=5.3" "ipywidgets>=7.5"

此外,我发现此功能需要“Plotly Orca”:

  • $ conda install -c plotly plotly-orca psutil requests

请注意,以上内容适用于 PyCharm 中的“配置服务器”和“托管服务器”,使用以下示例代码获取 .ipynb 文件扩展名:

#%%
import plotly.graph_objects as go
import plotly.io as pio

pio.renderers.default = 'png'

fig = go.Figure(
    data=[go.Bar(y=[2, 1, 3])],
    layout_title_text="A Figure Displayed with fig.show()"
)
fig.show();

附加说明:

  • 我认为 Plotly 的绘图渲染在 PyCharm 的科学模式下无法处理“普通”Python 文件,就像在 Matplotlib 或 Seaborn 中一样。

【讨论】:

    【解决方案3】:

    如果您只是想轻松地显示该图,这里是我仅针对特定图向浏览器显示的方式。

    import numpy as np
    import plotly.express as px
    
    # Plot histogram based on rolling 2 dice
    dice_1 = np.random.randint(1,7,5000)
    dice_2 = np.random.randint(1,7,5000)
    dice_sum = dice_1 + dice_2
    # bins represent the number of bars to make
    fig = px.histogram(dice_sum, nbins=11, labels={'value':'Dice Roll'},
                 title='5000 Dice Roll Histogram', marginal='violin',
                color_discrete_sequence=['green'])
    
    fig.show(renderer="browser")
    

    注意 renderer="browser" 你当然可以将其更改为其他输出。这是他们的名单docs

    【讨论】:

    • 这对我不起作用,我收到“无法访问此站点,拒绝连接”
    【解决方案4】:

    我希望有人能证明我错了,但你想要完成的事情实际上目前似乎不可能。我希望您的问题可能仅限于 PyCharm 的社区版本。 PyCharm 的Scientific 模式据称具有

    [...] 一组出色的功能 [...]

    所以,我很确定升级到 Professional Edition Version 2019.1.2 将提供一个不缺少 任何 形式的 Jupyter Notebook 支持的版本。唉,看来我错了。我尝试了各种其他的情节方法,但没有发现可以启动交互式情节人物。

    尽我所能提供的任何证据:

    版本确认:


    以下是使用您的 sn-p 从不在 PyCharm 中的 Jupyter Notebook 进行的测试:

    剧情:


    此外,正如 cmets 中所建议的,在 plotly.offline.plot(plot(data), filename='file.html') 中将 iplot 替换为 plot 打开一个网络浏览器并显示您的绘图。

    【讨论】:

    • 如果可以的话,正确的语法是py.plot(data, filename='file.html')(与@wind 代码内联)或plotly.offline.plot(data, filename='file.html')import plotly 首先。否则你会得到错误TypeError: plot() missing 1 required positional argument: 'figure_or_data'
    【解决方案5】:

    plotly 第 4 版开始,您只需在任何 go.Figure 上调用 .show()

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

    【讨论】:

    • 这不起作用,至少没有任何进一步的安装
    猜你喜欢
    • 2014-09-29
    • 1970-01-01
    • 2018-10-01
    • 2016-05-20
    • 1970-01-01
    • 2023-03-30
    • 2019-06-25
    • 2022-07-30
    • 1970-01-01
    相关资源
    最近更新 更多