MATLAB绘图技巧-多边形区域填充图

MATLAB绘图技巧-多边形区域填充图

======以下内容来自:科学网—MATLAB绘图技巧-多边形区域填充图 - 彭真明的博文 (sciencenet.cn)====START===========

       为了突出某个区域或局部数据的特性,便于数据的可视化和解释,常需要绘制二维区域填充图。MATLAB提供了三种类型的用于二维图形区域填充的绘图函数,具体是area函数、fill函数和patch函数。

       area函数是Y数值对 x 坐标围成的面积图,该函数根据Y的形状填充曲线之间的区域。

       fill函数是创建二维填充补片,即填充多边形区域绘制为补片,其顶点位于由X和Y指定的(x,y)位置,主要用于平面中多个区域的颜色填充。

       patch函数是创建彩色多边形的补片,即将X和Y指定为每个顶点的坐标来创建一个或多个彩色多边形补片,主要用于平面中多边形的颜色填充。patch与fill函数功能和用法类似。

以下给出3个具体绘图示例:

会用到的坐标轴修饰函数代码如下:

%会用到的坐标轴修饰函数代码如下:

function defualtAxes
  ax=gca; hold on; box on

  ax.XGrid='on';

  ax.YGrid='on';

  ax.XMinorTick='on';

  ax.YMinorTick='on';

  ax.LineWidth=1.2;

  ax.GridLineStyle=':';

  %ax.FontName='Cambria';

  ax.FontSize=12;

  ax.GridAlpha=.5;

end

Demo 1 完整代码如下:

clc; clear; close all;

% Demo 1
% ------------------------
% 加载数据
x = linspace(-8,12,100);
y1 = normpdf(x,4,6);  % Normal probability density function
y2 = normpdf(x,0,1).*0.5+normpdf(x,4,2).*0.5;
y3 = normpdf(x,-3,2);
y = [y1;y2;y3];

% 预设颜色
c = [184 194 140; 201 226 240; 250 181 157]./255; % Three colors


% 绘图
x = linspace(-8,12,100);
y1 = normpdf(x,4,6);% Normal probability density function
y2 = normpdf(x,0,1).*0.5+normpdf(x,4,2).*0.5;
y3 = normpdf(x,-3,2);
y = [y1;y2;y3];

for i=1:size(y,1)
area(x,y(i,:),'FaceColor',c(i,:),'EdgeColor','none','FaceAlpha',0.5); hold on
end

% 坐标轴
xlabel('x/Samples'),ylabel('y/Value')
legend({'- Area No.1','- Area No.2','- Area No.3'})
set(gca,'XLim',[-8 12]);

% 修饰
defualtAxes
% ------------------------

        如果填充过程要区分正负值,那么需要做出相应的零交叉点的判断,从而确定颜色的填充模式,这样就比较复杂。

        一种简单的做法是,首先将数据拆分成正负两个序列,分别绘制填充图,这样实现起来就变得很简单了,不需要复杂的判断。

Demo 2 完整代码如下:

%完整代码如下:
% Demo 2
%--------------------
load('plotData.mat');

y = data';

y = y(1,:)-10; % 产生正负值

x = linspace(0,10,length(y));

y1 = y; y1(y1<0)=0; % Negative value

y2 = y; y2(y2>0)=0; % Positive value

figure

area(x,y1,'FaceColor','r','EdgeColor','r','FaceAlpha',0.6); hold on

area(x,y2,'FaceColor','b','EdgeColor','b','FaceAlpha',0.6);

xlabel('x-axis/Samples'),ylabel('y-axis/Intensity value')

set(gca,'FontName','Times New Roman','FontSize',12)

legend({'- Positive value area','- Negative value area'})

set(gcf,'Color','White');  % Background is white


% 修饰
defualtAxes

%--------------------

       以上area函数主要针对与坐标轴围成的区域的填充,如果需要对图形窗口内任意闭合区域或多边形区域及进行填充,则需要用到fill和patch函数。

          因为,这两个函数功能和用法类似,它们的基本用法MATLAB帮助文件均有详细说明。以下以fill函数为例,用一个稍复杂的应用为例进行说明。

         首先,我们产生一条含随机噪声的Bessel分布数据。然后,对其进行多项式拟合,绘制拟合误差范围的置信度区间。

       那么,只有一条曲线如何构成闭合区域?

        我们可以按精度范围扩大y轴的数值范围,对应的x坐标从end端折回起始端,这样就形成了一个闭合曲线,也正包含了数据范围的闭环区域。

Demo 3 完整代码如下:

%完整代码如下:
% Demo 3
%-------------------
x = 0 : 0.2 : 10;

y = besselj(0, x);% Bessel 函数

y = y+0.8*rand([1,length(x)]);

% 多项式拟合
[p,S] = polyfit(x,y,3);
[y_fit, delta] = polyval(p,x,S); % delta 标准误差估计值

%绘制原始数据、线性拟合及95%预测区间 y±2Δ
uy = y_fit+2*delta;
dy = y_fit-2*delta;

