Matlab绘制等高线图时如何对指定区域添加阴影填充
实现方案
场景1:全等高线区域填充阴影
直接使用contourf函数绘制填充层,再叠加上带标注的等高线边框即可,示例代码如下:
sample=xlsread('sample.xlsx'); x=(sample(:,1)); y=(sample(:,2)); z=(sample(:,3)); k=sample(:,4); N=50; [X,Y]=meshgrid(linspace(min(x)-0.2, max(x)+0.2, N), linspace(min(y)-0.2, max(y)+0.2, N)); F = scatteredInterpolant(x, y, z); FF=scatteredInterpolant(x, y, k); Z= F(X,Y); ZZ=FF(X,Y); % 绘制填充层,FaceAlpha控制透明度实现阴影效果 contourf(X,Y,Z,'ShowText','off','FaceAlpha',0.3) hold on % 叠绘等高线边框和数值标注 contour(X,Y,Z,'ShowText','on','Color','k')
场景2:仅指定k值区间的等高线区域填充阴影
如果需要根据k的数值筛选填充区域,可通过逻辑掩码结合surf实现,示例代码如下:
sample=xlsread('sample.xlsx'); x=(sample(:,1)); y=(sample(:,2)); z=(sample(:,3)); k=sample(:,4); N=50; [X,Y]=meshgrid(linspace(min(x)-0.2, max(x)+0.2, N), linspace(min(y)-0.2, max(y)+0.2, N)); F = scatteredInterpolant(x, y, z); FF=scatteredInterpolant(x, y, k); Z= F(X,Y); ZZ=FF(X,Y); % 先绘制基础等高线 contour(X,Y,Z,'ShowText','on','Color','k') hold on % 自定义要填充的k值区间,可根据需求修改 k_low = 1; k_high = 3; % 生成区域掩码 fill_mask = (ZZ >= k_low) & (ZZ <= k_high); % 填充目标区域,灰色半透明阴影 Z_fill = Z; Z_fill(~fill_mask) = NaN; surf(X,Y,Z_fill,'FaceColor',[0.5 0.5 0.5],'EdgeColor','none','FaceAlpha',0.3); % 调整视角适配2D等高线 view(2)
参数调整说明
FaceAlpha参数取值范围为0~1,数值越小阴影越透明,可根据显示效果调整FaceColor参数为RGB三值数组,取值范围0~1,可自定义阴影颜色- 如需多区间填充不同样式,重复定义区间掩码和填充逻辑即可
内容的提问来源于stack exchange,提问作者amir1122
相关产品推荐
相关产品推荐

