第5章 数据可视化——5.1 图形绘制

简介: 第5章 数据可视化——5.1 图形绘制

第5章  数据可视化


知识要点


在科学的研究体系中,将数学公式与数据表现在图表中,是展示符号的具体物理含义及大量数据的内在联系和规律的科学有效的方法。

MATLAB中可以绘制二维、三维和四维的数据图形,并且通过对图形的线型、颜色、标记、观察角度、坐标轴范围等属性的设置,将大量数据的内在联系及规律表现得更加细腻、完善。MATLAB提供众多的设备用图表来显示向量和矩阵,同时包括注释和打印这些图表。

MATLAB拥有大量简单、灵活、易用的二维和三维图形命令,并且用户可以在MATLAB程序中加入声音效果。本章将详细讲述MATLAB中的数据可视化技术。


学习要求

7b6267d5e6b83b4ff55ab042d6b55a05_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


5.1  图形绘制


基于由浅入深的原则,本节将从最简单的平面上的点的表示入手,逐步深入,由离散数据的表示到连续数据的表示,使得读者掌握其中规律。


5.1.1  离散数据及离散函数


一个二元实数标量对(x0 ,y0 )可以用平面上的点来表示,一个二元实数标量数组[(x1 ,y1 )(x2 ,y2 )…(xn ,yn )]可以用平面上的一组点来表示。对于离散函数Y=f(X),当X为一维标量数组[x1 ,x2 ,…,xn ]时,根据函数关系可以求出Y相应的一维标量[y1 ,y2 ,…,yn ]

当把这两个向量数组在直角坐标系中用点序列表示时,就实现了离散函数的可视化。当然,这些图形上的离散序列所反映的只是X所限定的有限点上或有限区间内的函数关系。应当注意的是,MATLAB是无法实现对无限区间内的数据的可视化的。


5-1:离散数据和离散函数的可视化。

创建M文件并命名为logfigure.m(同时存为ex5_01.m),利用M文件编辑器在M文件中输入:

clear all
X1 = [1 2 4 6 7 8 10 11 12 14 15 17 18 20];
Y1 = [1 2 4 6 7 8 10 10 8 7 6 4 2 1];           % 生成两个一维实数数组
figure(1)
plot(X1 , Y1 , 'o' , 'MarkerSize' , 15)
X2 = 1 : 20;
Y2 = log(X2);               % 根据log函数生成两个一维实数数组
figure(2)
plot(X2 , Y2 , 'o' , 'MarkerSize' , 15)

运行M文件,结果如图5-1所示。

e27de6a6f1cde9a0f1f4e37c9edd3f46_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

5-1  logfigure.m运行结果


5.1.2  连续函数


MATLAB中是无法画出真正的连续函数的,因此在实现连续函数的可视化时,首先必须将连续函数用在一组离散自变量上计算函数结果,然后将自变量数组和结果数组在图形中表示出来。

当然,这些离散的点还是不能表现函数的连续性的。为了更形象地表现函数的规律及其连续变化,通常采用以下两种方法:

1)对离散区间进行更细的划分,逐步趋近函数的连续变化特性,直到达到视觉上的连续效果。

2)把每两个离散点用直线连接,以每两个离散点之间的直线来近似表示两点间的函数特性。


5-2:连续函数的可视化。

创建M文件并命名为cosfigure.m(同时存为ex5_02.m),利用M文件编辑器在M文件中输入:

clear all
X1 = (0 : 12) * pi / 6;
Y1 = cos(3 * X1);
X2 = (0 : 360) * pi / 180;
Y2 = cos(3 * X2);
figure(1)
subplot(2,2,1);
plot(X1 , Y1 , 'o' , 'MarkerSize' , 3);
xlim([0 2 * pi])
subplot(2,2,2);
plot(X1 , Y1 , 'LineWidth' , 2);
xlim([0 2 * pi])
subplot(2,2,3);
plot(X2 , Y2 , 'o' , 'MarkerSize' , 3);
xlim([0 2 * pi])
subplot(2,2,4);
plot(X2 , Y2 , 'LineWidth' , 2);
xlim([0 2 * pi])

运行M文件,结果如图5-2所示。

c03844e697f1a8d10b39dfdb0bb029c1_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

5-2  cosfigure.m运行结果


5.1.3  图形绘制示例


5-3:设函数 y = x + sinx + ex,试利用MATLAB绘制该函数在x[-π,π]上的图像。

1)准备图形数据。用户需要选定数据的范围,选择对应范围的自变量,计算相应的函数值。根据要求,需要在命令行窗口中输入下列命令:

clear all
x = - pi : 0.01 : pi;
y = x + sin(x) + exp(x);

2)使用plot函数绘制图形,即在命令行窗口中输入下列命令:

plot(x , y)

得到的结果如图5-3所示。

4a800f2c5cc2406ea82ffb55b6553b2d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

5-3  绘制的函数图像

3)为了更好地观察各个数据点的位置,给背景设置网格线,同时采用空心圆圈来标记数据点,并将曲线的颜色设置成红色。因此,在命令行窗口中输入:

plot(x , y , '-ro')
grid on

得到的结果如图5-4所示。

d57b9309e934816c9ad4d8f610abfc38_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

5-4  添加网格线,修改曲线样式

4)给图形添加一些注释。为了进一步使图形具有可读性,用户还需要给图形添加一些注释,例如图形的名称、坐标轴的名称、图例及文字说明等。

例如本示例给图形取名为“y的函数图像x坐标轴和y坐标轴分别取名为“x”“y”;图例设置为“ y = x + sinx + ex。因此,需要在命令行窗口中输入:

