【问题标题】:Plotly: How to display charts in Spyder?Plotly:如何在 Spyder 中显示图表?
【发布时间】:2016-05-20 20:03:30
【问题描述】:

自 2015 年 11 月以来,plotly 是开源的,可用于 python。 https://plot.ly/javascript/open-source-announcement/

当尝试离线做一些绘图时,这些在 iPython Notebook(版本 4.0.4)中工作 但如果我尝试在 Spyder(2.3.8 版)中运行它们,我只会得到以下输出:

<IPython.core.display.HTML object>
<IPython.core.display.HTML object>

我的代码有问题还是 Spyder 的 iPython 终端仍然不支持?

这里是示例代码(取自https://www.reddit.com/r/IPython/comments/3tibc8/tip_on_how_to_run_plotly_examples_in_offline_mode/

from plotly.offline import download_plotlyjs, init_notebook_mode, iplot
from plotly.graph_objs import *
init_notebook_mode()

trace0 = Scatter(
    x=[1, 2, 3, 4],
    y=[10, 11, 12, 13],
    mode='markers',
    marker=dict(
        size=[40, 60, 80, 100],
    )
)
data = [trace0]
layout = Layout(
    showlegend=False,
    height=600,
    width=600,
)

fig = dict( data=data, layout=layout )

iplot(fig)  

【问题讨论】:

    标签: python python-2.7 plotly spyder plotly-python


    【解决方案1】:

    导入 plot 而不是 iplot (并将最后一行从 iplot(fig) 更改为 plot(fig) 解决了问题,至少在 python 3 中:

    from plotly.offline import download_plotlyjs, init_notebook_mode,  plot
    from plotly.graph_objs import *
    init_notebook_mode()
    
    trace0 = Scatter(
        x=[1, 2, 3, 4],
        y=[10, 11, 12, 13],
        mode='markers',
        marker=dict(
            size=[40, 60, 80, 100],
        )
    )
    data = [trace0]
    layout = Layout(
        showlegend=False,
        height=600,
        width=600,
    )
    
    fig = dict( data=data, layout=layout )
    
    plot(fig)  
    

    但是您可以执行以下操作,这会稍微容易一些:

    import plotly
    import plotly.graph_objs
    plotly.offline.plot({
    "data": [
        plotly.graph_objs.Scatter(    x=[1, 2, 3, 4],
        y=[10, 11, 12, 13], mode='markers',
        marker=dict(
            size=[40, 60, 80, 100]))],
    "layout": plotly.graph_objs.Layout(showlegend=False,
        height=600,
        width=600,
    )
    })
    

    【讨论】:

    • 谢谢。汤姆早上第一件事就试试。没有可用的电脑。
    • 感谢@Dominix。这两种解决方案都适用于 python 2.70。
    • 使用 plot() 将打开一个浏览器窗口。这会扰乱工作流程。
    【解决方案2】:

    如果您想在 Spyder 中开发您的情节人物,也许是因为 Spyders 出色的变量浏览器,您只需运行 fig.show() 即可轻松显示非交互式图像。请注意,这是针对较新版本的 plotly,您不必担心 iplotplotly.offline

    如果您想在浏览器中以完全交互式版本显示您的图,只需运行:

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

    现在您的图将显示在您的默认浏览器中。

    要切换回在 Spyder 中生成图形,只需运行:

    import plotly.io as pio
    pio.renderers.default='svg'
    

    您也可以使用pio.renderers?检查其他选项:

    Renderers configuration
    -----------------------
    Default renderer: 'svg'
    Available rendere <...> wser', 'firefox', 'chrome', 'chromium', 'iframe',
    'iframe_connected', 'sphinx_gallery']
    

    您将在Setting the default renderer 下找到更多详细信息here

    这里有一个详细的例子

    代码:

    import plotly.graph_objects as go
    
    import plotly.io as pio
    #pio.renderers.default = 'svg'
    pio.renderers.default = 'browser'
    
    x = ['Product A', 'Product B', 'Product C']
    y = [20, 14, 23]
    
    fig = go.Figure(data=[go.Bar(
                x=x, y=y,
                text=y,
                textposition='auto',
            )])
    fig.show()
    

    剧情:

    系统信息:

    Python 3.7.6
    Spyder 3.3.1
    Plotly 3.2.0
    

    【讨论】:

      猜你喜欢
      • 2018-10-01
      • 2018-10-19
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      相关资源
      最近更新 更多