Python Plotly绘图如何填充指定x区间范围内的曲线下区域
实现方法
你可以单独新增一条仅包含目标区间数据的Scatter trace,通过指定fill='tozeroy'参数实现指定区间的填充效果,不会影响原曲线的展示。
完整修改后代码
import numpy as np from scipy.stats import beta import plotly.graph_objects as go x = np.arange(0.01, 1, 0.01) y = beta.pdf(x,2,5) fig = go.Figure() # 原Beta分布曲线 fig.add_trace( go.Scatter( x = x, y = y, name = 'Beta(2,5) PDF' ) ) # 筛选x在[0.2, 0.4]区间内的对应数据 mask = (x >= 0.2) & (x <= 0.4) x_fill = x[mask] y_fill = y[mask] # 新增填充trace fig.add_trace( go.Scatter( x = x_fill, y = y_fill, fill = 'tozeroy', # 填充到x轴 fillcolor = 'rgba(184, 247, 212, 0.5)', # 填充颜色+透明度,可自行调整 line = dict(width=0), # 隐藏该trace的线条,避免和原曲线重叠 showlegend = False, # 不展示在图例中,也可以按需改成True name = 'x∈[0.2,0.4]填充区域' ) ) fig.show()
核心改动说明
- 用布尔掩码
mask筛选出x落在[0.2, 0.4]区间内的所有数据点 - 新增的填充trace设置
fill='tozeroy',代表将曲线和y=0(x轴)之间的区域全部填充 - 把填充trace的线条宽度设为0,避免和原Beta分布曲线的边缘重复显示,视觉效果更自然
内容的提问来源于stack exchange,提问作者haneulkim
相关产品推荐
相关产品推荐

