首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Plotly :如何在Plotly Express中注释多行?

Plotly :如何在Plotly Express中注释多行?
EN

Stack Overflow用户
提问于 2021-08-20 11:13:17
回答 1查看 162关注 0票数 2

我想创建一个折线图,其中多条线共享相同的x轴和y轴。幸运的是,最新版本的Plotly似乎允许多个输入作为y。例如:px.line(df,x,[y1,y2])工作得很好。

不幸的是,我想添加文本作为datapoint注解,但这不能以相同的方式工作。

我的目标是创建一个包含多条线的线状图,每个数据点都用与相应线相同的颜色标注其y_value。

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-20 13:06:54

也许不是最优雅的方法,但下面的完整代码片段将生成下图。代码片段的一些核心部分包括:

方法:

代码语言:javascript
复制
for i, d in enumerate(fig.data):
    for j, a in enumerate(d.x):
        fig.add_annotation(x=a, y = d.y[j], text = str(d.y[j])[:5],
                          showarrow = False,
                          yshift = 10,
                          font=dict(color=d.line.color, size=12))

图1:

如果您想要遵循其他color cycles来添加注释,只需包含:

代码语言:javascript
复制
colors = px.colors.qualitative.Alphabet

并替换为:

代码语言:javascript
复制
font=dict(color=d.line.color, size=12)

通过以下方式:

代码语言:javascript
复制
font=dict(color=colors[i], size=12)

并获取:

图2:

如果这对你有用的话,我很乐意详细介绍一下。

完整代码:

代码语言:javascript
复制
# imports
import pandas as pd
import plotly.express as px

# data
df = px.data.stocks().tail(10)
df = df.drop(['AMZN', 'AAPL'], axis = 1)

df.set_index('date', inplace = True)
colors = px.colors.qualitative.Alphabet

fig = px.line(df, x = df.index, y = df.columns)

for i, d in enumerate(fig.data):
    for j, a in enumerate(d.x):
        fig.add_annotation(x=a, y = d.y[j], text = str(d.y[j])[:5],
                           showarrow = False,
                           yshift = 10,
                           font=dict(color=d.line.color, size=12)
#                            font=dict(color=colors[i], size=12)
                          )


fig.show()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68861305

复制
相关文章

相似问题

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