Plotly:向条形图添加阴影阈值

Plotly: adding a shaded threshold to a bar plot

我在 Pandas 数据框 df 中有一个销售数据集,看起来类似于以下内容:

import pandas as pd

df = pd.DataFrame({'date':['2021-01-04', '2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08', '2021-01-11', '2021-01-12', '2021-01-13', '2021-01-14', '2021-01-15'],
                  'sales':[1500, 2000, 1300, 2700, 1800, 4500, 2600, 2750, 8000, 1300]})

    date          sales
0   2021-01-04    1500
1   2021-01-05    2000
2   2021-01-06    1300
3   2021-01-07    2700
4   2021-01-08    1800
5   2021-01-11    4500
6   2021-01-12    2600
7   2021-01-13    2750
8   2021-01-14    8000
9   2021-01-15    1300

我绘制了这个数据,如下:

import plotly.express as px

fig = px.bar(df, x='date', y='sales')
fig.show()

我希望能够添加一些阴影 'thresholds',类似于以下内容:

阈值为:

这类似于 Matplotlib 中的 fill_between 方法。

这在 Plotly 中可行吗?

谢谢!

在图形创建和 fig.show() 之间添加:

fig.add_shape(type="rect", line_width=0,
    xref="x domain",
    x0=0, x1=1, y0=0, y1=2200,
    fillcolor="Red", opacity=0.25,
)

这将为您提供红色矩形,您可以通过根据需要调整填充颜色和不透明度以及 y0 和 y1 来相应地添加其他矩形。

请注意 x0 和 x1 是如何以 0 到 1 的相对坐标给出的以跨越整个图形(因为 xref="x 域"),但 y0 和 y1 使用绝对值。

如需进一步参考,请参阅 Plotly docs on Shapes

这种情况最好使用add_hrect()

fig.add_hrect(y0=0, y1=2200, line_width=0, fillcolor="red", opacity=0.25)
fig.add_hrect(y0=2200, y1=5000, line_width=0, fillcolor="yellow", opacity=0.25)
fig.add_hrect(y0=5000, y1=10000, line_width=0, fillcolor="green", opacity=0.25)