Plotly折线图能否实现'tozero'反向填充?是否支持'tomax'?
Plotly折线图反向填充(tozero的反向)解决方案
Plotly里没有直接的fill: "tomax"参数,但可以通过以下两种方式实现你要的填充效果:
方法1:利用隐藏的顶部参考线 + tonexty填充
- 先算出你数据里的y轴最大值(或者你想要填充到的固定顶部值)
- 添加一条隐藏的折线trace,y值全部设为这个最大值,设置
visible: false - 把主折线的
fill属性设为"tonexty",并通过fillcolor指定填充颜色
举个Python的代码示例:
import plotly.graph_objects as go import numpy as np # 原始数据 x = np.arange(10) y = np.random.randint(1, 10, size=10) max_y = y.max() # 获取y最大值 # 主折线trace fig = go.Figure() fig.add_trace(go.Scatter( x=x, y=y, name='主数据', fill='tonexty', # 填充到下一个trace fillcolor='rgba(0,100,200,0.2)' )) # 隐藏的顶部参考线trace fig.add_trace(go.Scatter( x=x, y=[max_y]*len(x), name='顶部参考线', visible=False, # 隐藏这条线 line=dict(color='rgba(0,0,0,0)') # 透明线条 )) fig.show()
方法2:Plotly Express适配方案
如果用Plotly Express,也可以套用相同逻辑,先构造包含顶部线的数据再设置填充:
import plotly.express as px import pandas as pd import numpy as np x = np.arange(10) y = np.random.randint(1, 10, size=10) max_y = y.max() # 构造包含顶部线的数据 df = pd.DataFrame({'x': x, 'y': y, 'top_y': [max_y]*len(x)}) fig = px.line(df, x='x', y=['y', 'top_y']) # 隐藏顶部线trace fig.data[1].visible = False # 设置主折线填充到顶部线 fig.data[0].fill = 'tonexty' fig.data[0].fillcolor = 'rgba(0,100,200,0.2)' fig.show()
内容的提问来源于stack exchange,提问作者krozero
相关产品推荐
相关产品推荐

