Plotly:防止条形图上的条形根据背景颜色改变颜色

时间:2021-03-11 20:23:28

标签: python plotly plotly-dash plotly-python

我在 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.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)

fig.show()

enter image description here

如您所见,蓝色竖条与红色背景色结合时会变成紫色

一种解决方法可能是先绘制红色、绿色和黄色背景色,然后覆盖蓝色条。这样,我们就不会“混合”红色和蓝色,从而产生紫色。

这可能吗?还有其他更好的解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

可以选择将 layer='below' 添加到 add_hrect

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

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