簡體   English   中英

Plotly:如何在 Spyder 中顯示圖表?

[英]Plotly: How to display charts in Spyder?

自 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)  

如果您想在 Spyder 中開發繪圖圖形,也許是因為 Spyder 出色的變量資源管理器,您只需運行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?檢查其他選項pio.renderers?

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

你會發現更多的細節在這里Setting the default renderer

這是一個詳細的例子

代碼:

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

導入 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,
)
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM