Matplotlib:扩展fill_between在X轴4.7-5区间的填充区域
解决Matplotlib fill_between X轴方向扩展填充区域的问题
要让填充区域从X=4.7延伸到X=5,只需扩展X轴数据数组,补充目标X点并对应设置Y值,具体操作如下:
- 扩展X数组:将
reference_point_x(即5)追加到原X数组末尾 - 扩展Y数组:将原Y数组的最后一个值(1)追加到Y数组末尾,保证
steps-post样式下折线从4.7水平延伸到5 - 绘制折线和填充时使用扩展后的数组
修改后的完整代码:
import numpy as np import matplotlib.pyplot as plt v3_x = np.array([1.7, 1.8, 2.5, 3.4, 4, 4.1, 4.7]) v3_y = np.array([14, 9, 5, 3, 2.5, 1.5, 1]) reference_point_x = 5 reference_point_y = 15 # 扩展X、Y数组,适配steps-post的水平延伸需求 extended_x = np.append(v3_x, reference_point_x) extended_y = np.append(v3_y, v3_y[-1]) plt.plot(extended_x, extended_y, drawstyle='steps-post', label='steps-post') plt.plot(v3_x, v3_y, 'o', color='grey', alpha=0.3) plt.plot(reference_point_x, reference_point_y, 'o--', color='grey', alpha=0.3) # 使用扩展后的X数组实现X轴方向的填充扩展 plt.fill_between(extended_x, extended_y, reference_point_y, step="post", alpha=0.4) plt.show()
这样修改后,填充区域会自动延伸到X=5的位置,同时折线的steps-post样式也能保持一致,不需要额外添加多余的线条或点。
内容的提问来源于stack exchange,提问作者Madeira
相关产品推荐
相关产品推荐

