python - plotly : How to annotate multiple lines in Plotly Express?

标签 python dataframe express plotly visualization

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

不幸的是,我想添加文本作为数据点注释,但这并不以同样的方式工作。

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

感谢您的帮助!

最佳答案

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

方法:

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:

enter image description here

如果您想关注其他color cycles对于您的注释,只需包含:

colors = px.colors.qualitative.Alphabet

并替换:

font=dict(color=d.line.color, size=12)

与:

font=dict(color=colors[i], size=12)

并得到:

图 2:

enter image description here

如果您可以使用它,我很乐意详细介绍所有细节。

完整代码:

# 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()

关于python - plotly : How to annotate multiple lines in Plotly Express?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68861305/

相关文章:

python - 用其他系列的最小值替换数据框中的 np.nan

python - 如何在 Django 查询中根据两个 datetime 对象的相减结果进行查询?

python - 将数据即时写入 CSV 并使用快速 api 下载文件

python - Objective C 和 python - pyobjc

python - WHERE 子句中的子查询

r - 如何将标量值乘以 R data.frame 中的多个列?

根据另一列的最后一个值从一列返回值

express - 在 Sapper 路线或 sapper 中间件中使用passportjspassport.authenticate()

javascript - 简单的 Express.js 应用程序运行时出错

javascript - 来源 : 'tok_visa' in Stripe