Matlab绘图添加背景色,动态添加背景

Matlab绘图添加背景色,动态添加背景

有没有小伙伴想过绘制这种有背景的曲线图呢?因为矩形是背景,所以要先绘制,然后再绘制曲线,因此,最先想到的思路可能是:先绘制三个背景矩形,然后填充对应的颜色,设置透明度。接着在绘制曲线。弊端在于矩形的大小和位置需要根据曲线的绘制范围调节。并且注意,matlab的rectangle函数绘制的矩形无法设置透明度!!所以可以换个函数进行绘制矩形。下面用到的是fill函数。

有没有什么好的办法让他自动调节背景矩形大小呢?当然有!!!看我操作:

和前面的思路不同,因为矩形的大小是根据曲线范围调节的,所以必须先绘制曲线,然后再绘制矩形,那这样的话,曲线就在矩形背景后面了,被遮挡了,因此可以通过set函数进行前后层调节。当绘制了曲线,就可以通过get函数获取坐标轴范围,然后根据坐标轴范围进行矩形背景设置了。一个简要代码如下:

c 复制代码
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 StartTime+TransTimeTemp StartTime+TransTimeTemp],[YlabMmin YlabMmax YlabMmax YlabMmin],'r','FaceColor',[0.94,0.84,0.78],'EdgeColor','none','FaceAlpha',FaceAlpha);
RecS = fill([StartTime+TransTimeTemp StartTime+TransTimeTemp 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])  % 将曲线放在最前端

无论当你曲线范围怎么变化,背景矩形会跟着自动调节,这样就免去了手动调节矩形范围了!!!

相关推荐
玩电脑的辣条哥2 小时前
Python如何播放本地音乐并在web页面播放
开发语言·前端·python
ll7788115 小时前
LeetCode每日精进:20.有效的括号
c语言·开发语言·算法·leetcode·职场和发展
Jackson@ML6 小时前
Python数据可视化简介
开发语言·python·数据可视化
赵琳琅6 小时前
Java语言的云计算
开发语言·后端·golang
lly2024066 小时前
jQuery 杂项方法
开发语言
赵琳琅7 小时前
MDX语言的安全开发
开发语言·后端·golang
开开又心心的学嵌入式7 小时前
C语言——指针进阶应用
c语言·开发语言
开开又心心的学嵌入式7 小时前
C语言——指针基础知识
c语言·开发语言
lonelyhiker7 小时前
javascript的原型链
开发语言·javascript·原型模式
夏梓蕙8 小时前
Elixir语言的软件开发工具
开发语言·后端·golang