是否有可能在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)
答案 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
就我而言,它有效,尽管有警告消息??