python - 如何使用滑块将交互式文本添加到 Plotly 条形图?
问题描述
我希望添加交互式文本(如 KPI)以在图表上显示变量。以下是带有滑块的散点图上的 plotly 文档中的示例。我想这样做,但还要在顶部添加文字,说明任何给定年份的平均人口数量并相应更新。例如:对于 1952 年的滑块,图表的顶部会显示 16950402。我还想将其保留在 plotly express 中。
我知道我可以为此使用悬停标签,但我更希望在图表顶部有一些大文本。
有谁知道如何做到这一点?我知道添加带有变量的图形标题或注释是可能的,但我不知道如何使用滑块更新它。
import plotly.express as px
df = px.data.gapminder()
text = df.groupby("year").pop.mean().round(0)
fig = px.scatter(df, x="gdpPercap", y="lifeExp", animation_frame="year", animation_group="country",
size="pop", color="continent", hover_name="country",
log_x=True, size_max=55, range_x=[100,100000], range_y=[25,90])
fig["layout"].pop("updatemenus") # optional, drop animation buttons
fig.show()
解决方案
即使有一些可能的错误,我也会根据评论的要求添加代码。这里的想法是使用通过为每个帧px
添加标题并redraw = True
为每个步骤设置生成的帧fig.layout.sliders[0].steps
。
import plotly.express as px
df = px.data.gapminder()
text = df.groupby("year").pop.mean().astype(int).values
fig = px.scatter(df, x="gdpPercap", y="lifeExp", animation_frame="year", animation_group="country",
size="pop", color="continent", hover_name="country",
log_x=True, size_max=55, range_x=[100,100000], range_y=[25,90])\
.update_layout(
# title="Avg Population: {}".format(text[0]),
title_x=0.5)
for i, frame in enumerate(fig.frames):
frame.layout.title = "Avg Population: {}".format(text[i])
for step in fig.layout.sliders[0].steps:
step["args"][1]["frame"]["redraw"] = True
fig.show()
推荐阅读
- python - 关键错误python3.7
- c++ - 从一个类初始化一个指针,从一个不同的类类型,C++
- javascript - 我们如何防止用户使用 JavaScript 在 LiveCycle xfa 表单中使用 Adobe 菜单中的打印按钮?
- c# - 无法并行 MSBUILD 多个“目标”参数
- node.js - Node.js 显示 [object Object] 而不是 result.row
- html - 使用默认值在 ag 网格上添加行
- java - 如何摆脱我的代码中的“找不到符号”错误?
- makefile - How to write makefile so that it ignores "irrelevant" changes?
- elasticsearch - Take 的值与 ES 在 Kibana 中显示结果所花费的时间不同
- watson-knowledge-catalog - Can I select a specific data center in Japan for Watson Knowledge Catalog?