重庆门户网站华龙网,创建一个公司要多少钱,生成图片的网站,厚街网站建设报价Matlab绘图添加背景色#xff0c;动态添加背景 有没有小伙伴想过绘制这种有背景的曲线图呢#xff1f;因为矩形是背景#xff0c;所以要先绘制#xff0c;然后再绘制曲线#xff0c;因此#xff0c;最先想到的思路可能是#xff1a;先绘制三个背景矩形#xff0c;然后填…Matlab绘图添加背景色动态添加背景 有没有小伙伴想过绘制这种有背景的曲线图呢因为矩形是背景所以要先绘制然后再绘制曲线因此最先想到的思路可能是先绘制三个背景矩形然后填充对应的颜色设置透明度。接着在绘制曲线。弊端在于矩形的大小和位置需要根据曲线的绘制范围调节。并且注意matlab的rectangle函数绘制的矩形无法设置透明度所以可以换个函数进行绘制矩形。下面用到的是fill函数。 有没有什么好的办法让他自动调节背景矩形大小呢当然有看我操作 和前面的思路不同因为矩形的大小是根据曲线范围调节的所以必须先绘制曲线然后再绘制矩形那这样的话曲线就在矩形背景后面了被遮挡了因此可以通过set函数进行前后层调节。当绘制了曲线就可以通过get函数获取坐标轴范围然后根据坐标轴范围进行矩形背景设置了。一个简要代码如下
clc;clear all;close;
%% 准备数据
x 0:0.01:7;
y sin(x)x/3;
StartTime 1;
TransTimeTemp 2.5;
%% 绘图
figure(1)
linewidth 2;
l1 plot(x,y,linewidth,linewidth); % 绘制曲线
hold on
grid on
% 获取坐标轴范围
XlabRang get(gca,xlim); % 获取横坐标范围
XlabMmin XlabRang(1);
XlabMmax XlabRang(2);
YlabRang get(gca,ylim);
YlabMmin YlabRang(1);
YlabMmax YlabRang(2);% 绘制背景区域
FaceAlpha 0.5; % 背景
RecAcc fill([0 0 StartTime StartTime],[YlabMmin YlabMmax YlabMmax YlabMmin],r,FaceColor,[0.87,0.91,0.77],EdgeColor,none,FaceAlpha,FaceAlpha);
RecC fill([StartTime StartTime StartTimeTransTimeTemp StartTimeTransTimeTemp],[YlabMmin YlabMmax YlabMmax YlabMmin],r,FaceColor,[0.94,0.84,0.78],EdgeColor,none,FaceAlpha,FaceAlpha);
RecS fill([StartTimeTransTimeTemp StartTimeTransTimeTemp XlabMmax XlabMmax],[YlabMmin YlabMmax YlabMmax YlabMmin],r,FaceColor,[0.78,0.87,0.95],EdgeColor,none,FaceAlpha,FaceAlpha);% 最关键的 设置图像前后关系
set(gca,child,[l1 RecAcc RecC RecS]) % 将曲线放在最前端无论当你曲线范围怎么变化背景矩形会跟着自动调节这样就免去了手动调节矩形范围了