我正试图用Plotly编写散点图,并使其具有交互式trhough Dash回调,问题是当我更改下拉列表时,我的图形没有更新。数据结构如下所示:
报告修订周期202002年第29/02/2020号第16793 3 202001年第31/01/2020号第18933 1 202101年第31/01/2021 6246 132 202001年第17/01/2020 13 1号第
#Importar librerías
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
import pandas as pd
#Carga de datos
df_temp = pd.read_excel(r'D:\Python\Datos_maestros\periodo.xlsx')
app = dash.Dash()
fechas = []
for fecha in df_temp['periodo'].unique():
fechas.append({'label': str(fecha), 'value': fecha})
#Definición del layout de la app a partir de componentes HTML y Core
app.layout = html.Div([
dcc.Graph(id='graph_line'),
dcc.Dropdown(id='selector_fecha', options = fechas, value = '') #Seleccionamos todo el rango de fechas de nuestro dataframe
])
# CREACIÓN DE GRÁFICOS E INTERACTIVIDAD
#Callback para actualizar gráfico en función del rango de fechas seleccionadas
@app.callback(Output('graph_linea', 'figure'),
[Input('selector_fecha', 'value')])
def actualizar_graph(fecha):
filtered_df = df_temp[df_temp['periodo'] == fecha]
#Creación de 1 traza por cada ciudad de nuestro dataframe
traces = []
for nombre_area in filtered_df['Direccion'].unique():
df_area = filtered_df[filtered_df['Direccion'] == nombre_area]
traces.append(go.Scatter(
x=df_area['revisados'],
y=df_area['errores'],
text=df_area['Direccion'],
mode='markers',
opacity=0.7,
marker={'size': 15},
name=nombre_area
))
return { #Se retornan los objetos data y layout para ser enviados al Output con identificador graph_linea
'data': traces,
'layout': go.Layout(
xaxis={'title': 'Fecha'},
yaxis={'title': 'Errores'},
hovermode='closest'
)
}
if __name__ == '__main__':
app.run_server(port=5000)
我知道这并不总是可行的,但对于未来的问题,请尝试将您的问题重构为一个可复制的示例。意思是我们每个人都可以复制的一段代码。这使得我们可以更容易地帮助您,因为我们无法运行您的代码,因为缺少了。xslx文件。
尽管如此,我认为存在两个主要问题。正如@coralvanda已经提到的,您的return
语句位于for循环内,这很奇怪。我假设你应该把它拉出来,除非你打算在第一次迭代后停止循环。其次,更新plotly graph涉及地物对象。看看围棋。图()。首先添加地物对象,然后添加所需的轨迹。固定代码可能如下所示:
#Importar librerías
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
import pandas as pd
#Carga de datos
df_temp = pd.read_excel(r'D:\Python\Datos_maestros\periodo.xlsx')
app = dash.Dash()
fechas = []
for fecha in df_temp['periodo'].unique():
fechas.append({'label': str(fecha), 'value': fecha})
#Definición del layout de la app a partir de componentes HTML y Core
app.layout = html.Div([
dcc.Graph(id='graph_line'),
dcc.Dropdown(id='selector_fecha', options = fechas, value = '') #Seleccionamos todo el rango de fechas de nuestro dataframe
])
# CREACIÓN DE GRÁFICOS E INTERACTIVIDAD
#Callback para actualizar gráfico en función del rango de fechas seleccionadas
@app.callback(Output('graph_linea', 'figure'),
[Input('selector_fecha', 'value')])
def actualizar_graph(fecha):
fig = go.Figure()
filtered_df = df_temp[df_temp['periodo'] == fecha]
#Creación de 1 traza por cada ciudad de nuestro dataframe
traces = []
for nombre_area in filtered_df['Direccion'].unique():
df_area = filtered_df[filtered_df['Direccion'] == nombre_area]
fig.add_trace(
go.Scatter(
x=df_area['revisados'],
y=df_area['errores'],
text=df_area['Direccion'],
mode='markers',
opacity=0.7,
marker={'size': 15},
name=nombre_area
)
)
fig['layout'] = go.Layout(
xaxis={'title': 'Fecha'},
yaxis={'title': 'Errores'},
hovermode='closest'
)
return fig
if __name__ == '__main__':
app.run_server(port=5000)
我试图构建一个仪表板,其中图形根据下拉框中传递的值进行更新。 由于某些原因,图表不适应下拉列表中的任何更改。这方面的特点是: > 输入是肯定收到的:我创建了第二个函数,它具有相同的结构,但更新了不同的字段。它工作正常。 问题似乎是图形显示:我创建了一个不同版本的函数,其中更新函数将返回默认值1的“无”。图形的区域起初是空的,但是当在下拉列表中选择一个新值时,它会变成其中一个图形。一旦显示了一个图,
是的,所以我不知道我在做什么。哈。 我想改变select2的未打开的下拉菜单的颜色(也许还有边上的按钮),但是寻找解决方案只是设法阻碍了我 这样可以更改选项(这很好!)但并不是我想要的100%。 有没有改变下拉初始状态颜色的类
如何更改散点图中标记线的粗细?是中的有效属性;图是否有等价属性? 我不是想改变尺寸而是线条粗细!
问题内容: 我正在JSP中创建一个页面,其中有一个下拉列表,一旦用户选择了一个值,他就必须单击go按钮,然后将该值发送到Servlet。 我该如何做才能在变更时做到呢?例如,当用户选择John时,将从数据库中检索出他的所有详细信息并显示出来。我希望系统无需单击“执行”按钮即可执行此操作。 问题答案: 只需询问JavaScript的帮助。
关联的excel数据 xVal和yVal可以成功替换,但如何替换C列(extList)? xVal和yVal替换为以下方式
我有一张表格 表单有多个输入类型文本和一个下拉菜单。 我还有一个名为(submit1)的提交按钮 我的PHP读起来是这样的: 如果我按下按钮,它就工作了,没问题。 但我也想从下拉菜单中提交表格更改。。。因此,它可以通过按下按钮或更改下拉列表来执行。。。所以我的下拉列表如下 当我选择我的下拉列表时,页面刷新,但是PHP中的代码没有执行。。。我想这和$u POST['submit1']的名字有关。。。