figure
% 绘制原始数据
plot(x,y,'rx','LineWidth',1.5)
hold on

%绘制拟合曲线
plot(x,y_fit,'Color',[0 1 1],'LineWidth',1.5)
hold on

%绘制置信区间
xconf = [x x(end:-1:1)] ;% x坐标回转形成闭合区域

yconf = [uy dy(end:-1:1)]; % 扩大数据区间

c2 = [182,100,199]./255;

plot([x',x'],[uy',dy'],'Color',c2,'LineWidth',1.2,'LineStyle','--')

fill(xconf, yconf,'k','FaceColor',c2,'EdgeColor','none','FaceAlpha',0.1);

xlabel('x-axis/Samples'),ylabel('y-axis/Intensity value')

set(gca,'FontName','Times New Roman','FontSize',12)

legend({'- Data','- Linear fit','- 95% Prediction Interval'})

set(gcf,'Color','White');  % Background is white

% 修饰
defualtAxes

%--------------------

Demo3的实现代码中,用patch替换fill函数,也会得到基本一致的图形显示结果。

参考来源:

[1] MATLAB绘图技巧-颜色渐变折线图

[2] MATLAB绘图技巧-折线图绘制

[2] MATLAB绘图技巧-颜色渐变柱状图绘制

======以上内容来自:科学网—MATLAB绘图技巧-多边形区域填充图 - 彭真明的博文 (sciencenet.cn)====END=============

%绘制正态概率密度函数对应的填充图
figure
x1 = [ -8 : 0.2 : 8 ];
y1 = 2 * exp( -( x1 ).^2 / 2 );
fill( x1, y1, 'b' )
hold on
%绘制非对称区间上正态概率密度函数对应的填充图
x2 = [ 1: 0.1 : 10 ];
y2 = -2 * exp( -( x2 - 2  ).^2 / 2 );
fill( x2, y2, 'r' )
title( ' fill demo ' )
figure
x3 = [ 1 : 0.5 : 5 ];
y3 = x3.^2;
c = [ randn(length(x3), 1) ];%颜色矩阵,可以根据自己的需要指定
fill( x3, y3, c )
hold on
y4 = -x3.^2;
fill( x3, y4, 'c' )%此处的c是青色
title( 'color matris fill demo' )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/730603.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

成都晨持绪科技:2024年抖音网店做起来难吗

随着抖音平台的日益火爆&#xff0c;越来越多的商家和个人开始关注并尝试开设自己的抖音网店。然而&#xff0c;面对激烈的市场竞争和不断变化的平台规则&#xff0c;许多人都在问&#xff1a;2024年抖音网店做起来难吗? 要回答这个问题&#xff0c;我们首先需要了解抖音网店的…

百度地图上设置挖空效果的电子围栏

公司项目有个需求是要在百度地图上设置电子围栏,电子围栏很简单嘛,就是一个覆盖物就能搞定了,然而UI又在搞事情,设计的效果图中电子围栏外卖填充颜色,电子围栏内不填充颜色。 最后我还是写出了这个效果,浅浅的复盘一下: 狗狗太可爱了给他用电子围栏描个边边 我是怎么…

Kimi还能对学术论文进行润色?我来教你!

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 一、引言 在学术界&#xff0c;论文的质量往往决定了研究的可信度和影响力。Kimi作为一款人工智能助手&#xff0c;可以为学术论文的润色提供有效的帮助。本文将详细介绍如何利用Kimi进…

GD32学习

参考视频13.立创开发板GD32教程&#xff1a;串口配置_哔哩哔哩_bilibili 固件库跟用户手册基本上差不多&#xff0c;只不过用用户手册编写程序的话会更加的底层&#xff0c;固件库的话就是把一些函数封装起来&#xff0c;用的时候拿过来即可&#xff0c;目前我还没有找到固件库…

代码评审——Java占位符%n的处理

问题描述 在软件开发项目中&#xff0c;特别是在处理动态内容生成与呈现至前端界面的过程中&#xff0c;正确运用占位符以确保文本完整性和数据准确性显得尤为重要。不当的占位符管理不仅可能导致语法错误或逻辑混乱&#xff0c;还会引发一系列隐蔽的问题&#xff0c;这些问题…

VScode安装与汉化

VScode安装与汉化 文章目录 VScode安装与汉化一、软件安装方法一&#xff1a;网站下载方法二&#xff1a;直接用安装包下载 二、汉化方法一&#xff1a;&#xff08;个人感觉繁琐&#xff09;方法二&#xff1a;&#xff08;用这个&#xff09; Tips&#xff1a;禁用自动更新开…

webp动图转gif

目录 前言 解决过程 遇到问题 获取duration 前言 上一次我们实现了webp转jpg格式&#xff1a; https://blog.csdn.net/weixin_54143563/article/details/139758200 那么对于含动图的webp文件我们如何将其转为gif文件呢&#xff1f; 之所以会出现这个问题&#xff0c;是因…

AI赋能前端:你的Chrome 控制台需要AI(爱)

