MATLAB绘图基础6:MATLAB绘图基础

news2025/1/9 16:26:56

参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。



6.MATLAB绘图基础
6.1 MATLAB绘图基本流程
% 1.创建图形窗口;
% 1.1 创建一个空白图形窗口;
figure;

% 1.2 创建一个带有指定标题的图形窗口;
figure('Name', '图形窗口');

% 1.3 创建一个具有指定标题、位置、大小的图形窗口;
% 位置参数:宽度800像素,高度600像素,放在屏幕左上角X=100,Y=100位置上;
figure('Name', '自定义窗口', 'Position', [100, 100, 800, 600]);

% 2.常用绘图函数;
% 2.1 plot函数:用于创建线图,展示数据的趋势;
% 2.2 scatter函数:用于创建散点图,显示数据点的分布和关系;
% 2.3 bar函数:用于绘制柱状图,用于比较不同类别的数据;
% 2.4 histogram函数:用于绘制直方图,用于显示数据分布的频率;

% plot函数示例:
x = 1:5;
y = [2, 4, 6, 8, 10];
plot(x, y, 'ro-');

% 3.添加标题和标签;
% 3.1 添加标题
title('2024年汽车销售额数据趋势');

% 3.2 添加标签
xlabel('时间(月份)');
ylabel('销售额(元)');

% 4.添加图例
legend('标签1', '标签2', '标签3', ...);

% legend函数示例:
x = 1:10;
y1 = 5*x + 10;
y2 = 4*x + 10;

plot(x, y1, 'ro-');
hold on;

plot(x, y2, 'bs-');

legend('函数y=5x+10', '函数y=4x+10');
xlabel('x');
ylabel('y');
title('不同函数的趋势变化图');

% 5.颜色映射
% 5.1 颜色映射:根据数据的数值或其他属性来为不同的数据点或区域分配不同的颜色,使其更具可读性;
% 5.2 内置颜色映射:MATLAB常见内置颜色映射,如:jet、hsv、hot、cool等;
% 5.3 自定义颜色映射:使用colormap函数进行自定义颜色映射;
% 颜色映射示例:
x = 1:10;
y = 5*x + 10;
clmY = y;

% colormap('jet');
% colormap('hsv');
% colormap('hot');
colormap('cool');
scatter(x, y, 100, clmY, 'filled')
colorbar;

xlabel('x');
ylabel('y');
title('x和y的关系图');

% 6.显示网格线
% 6.1 grid on命令
x = 1:10;
y = 5*x + 10;

plot(x, y, '--');

grid on;
xlabel('x');ylabel('y');
title('x和y的关系图');

% 6.2 自定义网格线样式
grid on;
grid minor;		% 使用grid函数自定义网格线样式;
set(gca, 'XGrid', 'on', 'YGrid', 'on', 'GridLineStyle', '--','MinorGridLineStyle', ':', 'GridColor', [0.7, 0.7, 0.7]);

% 7.保存图形
% 7.1 使用saveas函数保存图像;
x = 1:10;
y = 5*x + 10;
plot(x, y, 'ro-');

xlabel('x');
ylabel('y');
title('x和y的关系图');

% 保存到指定的位置;
saveas(gcf, 'D:\自动控制理论\MATLAB绘图\Images\ch05_05.png');

% 7.2 使用print函数保存图像;
x = 1:10;
y = 5*x + 10;
plot(x, y, 'ro-');

xlabel('x');
ylabel('y');
title('x和y的关系图');

dpi = 600;
imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch05_05.png';
print(imagePath, '-dpng', ['-r', num2str(dpi)]);
% ch06_01.m
clear;
clc;

% 生成数据,绘制图像,保存图像;
% 1.生成x,y数据;
x = 1:0.5:20;
y1 = 20 * x + 10;
y2 = x .* x;
y3 = 2 .* x .* x + 2 * x + 10;

% 2.绘制图像;
plot(x, y1, 'r:', x, y2, 'g-.', x, y3, 'b--');
set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);

% 3.添加图例;
legend('y1=20*x+10','y2=x*x','y3=2*x*x+2*x+10');

% 4.添加标题和标签;
xlabel('x值');ylabel('y值');
title('不同函数的关系曲线图');

% 5.保存图像;
dpi = 600;
imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_01.png';
print(imagePath, '-dpng', ['-r', num2str(dpi)]);

1

6.2 MATLAB子图和多图形
  • 创建子图

    % MATLAB中,使用subplot函数创建子图;
    % subplot函数允许在同一个图形窗口中划分多个子图区域,并在子图中绘制不同的图形或数据;
    % subplot函数语法:
    subplot(m, n, p)
    
    % 参数说明:
    % m:表示子图布局的总行数;
    % n:表示子图布局的总列数;
    % p:表示当前子图的位置,位置编号从左上角开始,按行从左到右,从上到下编号;
    % 子图1	子图2
    % 子图3	子图4
    
    % ch06_02.m
    clear;
    clc;
    
    % 创建子图基本示例:
    % 1.定义数据范围和函数关系;
    x1 = -4 * pi:0.01:4 * pi;
    y1 = sin(x1);
    
    x2 = -4 * pi:0.01:4 * pi;
    y2 = cos(x2);
    
    x3 = -4 * pi:0.01:4 * pi;
    y3 = sin(x3) + 2;
    
    x4 = -4 * pi:0.01:4 * pi;
    y4 = cos(x4) + 2;
    
    % 2.创建两行两列子图布局;
    subplot(2, 2, 1);
    
    % 3.使用plot函数进行绘图;
    plot(x1, y1, 'r');
    grid on;
    set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    
    % 4.标签、标题设置;
    xlabel('x1');
    ylabel('y1');
    title('函数y=sinx曲线图');
    
    subplot(2, 2, 2);
    plot(x2, y2, 'g');
    grid on;
    set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    xlabel('x2');
    ylabel('y2');
    title('函数y=cosx曲线图');
    
    subplot(2, 2, 3);
    plot(x3, y3, 'b');
    grid on;
    set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    xlabel('x3');
    ylabel('y3');
    title('函数y=sinx+2曲线图');
    
    subplot(2, 2, 4);
    plot(x4, y4, 'c');
    grid on;
    set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    xlabel('x4');
    ylabel('y4');
    title('函数y=cosx+2曲线图');
    
    % 5.高清保存图像;
    dpi = 600;
    imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_02.png';
    print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    

    2

    % ch06_03.m
    clear;
    clc;
    
    % 柱状图子图示例:
    % 1.创建示例数据;
    x1 = 1:10;
    y1 = [2, 4, 7, 11, 16, 22, 29, 37, 46, 56];
    
    x2 = 1:10;
    y2 = [5, 8, 14, 20, 30, 41, 53, 67, 84, 100];
    
    x3 = 1:10;
    y3 = [1, 2, 3, 5, 8, 13, 21, 34, 55, 89];
    
    x4 = 1:10;
    y4 = [50, 45, 40, 35, 30, 25, 20, 15, 10, 5];
    
    % 2.创建一个两行两列子图布局;
    subplot(2, 2, 1);
    bar(x1, y1, 0.6, 'b');      % 创建蓝色柱状图
    title('数据集1柱状图');
    
    subplot(2, 2, 2);
    bar(x2, y2, 0.6, 'g');      % 创建绿色柱状图
    title('数据集2柱状图');
    
    subplot(2, 2, 3);
    bar(x3, y3, 0.6, 'r');      % 创建红色柱状图
    title('数据集3柱状图');
    
    subplot(2, 2, 4);
    bar(x4, y4, 0.6, 'c');      % 创建青蓝色柱状图
    title('数据集4柱状图');
    
    % 3.高清保存图像;
    dpi = 600;
    imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_03.png';
    print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    

    3

  • 创建多图像

    % ch06_04.m
    clear;
    clc;
    
    % 使用figure函数创建多个图形窗口;
    % 1.定义数据范围和函数关系;
    x1 = -4 * pi:0.01:4 * pi;
    y1 = sin(x1);
    
    x2 = -4 * pi:0.01:4 * pi;
    y2 = sin(x2) + 2;
    
    x3 = -4 * pi:0.01:4 * pi;
    y3 = cos(x3) + 2;
    
    % 2.使用figure创建图形窗口;
    figure(1);
    plot(x1, y1, 'r');
    grid on;
    set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    
    % 3.标签、标题设置;
    xlabel('x1');
    ylabel('y1');
    title('函数y=sinx曲线图');
    
    % 4.高清保存图像;
    dpi = 600;
    imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_04_01.png';
    print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    
    figure(2);
    subplot(1, 2, 1);
    plot(x2, y2, 'g');
    grid on;
    set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    xlabel('x2');
    ylabel('y2');
    title('函数y=sinx+2曲线图');
    
    subplot(1, 2, 2);
    plot(x3, y3, 'b');
    grid on;
    set(findobj(get(gca,'Children'),'LineWidth',0.5),'LineWidth',1.5);
    xlabel('x3');
    ylabel('y3');
    title('函数y=cosx+2曲线图');
    
    dpi = 600;
    imagePath = 'D:\自动控制理论\MATLAB绘图\Images\ch06_04_02.png';
    print(imagePath, '-dpng', ['-r', num2str(dpi)]);
    

    5

    6

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【干货分享】基于SSM的体育场管理系统的开题报告(附源码下载地址)

