在plotly Dash中显示一个简单的matplotlib图

时间:2018-04-16 07:00:51

标签: python matplotlib plotly plotly-dash

是否有可能在plotly的Dash框架中显示一个简单的matplotlib图(通常由plt.show()生成的图)?或者只是用图表的散点图和数据曲线绘制图形图?

具体来说,我想我需要一个不同于Graph的组件(见下文)以及一种在update_figure函数中返回简单图的方法。

示例:

import dash
import dash_core_components as dcc
import dash_html_components as html
import numpy as np
import matplotlib.pyplot as plt

app = dash.Dash()

app.layout = html.Div(children=[
    html.H1(children='Hello Dash'),

    dcc.Slider(
        id='n_points',
        min=10,
        max=100,
        step=1,
        value=50,
    ),

    dcc.Graph(id='example') # or something other than Graph?...
])

@app.callback(
    dash.dependencies.Output('example', 'figure'),
    [dash.dependencies.Input('n_points', 'value')]
)

def update_figure(n_points):
    #create some matplotlib graph
    x = np.random.rand(n_points)
    y = np.random.rand(n_points)
    plt.scatter(x, y)
    # plt.show()
    return None # return what, I don't know exactly, `plt`?

if __name__ == '__main__':
    app.run_server(debug=True)

3 个答案:

答案 0 :(得分:2)

请参阅https://plot.ly/matplotlib/modifying-a-matplotlib-figure/mpl_to_plotly库中有一个plotly.tools函数,该函数将从matplotlib图形返回一个绘图图形(然后可以将其返回到Graph的图形属性)。

编辑:刚注意到您刚才问过这个问题。也许以上是一个新功能,但它是最简洁的方法。

答案 1 :(得分:0)

如果您不想使用交互式绘图,则可以返回静态绘图(从此help找到)

int result = a * b + b + ( c  ? b : a );

答案 2 :(得分:0)

UserWarning: Starting a Matplotlib GUI outside of the main thread will likely fail

就我而言,它有效,尽管有警告消息??