像会永生那样去学习,像明天就要死亡那样去生活。——圣雄甘地 大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder 此篇文章所涉及到的技术有 AI(Gemini)ChromeDevTool🪜魔法接码平台因为,行文字数所限,有些概念可能会一带而过亦或者提供对应的学习…

可一件转化的视频生成模型:快手官方大模型“可灵”重磅来袭!

可一件转化的视频生成模型“可灵”重磅来袭&#xff01; 前言 戴墨镜的蒙娜丽莎 达芬奇的画作《蒙娜丽莎的微笑》相信大家是在熟悉不过了&#xff0c;可《戴墨镜的蒙娜丽莎》大家是不是第一次见&#xff1f;而且这还不是以照片的形式&#xff0c;而是以视频的形式展示给大家。 …

gstreamer+qt5实现简易视频播放器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、安装环境1.QT52.gstreamer 二、代码1.Windows实现 三、测试效果总结 前言 最近在研究mpp&#xff0c;通过gstreamer实现了硬解码&#xff0c;但是我在想我…

CVPR 2024第三弹:李飞飞教授惊喜亮相,CVPR之家乐队火爆演奏惊艳全场

CVPR 2024第三弹&#xff1a;小编与李飞飞教授惊喜同框&#xff0c;"CVPR之家"乐队火爆演奏惊艳全场&#xff01; 会议之眼 快讯 2024 年 CVPR &#xff08;Computer Vision and Pattern Recogntion Conference) 即国际计算机视觉与模式识别会议&#xff0c;于6月1…

CAC 2.0融合智谱AI大模型,邮件安全新升级

在数字化时代&#xff0c;电子邮件的安全问题日益成为关注的焦点。Coremail CACTER邮件安全人工智能实验室&#xff08;以下简称“CACTER AI实验室”&#xff09;凭借其在邮件安全领域的深入研究与创新实践&#xff0c;不断推动技术进步。 此前&#xff0c;CACTER AI实验室已获…

任务4.8.3 利用SparkSQL统计每日新增用户

实战概述&#xff1a;利用SparkSQL统计每日新增用户 任务背景 在大数据时代&#xff0c;快速准确地统计每日新增用户是数据分析和业务决策的重要部分。本任务旨在使用Apache SparkSQL处理用户访问历史数据&#xff0c;以统计每日新增用户数量。 任务目标 处理用户访问历史数…

Apifox 中如何处理加密或编码过的响应数据?

接口返回的响应数据有时是经过编码或加密处理的&#xff0c;要转换成可读的明文&#xff0c;可以使用 Apifox 内置的 JS 类库、或者通过调用外部编程语言 &#xff08;如 Python、JavaScript 等&#xff09; 来进行处理。 例如&#xff0c;一个经过 Base64 编码的数据可以通过…

vue2与vue3数据响应式对比之检测变化

vue2 由于javascript限制&#xff0c;vue不能检测数组和对象的变化 什么意思呢&#xff0c;举例子来说吧 深入响应式原理 对象 比如说我们在data里面定义了一个info的对象 <template><div id"app"><div>姓名: {{ info.name }}</div><…

本地部署Ollama+qwen本地大语言模型Web交互界面

什么是 Ollama WebUI&#xff1f; Ollama WebUI 已经更名为 Open WebUI. Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI&#xff0c;旨在完全离线操作。它支持各种 LLM 运行程序&#xff0c;包括 Ollama 和 OpenAI 兼容的 API。 Ollama WebUI 是一个革命性的 L…

复盘最近的面试

这个礼拜一直在面试&#xff0c;想着看看能否拿到不错的offer前去实习&#xff0c;从周一到周四&#xff0c;面了将近10家&#xff0c;特整理此份面经&#xff0c;希望对秋招的各位有所帮助 A公司 一面 面试官人很好&#xff0c;我回答的时候不会他会笑笑然后提醒我 自我介绍~…

2024软考系规考前复习20问!看看你能答上来多少

今天给大家整理了——2024系统规划与管理师考前20问&#xff0c;这是一份很重要的软考备考必看干货&#xff0c;包含很多核心知识点。有PDF版&#xff0c;可打印下来&#xff0c;过完一遍教材后&#xff0c;来刷一刷、背一背&#xff0c;说不定可以帮你拿下不少分。 第1问- 信息…

怎么用二维码在线下载视频?视频用二维码下载的制作方法

怎么把视频转换成二维码之后还可以下载视频呢&#xff1f;现在使用二维码的方式来分享视频内容在很多行业和场景中都有应用&#xff0c;这种方式能够更加简单快捷的完成视频的传播分享&#xff0c;那么怎么让扫码者可以自由选择下载视频呢&#xff1f;下面来给大家分享扫码下载…

STM32小项目———感应垃圾桶

文章目录 前言一、超声波测距1.超声波简介2.超声波测距原理2.超声波测距步骤 二、舵机的控制三、硬件搭建及功能展示总结 前言 一个学习STM32的小白~ 有问题请评论区或私信指出 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、超声波测距 1.超声波…