中秋送好礼 中秋佳节将至,祝福大家中秋快乐,阖家幸福。本期免费分享毕业设计作品:《基于SSM的体育场管理系统》。 基于SSM的体育场管理系统的开题报告 一、课题背景与意义 随着全民健身理念的深入人心,体育场已成为广大师生和…

熟悉Kafka组成模块、Kafka消息提交的方式及优缺点

1. Kafka概念 1.1 Kafka组成模块 Kafka其实是一款基于发布与订阅模式的消息系统,如果按常理来设计,大家是不是把消息发送者的消息直接发送给消息消费者?但Kafka并不是这么设计的,Kafka消息的生产者会对消息进行分类,…

【LVI-SAM】激光雷达点云处理点云帧投影LIO-SAM 之ImageProjection实现细节

【LVI-SAM】激光雷达点云处理点云帧投影LIO-SAM 之ImageProjection实现细节 1. ImageProjection激光雷达点云预处理算法1.0 总结:1.1 功能概述:1.2 算法流程: 2. ImageProjection激光雷达点云预处理算法数学推倒3. ImageProjection激光雷达点…

安卓玩机工具------小米工具箱扩展工具 小米机型功能拓展

小米工具箱扩展版 小米工具箱扩展版 iO_Box_Mi_Ext是由晨钟酱开发的一款适用于小米(MIUI)、多亲(2、2Pro)、多看(多看电纸书)的多功能工具箱。该工具所有功能均可以免root实现,使用前&…

图解TCP三次握手|深度解析|为什么是三次

写在前面 这篇文章我们来讲解析 TCP三次握手。 TCP 报文段 传输控制块TCB:存储了每一个连接中的一些重要信息。比如TCP连接表,指向发送和接收缓冲的指针,指向重传队列的指针,当前的发送和接收序列等等。 我们再来看一下TCP报…

[高级人工智能 开放性调研] 近两年来[2022~2024]人工智能应用进展重要案例介绍

文章目录 [高级人工智能 开放性调研] 近两年来[2022-2024]人工智能应用进展重要案例介绍写在前面1. AIGC1.1 LLM | 大语言模型问答系统式的生成式AI文档解读——KimiChat代码生成——Cursor 1.2 AI绘画\视频生成 | Stable Diffusion | OpenAI SoraStable DiffusionOpenAI Sora …

模拟网络丢包常用方法以及工具

文章目录 背景常用方法代码实现使用方法测试代码 使用网络流量控制工具 常用工具Clumsy 背景 在软件开发过程中,经常需要模拟不同的网络环境来测试应用在不同条件下的表现。 这些模拟可以采用多种方式进行,包括在代码中实现随机丢包、随机延时、乱序&am…

《JavaEE进阶》----12.<SpringIOCDI【扫描路径+DI详解+经典面试题+总结】>

本篇博客主要讲解 扫描路径 DI详解:三种注入方式及优缺点 经典面试题 总结 五、环境扫描路径 虽然我们没有告诉Spring扫描路径是什么,但是有一些注解已经告诉Spring扫描路径是什么了 如启动类注解SpringBootApplication。 里面有一个注解是componentS…

