如何使用Matplotlib填充曲线与连接X/Y极值的对角线之间的区域
Matplotlib曲线与对角线区域填充解决方案
核心实现逻辑是先计算出对角线上和输入x数组每个点一一对应的y值,再调用fill_between方法通过条件判断区分上下区域分别填充即可,修改后的完整代码如下:
import numpy as np import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize = (6,4)) x = np.array([0,1,2,3,4,5,6,7,8,9,10]) y = np.array([0,4,5,5,4,5,6,8,9,9,15]) # 计算对角线上每个x坐标对应的y值 y_diag = np.linspace(y.min(), y.max(), len(x)) ax.plot(x, y, color = "red", lw=1.2) ax.plot([x.min(), x.max()], [y.min(), y.max()], color = "black", lw=1.2) # 填充对角线以上的红色区域 ax.fill_between(x, y, y_diag, where=(y >= y_diag), color='red', alpha=0.3, interpolate=True) # 填充对角线以下的蓝色区域 ax.fill_between(x, y, y_diag, where=(y < y_diag), color='blue', alpha=0.3, interpolate=True) plt.show()
参数说明
interpolate=True用于自动处理曲线和对角线交叉位置的填充断点,避免出现空白或填充错位问题alpha为填充区域透明度参数,取值范围0~1,可根据实际视觉需求自行调整
内容的提问来源于stack exchange,提问作者Jab
相关产品推荐
相关产品推荐

