首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中,如何使用‘update _ figures’巧妙地更新图形?

在Python中,如何使用‘update _ figures’巧妙地更新图形?
EN

Stack Overflow用户
提问于 2022-04-02 08:42:05
回答 1查看 579关注 0票数 3

我在python中使用Plotly来生成数字。与标题一样,我不能用update_annotations函数更新图形注释。

以下是多重绘图的一个示例。

代码语言:javascript
复制
data = pd.DataFrame(np.random.rand(10,3), columns=['A', 'B', 'C'], index=pd.date_range(start='2001-01-01', periods=10))

fig = make_subplots(rows=3, cols=1, subplot_titles=['Top','Middle', 'Bottom'])

fig.add_trace(go.Scatter(x=data.index, y=data['A'], mode='lines'), row=1, col=1)
fig.add_trace(go.Scatter(x=data.index, y=data['B'], mode='lines'), row=2, col=1)
fig.add_trace(go.Scatter(x=data.index, y=data['C'], mode='lines'), row=3, col=1)

我可以用下面的代码将顶部图的名称从“top”更改为“TOP_TEST”及其位置。

代码语言:javascript
复制
fig['layout']['annotations'][0]['text'] = 'TOP_TEST'
fig['layout']['annotations'][0]['x'] = 0.02

但是,我不明白为什么不能对函数update_annotations做同样的事情。如果它有效,那么一次更改多个参数似乎要容易得多。

代码语言:javascript
复制
fig.update_annotations(row=1, col=1, text='TOP_TEST', x=0.02)

谢谢您事先提出的任何意见。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-02 10:35:49

  • 巧妙地研究了代码。_select_annotations_like()
  • whenever使用您指定的rowcol参数,内部方法有效地返回空列表。在此之后,代码会变得更具有挑战性。这似乎是一个bug
  • ,因为您可以在selector参数中使用update_annotations()。在

下面的代码中演示

代码语言:javascript
复制
import pandas as pd
import numpy as np
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import plotly.express as px


data = pd.DataFrame(np.random.rand(10,3), columns=['A', 'B', 'C'], index=pd.date_range(start='2001-01-01', periods=10))

fig = make_subplots(rows=3, cols=1, subplot_titles=['Top','Middle', 'Bottom'])

fig.add_trace(go.Scatter(x=data.index, y=data['A'], mode='lines'), row=1, col=1)
fig.add_trace(go.Scatter(x=data.index, y=data['B'], mode='lines'), row=2, col=1)
fig.add_trace(go.Scatter(x=data.index, y=data['C'], mode='lines'), row=3, col=1)

# empty so nothing to update...
list(fig._select_annotations_like(prop="annotations", row=1, col=1))

# select based on text on we're ok
fig.update_annotations(selector={"text":"Top"}, text="TOP_TEST", x=.02)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71716047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档