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

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 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])  % 将曲线放在最前端

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

### 如何在 MATLAB GUI 中实现渐变色效果 对于希望在MATLAB GUI中应用渐变色的情况,可以通过自定义绘图函数来创建具有渐变色彩的对象。由于MATLAB本身不直接支持GUI组件上的渐变填充,因此通常的做法是利用`patch`对象或其他图形处理技术模拟这种效果。 #### 使用 `patch` 对象创建线性渐变背景 下面是一段简单的代码片段用于生成带有水平方向上由红到蓝变化的颜色过渡矩形作为窗口背景: ```matlab function createGradientBackground() figure('Color', 'w'); % 创建一个新的白色底色的Figure % 定义颜色范围 (红色至蓝色) colors = linspace(0, 1, 256); % 绘制一系列垂直排列的小条带形成渐变效果 hold on; for idx = 1:length(colors)-1 patch([0 1 1 0], ... [idx-1 idx-1 idx idx], ... [colors(idx) zeros(1,4) colors(idx+1)],... 'EdgeColor','none',... 'FaceAlpha',1,... 'CDataMapping','scaled'); end axis off; % 关闭坐标轴显示 end ``` 此脚本通过调整每个小条带的颜色属性,在整个区域内实现了平滑的颜色转换[^1]。 ### 设置 MATLAB GUI 的背景图片 要为MATLAB GUI设置背景图片,最常用的方式之一是在启动时加载一张位图并将其设为当前figure窗口的内容。这可以通过读取图像文件并将之设定给figure的`'CurrentAxes'`属性下的image对象完成。 以下是具体操作步骤对应的示例代码: ```matlab % 加载背景图片 bgImage = imread('path_to_your_image_file.jpg'); % 打开新的Figure窗口,并隐藏默认边框 hFig = figure('MenuBar','none','ToolBar','none',... 'NumberTitle','off','Name','My App with Background Image',... 'Position',[100 100 size(bgImage,2) size(bgImage,1)]); % 将图片放置在整个Figure内 axes('Parent', hFig,'Units','normalized','Position',[0 0 1 1]); imshow(bgImage,'Parent',gca); axis image tight; set(gca,'Visible','off') ; % 隐藏坐标系边界 ``` 这段代码展示了如何将一幅JPEG格式的照片作为应用程序界面的基础层,使得后续添加的各种控件都能覆盖在其之上工作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuntou0906

玛莎拉蒂是我的目标!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值