title('y的函数图像');
xlabel('x');
ylabel('y');
legend('y = x + sinx + e^{x}');

得到的结果如图5-5所示。

4364e4ab22f0797778040f0cd665bd8b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

5-5  添加图形注释

5)图形的输出。完成图形的绘制和编辑之后,用户可以将图形打印或者在图形窗口的菜单栏中选择File→Save As命令,将图形保存成用户需要的格式。


5.1.4  图形绘制的基本步骤


通过5.1.3节的示例可以总结出,利用MATLAB绘制图形大致分为如下7个步骤:

1)数据准备。主要工作是产生自变量采样向量,计算相应的函数值向量。

2)选定图形窗口及子图位置。在默认情况下,MATLAB系统绘制的图形为figure.1figure.2……

3)调用绘图函数绘制图形,例如plot函数。

4)设置坐标轴的范围、刻度及坐标网格。

5)利用对象属性值或者图形窗口工具栏设置线型、标记类型及其大小等。

6)添加图形注释,例如图名、坐标名称、图例、文字说明等。

7)图形的导出与打印。


相关文章
|
11月前
|
资源调度 分布式计算 调度
【赵渝强老师】Yarn的资源调度策略
Yarn作为资源和任务调度平台,支持多个应用程序同时运行,如MapReduce、Spark和Flink等。Yarn的资源调度方式主要包括FIFO Scheduler(先来先服务)、Capacity Scheduler(容量调度)和Fair Scheduler(公平调度)。FIFO Scheduler按任务提交顺序调度;Capacity Scheduler通过队列管理资源,支持多租户共享;Fair Scheduler则根据任务权重动态分配资源,确保公平性。
648 8
|
存储 JSON 安全
Token验证技术文档
【7月更文挑战第6天】Token验证是现代Web应用中常见的安全措施,用于确保用户身份的合法性和请求的安全性。它基于令牌(Token)的概念,通过在客户端和服务端之间传递一个安全的、有时限的字符串来验证用户身份,替代传统的基于会话的认证机制。本文档旨在介绍一种基本的Token验证流程,并提供一个简单的代码示例,使用JSON Web Tokens (JWT) 实现这一过程。
1576 1
|
消息中间件 负载均衡 Kafka
【解密Kafka背后的秘密!】为什么Kafka不需要读写分离?深入剖析Kafka架构,带你一探究竟!
【8月更文挑战第24天】Apache Kafka是一款专为高效实时数据处理与传输设计的消息系统,凭借其高吞吐量、低延迟及可扩展性在业界享有盛誉。不同于传统数据库常采用的读写分离策略,Kafka通过独特的分布式架构实现了无需读写分离即可满足高并发需求。其核心包括Producer(生产者)、Consumer(消费者)与Broker(代理),并通过分区复制、消费者组以及幂等性生产者等功能确保了系统的高效运行。本文通过分析Kafka的架构特性及其提供的示例代码,阐述了Kafka为何无需借助读写分离机制就能有效处理大量读写操作。
159 2
|
11月前
|
搜索推荐 数据挖掘 API
淘宝商品API接口的对接及收益
淘宝商品API接口是淘宝开放平台提供的数据服务,支持商品搜索、详情、评价等功能,帮助开发者快速获取商品数据,提升用户体验,降低运营成本,增强市场竞争力,并支持数据分析和业务决策。对接流程包括注册账号、获取API密钥、阅读文档、编写请求代码、发送请求、解析数据、错误处理和日志记录等步骤。通过实际案例,如价格比较网站、库存管理工具、个性化推荐系统等,展示了API接口的应用价值。
388 5
|
11月前
|
人工智能 JavaScript 开发工具
Awesome Tools,程序员常用高效实用工具、软件资源精选,办公效率提升利器!
Awesome Tools,程序员常用高效实用工具、软件资源精选,办公效率提升利器!
274 0
|
Ubuntu 编译器 开发工具
如何根据自己的开发板型号下载和配置交叉编译链
【7月更文挑战第9天】为AMD64 Ubuntu配置ARM64开发板交叉编译环境: 1. 下载适配开发板的GCC,如rk3568用Linaro AArch64。 2. 将GCC置于`downloads`等目录。 3. 解压至`/opt/`,如`tar -xvf gcc-linaro-*.tar.xz -C /opt/`。 4. 编辑`~/.bashrc`添加`/opt/gcc-linaro/*/bin`至PATH。 5. 运行`source ~/.bashrc`激活环境变量。 6. 通过`aarch64-linux-gnu-gcc -v`验证安装。
521 0
|
消息中间件 设计模式 Java
聊聊 Kafka: Consumer 源码解析之 Rebalance 机制
聊聊 Kafka: Consumer 源码解析之 Rebalance 机制
802 0
|
JavaScript API PHP
不用SMTP实现联系表单提交后发送邮件到指定邮箱
构建网站时,联系表单可通过邮件API(如SendGrid、Mailgun、Amazon SES)或第三方自动化服务(Zapier、Integromat)无需SMTP发送邮件。这些服务提供API接口和自动化工作流程,简化邮件发送。例如,使用SendGrid API在Python中发送邮件涉及注册、获取API密钥并编写发送邮件的代码。同样,Zapier可作为表单提交的触发器,自动发送邮件。此外,后端脚本(如PHPMailer)也能实现这一功能,但需编写处理SMTP的代码。选择适合的方法能优化邮件发送流程。
|
Java Maven Spring
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)2
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)
2856 2
|
前端开发 JavaScript Java
Docker 极简入门教程,傻瓜都能看懂!
Docker 极简入门教程,傻瓜都能看懂!
631 0
Docker 极简入门教程,傻瓜都能看懂!