【Leetcode152】乘积最大子数组(动态规划)

文章目录 一、题目二、思路三、代码 一、题目 二、思路 (0)读懂题意:题目的“连续”是指位置的连续,而不是说数字的连续,这是个大坑。 (1)确定状态:定义两个状态来记录当前子数组的…

Windows本地制作nginx证书

OpenSSL 是一个用于生成和管理 SSL/TLS 证书的工具。下载并安装 OpenSSL Select Additional Tasks页面勾选 The OpenSSL binaries (/bin) directory 将OpenSSL的bin目录配置到path中 开命令提示符(cmd)或 PowerShell。运行以下命令生成一个新的私钥和自…

哈希表的封装和位图

文章目录 2 封装2.1 基础框架2.2 迭代器(1)2.3 迭代器(2) 3. 位图3.1 问题引入3.2 左移和右移?3.3 位图的实现3.4 位图的题目3.5 位图的应用 2 封装 2.1 基础框架 文章 有了前面map和set封装的经验,容易写出下面的代码 // UnorderedSet.h #pragma on…

WireShark抓包软件介绍和安装

文章目录 一、WireShark软件介绍1. **概述**2. **主要功能**3. **使用场景**4. **安装和使用**5. **优点和限制**6. **结论** 二、WireShark的安装三、WireShark的基本使用1. **混杂模式(Promiscuous Mode)****概述****工作原理****应用场景****启用方式…

STM32F407VET6开发板RT-Thread memheap 内存堆的适配

相关文章 STM32F407VET6开发板RT-Thread的移植适配 STM32F407VET6开发板RT-Thread MSH 串口的适配 环境 STM32F407VET6 开发板(魔女),http://www.stm32er.com/ Keil MDK5,版本 5.36 memheap 内存堆 RT-Thread 支持 memheap …

数据结构基础讲解(二)——线性表之单链表专项练习

本文数据结构讲解参考书目: 通过网盘分享的文件:数据结构 C语言版.pdf 链接: https://pan.baidu.com/s/159y_QTbXqpMhNCNP_Fls9g?pwdze8e 提取码: ze8e 上一节我讲了线性表中顺序表的定义以及常用的算法,那么这节我将继续讲解顺序表中的链式…

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们…

数据结构基础详解(C语言): 树与二叉树的应用_哈夫曼树与哈夫曼曼编码_并查集_二叉排序树_平衡二叉树

文章目录 树与二叉树的应用1.哈夫曼树与哈夫曼曼编码1.1 带权路径长度1.2 哈夫曼树1.2.1 哈夫曼树的构造1.3 哈夫曼编码 2.并查集2.1 并查集的三要素2.1.1 并查集的逻辑结构2.1.2 并查集的存储结构 2.2 并查集的优化2.2.1 初步优化(并操作优化)2.2.2 终极…

flink wordcount

Maven配置pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

mybatis-plus使用@EnumValue搭配shardingsphere报错“getObject with type”

目录 一、背景二、修改方案三、如何让修改的TypeHandler生效1、在TableField中配置TypeHandler2、考虑直接在TypeHandlerRegistry注册该枚举的handler为自定义的handler处理类。3、不止重写MybatisEnumTypeHandler&#xff0c;还重写CompositeEnumTypeHandler类3.1、修改Compos…

【WPF】桌面程序开发之xaml页面主题和样式详解

使用Visual Studio开发工具&#xff0c;我们可以编写在Windows系统上运行的桌面应用程序。其中&#xff0c;WPF&#xff08;Windows Presentation Foundation&#xff09;项目是一种常见的选择。然而&#xff0c;对于初学者来说&#xff0c;WPF项目中xaml页面的布局设计可能是一…

Bat的退役前

我们很讨厌bat 语法这版的命令形式后缀尽管古老&#xff0c;可是在涉及细微VS 项目op 时候&#xff0c;它起到了不可忽视且非它不行的效应 我们不想替历史背上厚重的学习包袱&#xff0c;可是我们能忽视BAT 吗 如若进入到 无window时代&#xff0c;我们几乎得全然依仗BAT专家。…