如何用Python的Plotly绘制单图例的置信区间折线图
解决Plotly图表填充边界与图例优化问题
针对你的需求,以下是修改后的代码及关键调整说明:
修改后代码
import plotly.graph_objs as go # 下界trace:隐藏线条,不显示图例 trace1 = go.Scatter( x=df.index, y=df['lower'], name='Lower Bound', line=dict(color='rgba(0,0,0,0)'), # 透明化隐藏边界线 showlegend=False ) # 上界trace:填充到下界区域,隐藏线条,不显示图例 trace3 = go.Scatter( x=df.index, y=df['upper'], name='Upper Bound', fill='tonexty', # 填充到前一个trace(下界)的区域 fillcolor='rgba(255,0,0,0.2)', line=dict(color='rgba(0,0,0,0)'), # 透明化隐藏边界线 showlegend=False ) # 中位数trace:作为核心显示线条,唯一图例条目 trace2 = go.Scatter( x=df.index, y=df['median'], name='Median', line=dict(color='blue', width=2), showlegend=True ) # 布局设置 layout = go.Layout( xaxis=dict(title='Date'), yaxis=dict(title='title') ) # 注意trace顺序:下界 → 上界 → 中位数,保证填充逻辑生效 fig = go.Figure(data=[trace1, trace3, trace2], layout=layout) context['pltyplot'] = pltyplot(fig, output_type="div")
关键调整说明
- 修复填充区域:通过调整trace顺序(下界→上界→中位数),让上界trace的
fill='tonexty'填充到下界trace,生成上下界之间的完整填充区域,匹配目标图样式。 - 简化图例:将上下界trace的
showlegend设为False,仅保留中位数trace的图例条目,实现单一图例需求。 - 隐藏冗余线条:将上下界的线条设为透明(
rgba(0,0,0,0)),避免显示多余的边界线,突出中间的中位数核心线条。
如果需要保留上下界的蓝色线条,可删除line=dict(color='rgba(0,0,0,0)')这一行。
内容的提问来源于stack exchange,提问作者Wing
相关产品推荐
相关产品推荐

