Я новичок в приборной панели, но у меня уже есть несколько вещей, и это выглядит многообещающе. Но я изо всех сил пытаюсь обновить один из моих графиков обратным вызовом. Аналогичная процедура работает для простого линейного графика, но роза ветров, созданная из этого примера, проблематична https://plot.ly/python/wind-rose-charts/. Однако, построение этой розы напрямую, работает.
import numpy as np
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.graph_objs as go
trace1 = go.Area(
r=[77.5, 72.5, 70.0, 45.0, 22.5, 42.5, 40.0, 62.5],
t=['North', 'N-E', 'East', 'S-E', 'South', 'S-W', 'West', 'N-W'],
name='11-14 m/s',
marker=dict(color='rgb(106,81,163)'))
trace2 = go.Area(
r=[57.49999999999999, 50.0, 45.0, 35.0, 20.0, 22.5, 37.5, 55.00000000000001],
t=['North', 'N-E', 'East', 'S-E', 'South', 'S-W', 'West', 'N-W'],
name='8-11 m/s',
marker=dict(color='rgb(158,154,200)'))
trace3 = go.Area(
r=[40.0, 30.0, 30.0, 35.0, 7.5, 7.5, 32.5, 40.0],
t=['North', 'N-E', 'East', 'S-E', 'South', 'S-W', 'West', 'N-W'],
name='5-8 m/s',
marker=dict(color='rgb(203,201,226)'))
trace4 = go.Area(
r=[20.0, 7.5, 15.0, 22.5, 2.5, 2.5, 12.5, 22.5],
t=['North', 'N-E', 'East', 'S-E', 'South', 'S-W', 'West', 'N-W'],
name='< 5 m/s',
marker=dict(color='rgb(242,240,247)'))
wind_data_test = [trace1, trace2, trace3, trace4]
app = dash.Dash()
app.layout = html.Div(children=[
html.Div([dcc.RadioItems(
id='show-period',
options=[{'label': i, 'value': i} for i in ['day','week']],
value='all',
labelStyle={'display': 'inline-block'})],
style=dict(width='50%')),
dcc.Graph(id='ontoroctov-groph'),
dcc.Graph(
id = 'wind-rose-static',
figure = go.Figure(data=wind_data_test,
layout=go.Layout(orientation=270,
barmode='stack'))),
dcc.Graph(id = 'wind-rose-dynamic')
])
@app.callback(
dash.dependencies.Output('ontoroctov-groph', 'figure'),
[dash.dependencies.Input('show-period', 'value')]
)
def update_figure(period_limit):
return {
'data': [
{'x': np.arange(60),
'y': np.random.random(60),
'type': 'bar', 'name': 'quant 1'},
],
'layout': go.Layout(title='Plot 1')}
@app.callback(
dash.dependencies.Output('wind-rose-dynamic', 'figure'),
[dash.dependencies.Input('show-period', 'value')]
)
def update_windrose(period_limit):
return {
'data':wind_data_test,
'layout':go.Layout(orientation=270, barmode='stack')}
if __name__ == '__main__':
app.run_server(debug=True)
Любые намеки или идеи, что я должен попробовать, добро пожаловать.
Edit:
На сюжетном форуме есть информация об ограниченных возможностях полярных графов https://community.plot.ly/t/is-the-wind-rose-fully-functional/46 и о возможном обновлении в ближайшее время https://community.plot.ly/t/interactive-graphing-wind-rose/13311/2
Я упомяну здесь, когда обновление решит проблему.