在plotly python中为折线图的不同部分添加文本

Posted

技术标签:

【中文标题】在plotly python中为折线图的不同部分添加文本【英文标题】:Add text for different part of line chart plot in plotly python 【发布时间】:2021-10-02 23:11:21 【问题描述】:

我使用 plotly (python) 绘制了一个图形,如下所示。

现在我的目标是以相同颜色显示所有点,但为该图中的每个彩色部分添加不同的文本。例如,对于蓝色部分,我想添加文本 AAA 和红色部分 BBB。如何在情节中做到这一点?

【问题讨论】:

【参考方案1】: 我有模拟数据,其特征将生成与您展示的图表相似的图表 有三种添加标签的方法
    图例中的痕迹标签 作为带有mode="text" 的附加散点图 作为图中的注释

所有这三个都在下面演示。它确实假设您具有 pandas

的工作知识
import plotly.express as px
import plotly.graph_objects as go
import pandas as pd
import numpy as np

df = pd.DataFrame("AAA":np.concatenate([np.random.uniform(1,5,20), np.full(20,np.nan)]), 
              "BBB":np.concatenate([np.full(20,np.nan), np.random.uniform(1,5,20), ]))

# create two traces, where traces are in legend to label AAA & BBB
fig = px.scatter(df, x=df.index, y=["AAA","BBB"]).update_traces(mode="lines+markers")

# additionally create text trace, that are last AAA & BBB
lastAAA = df.loc[~df["AAA"].isna()].iloc[-1]
lastBBB = df.loc[~df["BBB"].isna()].iloc[-1]
fig.add_trace(go.Scatter(x=[lastAAA.name], y=[lastAAA["AAA"]], text="AAA", mode="text", showlegend=False))
fig.add_trace(go.Scatter(x=[lastBBB.name], y=[lastBBB["BBB"]], text="BBB", mode="text", showlegend=False))

# additionally add annotations
fig.add_annotation(x=lastAAA.name, y=lastAAA["AAA"], text="AAA")
fig.add_annotation(x=lastBBB.name, y=lastBBB["BBB"], text="BBB")

【讨论】:

以上是关于在plotly python中为折线图的不同部分添加文本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Plotly 创建垂直滚动条?

python读取txt文件转化为折线图后怎么实现滤波器?

如何在python plotly scattergeo线图中分离不同的痕迹

python使用matplotlib可视化线图(line plot)自定义设置不同线条的色彩(setting the color of multiple plots)

matlplotlib 为折线图填充渐变颜色

以最简单的方式在 Matplotlib 中的 PyPlot 中添加图例