Обновить график в da sh с помощью выпадающего ввода - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь добавить точки к предопределенной фигуре с помощью раскрывающегося списка в Da sh. Если я выберу одно значение, я хочу добавить точку в пару координат, и если я выберу другое значение, я хочу обновить График в другой паре координат, в первую очередь функция для захвата рисунка следующая:

import plotly.graph_objects as go
import plotly as py
py.offline.init_notebook_mode(connected = True)

def graficar_rectangulos(fig):


fig.add_trace(go.Scatter(
    x=[1.5],
    y=[0.75],
    mode="text",
))

# Set axes properties
fig.update_xaxes(range=[0, 7], showgrid=False)
fig.update_yaxes(range=[0, 3.5])

# Add shapes
fig.add_shape(
        # unfilled Rectangle
            type="rect",
            x0=1,
            y0=1,
            x1=2,
            y1=3,
            line=dict(
                color="RoyalBlue",
            ),
        )

fig.update_shapes(dict(xref='x', yref='y'))



return True

После того, как у меня возникла проблема, и, в частности, при обновлении графика я не уверен, какие из них параметры, которые должны быть возвращены графиком обновления функции, чтобы обновить рисунок с точками рассеяния (я использую ноутбук jupyter):

from jupyter_plotly_dash import JupyterDash
import plotly.graph_objects as go

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output

app = JupyterDash('SimpleExample')

fig = go.Figure()
graficar_rectangulos(fig)

app.layout = html.Div([
    dcc.Dropdown(
        id='dropdown',
        options=[
            {'label': 'A', 'value': 'A'},
            {'label': 'B', 'value': 'B'},
            {'label': 'C', 'value': 'C'}
        ],
        value='NYC'
    ),
    dcc.Graph(id='graph-court', figure = fig)
]
)


@app.callback(
    Output('graph-court', 'figure'),
    [Input('dropdown', 'value')])

def update_figure(selected_value):
    if selected_value=='A':
        x,y=3,3
    else:
        x,y=2,2

    return add_trace(go.Scatter(x=x,y=y,marker = dict(size=[15], color=['green']), mode='markers'))


app

Как должна работать функция update_figure?

Заранее спасибо

1 Ответ

1 голос
/ 05 апреля 2020
import dash
import plotly as py
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.graph_objects as go
from jupyter_plotly_dash import JupyterDash
py.offline.init_notebook_mode(connected = True)

app = JupyterDash('SimpleExample')

app.layout = html.Div([

    dcc.Dropdown(id='dropdown', options=[
            {'label': 'A', 'value': 'A'},
            {'label': 'B', 'value': 'B'}],
            value = 'A'),

    dcc.Graph(id='graph-court')

])

def create_figure():

    layout = dict(xaxis=dict(range=[0, 7], showgrid=False), yaxis=dict(range=[0, 3.5]), showlegend=False,
             shapes=[dict(type='rect', x0=1, y0=1, x1=2, y1=3, line=dict(color='RoyalBlue'))])

    data = go.Scatter(x=[1.5], y=[0.75], text='Some text', mode='text')

    fig = go.Figure(data=data, layout=layout)

    return fig

@app.callback(Output('graph-court', 'figure'), 
              [Input('dropdown', 'value')])
def update_figure(selected_value):

    if selected_value == 'A':

        x, y = 3, 3

    else:

        x, y = 2, 2


    fig = create_figure()

    fig.add_trace(go.Scatter(x=[x], y=[y], marker=dict(size=15, color='green'), mode='markers'))

    return fig

app


A

B

...