You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在绘图窗口中添加可与xline()关联的阴影填充带?

在绘图中添加阴影填充带的方法(关联xline与指定颜色)

方法1:基础fill()实现(匹配你推测的思路)

这是最灵活的手动实现方式,能通过固定y轴范围保证填充带高度一致:

  • 先获取当前绘图的y轴上下限,确保填充带覆盖整个绘图区域:
    % 定义需要高亮的x区间(对应xline的位置)
    x_left = 2;
    x_right = 5;
    
    % 获取当前y轴范围
    y_range = ylim;
    
    % 绘制填充带
    fill([x_left x_right x_right x_left], ...
         [y_range(1) y_range(1) y_range(2) y_range(2)], ...
         '#E6F3FF', ... % 指定填充颜色
         'FaceAlpha', 0.3, ... % 调整透明度避免遮挡曲线
         'EdgeColor', 'none'); % 隐藏填充带边框
    
    hold on;
    % 关联绘制xline
    xline([x_left x_right], 'k--');
    

方法2:官方现成函数xregion()(Matlab R2021b+)

如果你用的是较新版本的Matlab,官方提供了专门用于高亮x轴区间的xregion()函数,完全适配你的需求:

  • 无需手动计算y轴范围,自动匹配当前绘图区域,代码更简洁:
    % 直接指定高亮区间、颜色,关联xline
    xregion(2, 5, 'FaceColor', '#E6F3FF', 'FaceAlpha', 0.3);
    hold on;
    xline([2 5], 'k--');
    
  • 额外优势:支持同时高亮多个不连续区间,还能给区间添加标签、调整边框样式等,比fill()更省心。

方法3:自定义封装函数(适合重复使用)

如果需要频繁生成这类填充带,可以把逻辑封装成一个小函数,方便调用:

function add_x_highlight(x_start, x_end, fill_color, alpha_val)
    % 获取当前y轴范围
    y_limits = ylim;
    % 绘制填充带
    fill([x_start x_end x_end x_start], ...
         [y_limits(1) y_limits(1) y_limits(2) y_limits(2)], ...
         fill_color, ...
         'FaceAlpha', alpha_val, ...
         'EdgeColor', 'none');
    hold on;
    % 关联xline
    xline([x_start x_end], 'k--');
end

% 调用示例
add_x_highlight(2, 5, '#E6F3FF', 0.3);

内容的提问来源于stack exchange,提问作者yzt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:54:38