我试图构建一个仪表板,其中图形根据下拉框中传递的值进行更新。
由于某些原因,图表不适应下拉列表中的任何更改。这方面的特点是:
>
输入是肯定收到的:我创建了第二个函数,它具有相同的结构,但更新了不同的字段。它工作正常。
问题似乎是图形显示:我创建了一个不同版本的函数,其中更新函数将返回默认值1的“无”。图形的区域起初是空的,但是当在下拉列表中选择一个新值时,它会变成其中一个图形。一旦显示了一个图,该字段将不会对下拉框中的任何进一步更改做出反应:无论是提示新图的值,还是返回到默认值的返回都不会。
代码如下:
import dash
from dash.dependencies import Output, Event
import dash_core_components as dcc
import dash_html_components as html
import plotly
import plotly.graph_objs as go
from dash.dependencies import Input, Output
import collections
app = dash.Dash()
df = dm.return_all_pd_data(token = API_TOKEN)
app.layout = html.Div(children=[
html.H1(children='''
Month for graph:
'''),
dcc.Dropdown(
id = "input",
options=[
{'label': 'Jan', 'value': 1},
{'label': 'Feb', 'value': 2},
{'label': 'Mar', 'value': 3}
], value = 1
),
html.Div(id='output-graph'),
])
@app.callback(
Output(component_id='output-graph', component_property='children'),
[Input(component_id='input', component_property='value')])
def update_value(value):
start = datetime.datetime(2018, value, 1, 0, 0, 0, 1)
end = datetime.datetime(2018, value + 1, 1, 0, 0, 0, 1)
subset_df = df[ (df["lost_time"] > start) & (df["lost_time"] < end) ]
x = pd.value_counts(subset_df.deal_source).index
y = pd.value_counts(subset_df.deal_source).values
return(dcc.Graph(
id='output-graph',
figure={
'data': [
{'x': x, 'y': y, 'type': 'bar', 'name': value},
],
'layout': {
'title': "You selected month: {}".format(value)
}
}
))
if __name__ == "__main__":
app.run_server(debug = True)
我终于自己找到了解决办法。在这里回答,以防其他人也有同样的问题。
问题是我试图更新div标签中的子元素。相反,事实证明,创建一个空图表并编写函数来更新图表的图形元素要容易得多。
以下是证明有效的代码:
app = dash.Dash()
app.layout = html.Div(children=[
html.H1(children='''
Interactive Chart:
'''),
dcc.Dropdown(
id = "input",
options=[
{'label': 'January', 'value': 1},
{'label': 'Febuary', 'value': 2},
{'label': 'March', 'value': 3}
], value = 1
),
dcc.Graph( id="output-graph")
])
@app.callback(
Output(component_id='output-graph', component_property='figure'),
[Input(component_id='input', component_property='value')])
def update_value(value):
start = datetime.datetime(2018, value, 1, 0, 0, 0, 1)
end = datetime.datetime(2018, value + 1, 1, 0, 0, 0, 1)
subset_df = df[ (df["lost_time"] > start) & (df["lost_time"] < end) ]
x = pd.value_counts(subset_df.deal_source).index
y = pd.value_counts(subset_df.deal_source).values
return({'data': [
{'x': x, 'y': y, 'type': 'bar', 'name': value},
],
'layout': {
'title': "Deal Flow source for {} 2018".format(months[value-1])
}
}
)
if __name__ == "__main__":
app.run_server(debug = True)
我正试图用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号第
问题内容: 我是javascript的初学者,我想根据下拉菜单中的选项更改图像(选择),但是遇到一些问题。 在本教程中,如果要使用代码,它们将用您要使用的图片文件名替换iljbild,因为图片文件的名称必须与示例中的类型相同,即唯一区分文件的应该是数字,例如pict0.gif,pict2.gif等。如果使用的是jpg图片,则必须用jpg替换gif。设置图像的宽度和高度,如果在选择列表中更改单词的长
关于我的上一个问题(bootstrap上的下拉菜单不起作用),我正在为li下拉菜单的子菜单构建一个子菜单。这意味着它是嵌套的。银行菜单下有交易下拉菜单,交易下拉菜单下有不同类型交易的菜单。顺便说一下,我已经成功地创建了它,但是在悬停期间,“事务”模块的子菜单出现在事务菜单的前面,阻止了作为事务的父菜单。在悬停期间,如何避免它并将其放置在事务菜单的右侧?不管怎样,我已经使用了“右下拉菜单”,但它不会
我正在使用MPAndroidChart绘制水平堆叠条形图。我需要的是在虚线中绘制每个条形图的堆叠区域。如果可能,我还需要用透明颜色或虚线填充该堆叠区域。所有这些都是为了显示我的条形图堆叠部分,作为我在每个条形图上显示的数据的可能改进。我想这可以使用BarChartCustomRenler来实现,但我不确定。
问题内容: 我无法正常使用下拉菜单。我可以使导航栏完美显示,但是当我单击“ Dropdown”(二者之一)时,它不会显示下拉菜单。我曾尝试查看有关此问题的其他文章,但没有什么能解决每个人的问题。我直接从bootstrap网站复制了源代码,但似乎无法在我的机器上使用它。谁有想法?我盯着它看了一个小时,似乎无法弄清楚问题出在哪里。 问题答案: 也许尝试 看看是否行得通。
我有一个带有可删除行和列的dash DataTable对象。我想根据可见行更新图形。我不确定如何创建回调以及要传递哪些参数。在浏览器中删除行时,表对象中存储的数据实际上可能不会更改。