在图中,由于fill = 'tonexty'
,绿线填充到从0(在x轴上)到它们的交点的红线,从而重叠了红色和蓝色填充。然后,紫色线填充自己,直到绿色线与红色和蓝色重叠。如何防止这些重叠?
我希望绿线仅在红线上方时填充。紫色线填充自己直到它遇到的下一个最上面的线,这里是绿色和红色
作为参考,我希望它看起来像这样-
这是重现情节的代码-
import pandas as pd
import plotly.graph_objects as go
df = pd.DataFrame({'x': [0,1,2,3,4],
'y1': [0,3,7,9,17],
'y2': [0,5,8,11,21],
'y3': [0,0,0,15,25],
'y4': [0,10,20,30,40]})
fig = go.Figure()
fig.add_scatter(x=df.x, y=df.y1, fill='tozeroy', name='y1')
fig.add_scatter(x=df.x, y=df.y2, fill='tonexty', name='y2')
fig.add_scatter(x=df.x, y=df.y3, fill='tonexty', name='y3')
fig.add_scatter(x=df.x, y=df.y4, fill='tonexty', name='y3')
fig.update_xaxes(nticks=5)
fig.show()
这有点类似于this question。但我不想填充在两行之间,而是在一行和可能遇到的许多其他行之间填充(所有与其相邻的行)。