python - 在 Plotly 中为图表注释添加自定义标签

标签 python pandas charts plotly

我正在创建许多图表,这些图表将添加各种注释以表示存在单一条件。

我想做的是在图表图例中添加一个标签来指定这些注释代表什么。

这是一个可以重新创建的浓缩示例:

import pandas as pd
import numpy as np
import plotly.graph_objects as go

dates = pd.date_range(start='2020-01-01', periods=100)
random = np.random.RandomState(0)
df = pd.DataFrame({
  #'data': data1
'data': np.random.uniform(low=0, high=100, size=100).tolist()
}, index=dates)

fig = go.Figure()
fig.add_trace(go.Scatter(x=df.index, y=df['data']))
arrow_dates = df[df.data > 0.8].index
arrow_values = df[df.data > 0.8]['data'].tolist()
annotation_arrows = [dict(x=arrow_date, y=arrow_val, showarrow=True, arrowwidth=2, 
        arrowhead=1, arrowcolor='blue', yshift=10, arrowside='end') for arrow_date, arrow_val in zip(arrow_dates, arrow_values)]
fig.update_layout(annotations=annotation_arrows)
fig.show()

这提供了以下图表:

enter image description here

我想做的是为所述图表提供一个描述条件的图例。理想情况下,它将是箭头本身的图标及其描述,例如“数据 > 0.8”,并在图表图例中带有箭头图片。

这可能吗?

谢谢。

最佳答案

为了在图例中优雅地设置它,我认为最好的方法是包含一个带有标记的新轨迹,以指示何时满足特定条件。下面的代码片段使用:

fig.add_traces(go.Scatter(x=df.index, y=df['condition1']*1.05, mode='markers',
                         marker = dict(symbol='triangle-down'), name = 'Condition 1'))

看看plotlys marker styles找到比 'triangle-down' 更能满足您需求的方法。这可能不是一个完美的解决方案,但至少您会在图例中整齐地获得您想要的信息:

enter image description here

带有示例数据的完整代码:

import pandas as pd
import numpy as np
import plotly.graph_objects as go

dates = pd.date_range(start='2020-01-01', periods=100)
random = np.random.RandomState(0)
df = pd.DataFrame({
  'data': np.random.uniform(low=0, high=100, size=100).tolist()
}, index=dates)

df['condition1'] = 99

fig = go.Figure()
fig.add_trace(go.Scatter(x=df.index, y=df['data']))
arrow_dates = df[df.data > 0.95].index
arrow_values = df[df.data > 0.95]['data'].tolist()
# annotation_arrows = [dict(x=arrow_date, y=arrow_val, showarrow=True, arrowwidth=2, 
#         arrowhead=1, arrowcolor='blue', yshift=10, arrowside='end') for arrow_date, arrow_val in zip(arrow_dates, arrow_values)]
#fig.update_layout(annotations=annotation_arrows)

df['condition1'] = df['data'].where(df['data']>95)

fig.add_traces(go.Scatter(x=df.index, y=df['condition1']*1.05, mode='markers',
                         marker = dict(symbol='triangle-down'), name = 'Condition 1'))

fig.show()

关于python - 在 Plotly 中为图表注释添加自定义标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63675601/

相关文章:

python - Docker 健康检查总是返回不健康状态

python - 使用 Pandas 计算固定时间范围之间的总和

python - 用于在窗口中打印元素的 Pandas 滚动计算

python - 如何使 Plotly 饼图始终大小相同

c# - 免费 WPF 实时图表

python检测标签字符

python - 如何使用 OpenCV 将 PyBullet 模拟坐标投影到渲染的帧像素坐标?

python - pandas 数据框中带有附加问题的时间序列

python - 具有 dict 输入的 Pandas "replace"根据 dict 顺序返回不同的结果(其中 dict 没有顺序)

javascript - 如何强制 Google Chart Legend 显示行值?