如何解决由范围滑块控制的绘制组合条形图和表格
我目前正在尝试使用 plotly 创建一个图表,
我的目标是创建一个组合的条形图/数据表,两者都用范围滑块控制,以便用日期控制值。我已经成功创建了由范围滑块控制的条形图。
我无法控制桌子:/
这是一个组合图,但范围滑块附加到表格,如您所见,它不控制日期,而是控制表格视图 https://plotly.com/~tristan1551/31/
这是我使用范围滑块 https://plotly.com/~tristan1551/23/
完成的条形图示例另一个想法是只用游侠滑块控制桌子,我也不能经理这样做。
有没有办法实现我想做的事?
谢谢你的帮助:)
解决方法
- 要将表格与图形上的范围滑块同步,您可以使用破折号回调
- 下面的代码创建一个带有范围滑块 的条形图
- 将回调附加到 figure 中的更改以获取 rangeslider 的位置
- 根据这些输入构建表格
from jupyter_dash import JupyterDash
import dash_core_components as dcc
import dash_html_components as html
import dash_table
from dash.dependencies import Input,Output,State
import pandas as pd
import numpy as np
import plotly.express as px
df = pd.DataFrame({"date": pd.date_range("1-jan-2020",periods=365 * 2),"value": np.random.uniform(1,5,365 * 2),})
fig = px.bar(df,x="date",y="value").update_layout(
xaxis={
"range": [df["date"].quantile(0.9),df["date"].max()],"rangeslider": {"visible": True},}
)
# Build App
app = JupyterDash(__name__)
app.layout = html.Div(
[dcc.Graph(id="bargraph",figure=fig),html.Div(id="bartable",children=[])],)
@app.callback(
Output("bartable","children"),Input("bargraph","relayoutData"),)
def updateTable(graphData):
global df
if graphData and "xaxis.range" in graphData.keys():
d1 = pd.to_datetime(graphData["xaxis.range"][0])
d2 = pd.to_datetime(graphData["xaxis.range"][1])
else:
d1 = df["date"].quantile(0.9)
d2 = df["date"].max()
dft = df.loc[df["date"].between(d1,d2)]
return dash_table.DataTable(
columns=[{"name": c,"id": c} for c in dft.columns],data=dft.to_dict("records"),)
# Run app and display result inline in the notebook
app.run_server(mode="inline")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。