第5章 数据可视化——5.2 二维图形绘制(4)

简介: 第5章 数据可视化——5.2 二维图形绘制(4)

5.2  二维图形绘制(4)


5.2.12  特殊坐标轴绘图


前几节介绍了基本的二维绘图函数的使用,但其中无论是直角坐标系还是极坐标系,用到的坐标轴的刻度均是线性刻度。但是在很多实际情况中,数据都出现指数型的变化规律,这时如果再用线性刻度来描述曲线,则处于低次幂的部分数据无法清晰地表现出来。当然,利用5.2.9节中提到的双坐标轴绘图,对指数数据进行局部放大,则可以解决这个问题。但是在MATLAB中,还有更加简便的方式。本节介绍3个函数来解决对数数据的问题,分别是semilogx函数、semilogy函数和loglog函数。


1semilogx函数


semilogx函数的调用格式与plot函数基本相同,此处不再赘述每一个句法的功能。

● semilogx(Y)

● semilogx(X1,Y1,X2,Y2,…)

● semilogx(X1,Y1,LineSpec1,X2,Y2,LineSpec2,…)

● semilogx(…,'PropertyName ',PropertyValue,…)

在利用semilogx函数绘制图形时,x轴采用对数坐标。若没有指定使用的颜色,当所画线条较多时,semilogx函数将自动使用由当前的ColorOrderLineStyleOrder属性所指定的颜色顺序和线型顺序来绘制线条。


5-20semilogx函数与plot函数对比示例。

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

clear all
x = 10 .^ (0.1 : 0.1 : 4);
y = 1 ./ (x + 1000);
figure
subplot(1,2,1);
semilogx(x, y, '+', 'MarkerSize', 5, 'LineWidth', 2);
title('y=(x+1000)^{-1}')
subplot(1,2,2);
plot(x, y, '+', 'MarkerSize', 5, 'LineWidth', 2);
title('y=(x+1000)^{-1}')

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

16f96ea050a91ca9fe406df6799172d7_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

5-22  logx.m运行结果


2semilogy函数


semilogy函数的调用格式与semilogx函数相同,在绘制图形时,y轴采用对数坐标。若没有指定使用的颜色,当所画线条较多时,semilogy函数将自动使用由当前的ColorOrderLineStyleOrder属性所指定的颜色顺序和线型顺序来绘制线条。


3loglog函数


loglog函数的调用格式与semilogx函数相同,在绘制图形时,x轴与y轴均采用对数坐标。


5-21loglog函数与plot函数对比示例。

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

clear all
a = 0.1 : 0.1 : 5;
x = log10(a);
y = 10 .^ a;
figure
subplot(1,2,1);
loglog(x, y, '+', 'MarkerSize', 5, 'LineWidth', 2);
title('lgy = 10^x')
subplot(1,2,2);
plot(x, y, '+', 'MarkerSize', 5, 'LineWidth', 2);
title('lgy = 10^x')

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

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

5-23  logxlogy.m运行结果


5.2.13  二维特殊图形函数


MATLAB中,除了可以通过plot函数等绘制图形,还可以通过一些函数绘制柱状图、饼状图等特殊图形。常见的二维特殊图形函数如表5-14所示。

5-14  二维特殊图形函数

函数名

说明

area

填充绘图

bar

条形图

barh

水平条形图

comet

彗星图

errorbar

误差带图

ezplot

简单绘制函数图

ezpolar

简单绘制极坐标图

feather

矢量图

fill

多边形填充

gplot

拓扑图

compass

feather功能类似的矢量图

fplot

函数绘制

hist

条形直方图

pareto

Pareto

pie

饼图

plotmatrix

分散矩阵绘制

ribbon

三维图的二维条状显示

scatter

散点图

stem

离散序列火柴杆状图

stairs

阶梯图

rose

极坐标系下的柱状图

quiver

向量场


5-14中的函数均有不同的调用方法,下面通过示例向读者介绍其中几个常用的函数,其他函数的使用方法可以查阅MATLAB的在线帮助。


1bar函数

bar函数用于绘制二维垂直条形图,用垂直条形显示向量或矩阵中的值。其调用格式如下。

● bar(y):为每一个y中的元素画一个条状。

● bar(x,y):在指定的横坐标x上画出y,其中x为严格单增的向量。若y为矩阵,则bar把矩阵分解成几个行向量,在指定的横坐标处分别画出。

● bar(...,'bar_color ')“bar_color”定义条的颜色。

● bar(axes_handle,...):将图形绘制到坐标轴句柄axes_handle中,而不是当前坐标轴句柄中。


5-22:创建二维垂直条形图示例。

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

clear all
y = [75.995 91.972 105.711 123.203 131.669 ...
    150.697 179.323 203.212 223.505 249.633 281.422];
figure;
bar(y);

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

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

5-24  verticalbar.m运行结果


5-23:二维直方图有两种类型:垂直直方图和水平直方图。而每种类型又有两种表现模式:累计式和分组式。本例选择其中两种加以表现。

创建M文件并命名为ex5_23.m,利用M文件编辑器在M文件中输入:

clear all
x = -2 : 2;
Y = [6 8 7 4 5;4 8 1 12 0;4 6 21 1 3];
subplot(1,2,1),bar(x', Y', 'stacked')
xlabel('x'), ylabel('\Sigma y'), colormap(cool)
legend('因素1', '因素2', '因素3')
subplot(1,2,2),barh(x', Y', 'grouped')
xlabel('y'), ylabel('x')

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

8c65db9dead89e720ed2b6a5bf3680bb_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

5-25  垂直直方图和水平直方图运行结果


2pie函数


pie函数用于绘制饼图,其调用格式如下。

● pie(x):绘制参数x的饼图。

● pie(x,explode)explode是与x同维的矩阵,若其中有非零元素,则x矩阵中相应位置的元素在饼图中对应的扇形将向外移出一些,加以突出。

● pie(...,labels)labels用于定义相应块的标签。

● pie(axes_handle,...):将图形绘制到坐标轴句柄axes_handle中,而不是当前坐标轴句柄中。

● h=pie(...):返回绘制的饼图相关的句柄。


5-24:创建二维饼图和三维饼图示例。

创建M文件并命名为ex5_24.m,利用M文件编辑器在M文件中输入:

clear all
x = [1 5 0.5 3.5 2];
explode = [0 1 0 1 0];
subplot(1,2,1)
pie(x, explode)
colormap jet
title('二维饼图')
subplot(1,2,2)
pie3(x, explode)
colormap hsv
title('三维饼图')

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

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

5-26  二维饼图和三维饼图程序运行结果


3hist函数

hist函数用于绘制条形直方图,可以显示出数据的分布情况。所有向量y中的元素或者矩阵Y的列向量中的元素是根据它们的数值范围来分组的,每一组作为一个条形进行显示。条形直方图中的x轴反映了数据y中元素数值的范围,直方图的y轴显示出参量y中的元素落入该组的数目。其调用格式如下。

● n=hist(y):把向量y中的元素放入等距的10个条形中,且返回每一个条形中的元素个数。若y为矩阵,则该命令按列对y进行处理。

● n=hist(y,x):参量x为向量,把y中元素放到mm=length(x))个由x中元素指定的位置为中心的条形中。

● n=hist(y,nbins):参量nbins为标量,用于指定条形的数目。

● [n,xout]=hist(...):返回向量n与包含频率计数与条形的位置向量xout,用户可以用命令bar(xout,n)画出条形直方图。

● hist(...):生成直方图,但不产生输出。

● hist(axes_handle,...):将图形绘制到坐标轴句柄axes_handle中,而不是当前坐标轴句柄中。


5-25:绘制直方图示例。

创建M文件并命名为ex5_25.m,利用M文件编辑器在M文件中输入:

clear all
x = -4 : 0.1 : 4;
y = randn(5000, 1);
hist(y, x)
title('直方图')

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

13b0277ab0c417bb17629f33335ad60a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

5-27  直方图程序运行结果


4scatter函数


scatter函数用于绘制散点图,其调用格式如下。

● scatter(x,y):以xy的值为横、纵坐标,绘制散点图。


5-26:绘制散点图示例。

创建M文件并命名为ex5_26.m,利用M文件编辑器在M文件中输入:

clear all;
figure;
x = [1 5 6 7 9 5 1 3 12 20];
y = [20 15 6 3 1 5 3 0 1 5];
subplot(1,2,1);
scatter(x, y);
subplot(1,2,2);
scatter(x, y, 'r', 'fill');

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

283cd4bd59f3261abf7a20da638e5cc9_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

5-28  散点图程序运行结果


相关文章
|
XML 数据格式 Python
旋转标注工具roLabelImg使用教程
旋转标注工具roLabelImg使用教程
旋转标注工具roLabelImg使用教程
|
4月前
|
人工智能 弹性计算 API
阿里云部署龙虾OpenClaw,新手零门槛保姆级教程!
2026年爆火开源AI“龙虾”OpenClaw,不止聊天,更能自动操作电脑、处理文件、浏览网页!本教程手把手教你零代码在阿里云一键部署,5分钟注册+3步配置,新手也能轻松拥有专属“数字员工”。
6141 4
|
5月前
|
SQL 关系型数据库 数据挖掘
PostgreSQL窗口函数从入门到实操
PostgreSQL窗口函数是数据分析利器:统计不丢行、细节全保留!本文用大白话讲透核心概念(分区/排序/窗口帧),配可运行示例,带你零基础掌握排名、移动平均、累积求和等高频场景,学完即用。
|
6月前
|
人工智能 自然语言处理 运维
业内首发泛娱乐底座大模型!元象开源XVERSE-Ent中英双模型,单卡部署超低门槛
元象开源首款聚焦泛娱乐场景的大模型XVERSE-Ent,含中英双版本,专精角色一致性、长剧情理解与多元语境适配,支持轻量化部署,助力开发者低成本打造AI社交、游戏与创意内容应用。
593 3
|
8月前
|
存储 自然语言处理 安全
有没有免费的Agent工具推荐?2025年全攻略:从入门到精通,这篇就够了
面对重复工作、效率低下与预算不足,AI Agent工具成了解决职场痛点的新选择。本文实测推荐10款真正免费、安全好用的Agent工具,覆盖企业自动化、开发编程、内容创作等全场景,帮你打破“免费=鸡肋”偏见,轻松提升效率,零成本开启智能办公新时代。
2767 5
|
算法 区块链 数据安全/隐私保护
加密算法:深度解析Ed25519原理
在 Solana 开发过程中,我一直对 Ed25519 加密算法 如何生成公钥、签名以及验证签名的机制感到困惑。为了弄清这一点,我查阅了大量相关资料,终于对其流程有了更清晰的理解。在此记录实现过程,方便日后查阅。
1587 0
|
传感器 机器学习/深度学习 算法
Isaac Sim教程01 Isaac Sim介绍
这篇文章是Isaac Sim的入门教程,介绍了NVIDIA Omniverse平台上的Isaac Sim机器人仿真工具包。内容包括Isaac Sim的背景、特点、应用场景、架构和工作流程,以及近期的更新情况。Isaac Sim支持物理精确的仿真和合成数据集的创建,与ROS/ROS2兼容,并能模拟多种传感器数据,适用于机器人导航、操作应用、计算机视觉研究和数据集生成等多种场景。
3514 2
Isaac Sim教程01 Isaac Sim介绍
|
存储 SQL 安全
API 数据接口使用与安全指南
本文介绍了API数据接口的基础知识、使用流程及安全要点。首先,定义了API及其在现代技术生态中的重要性,接着详细阐述了API使用的六个步骤:明确需求、搜索筛选、注册获取密钥、解读文档、环境搭建与集成、数据处理与应用集成。最后,强调了API安全的重要性,包括身份验证、数据加密、防范攻击及安全监控等方面,确保API的安全稳定运行。
|
开发者 图形学 Java
Unity物理引擎深度揭秘:从刚体碰撞到软体模拟,全面解析实现复杂物理交互的技巧与秘诀,助你打造超真实游戏体验
【8月更文挑战第31天】物理模拟在游戏开发中至关重要,可让虚拟世界更真实。Unity作为强大的跨平台游戏引擎,内置物理系统,支持从刚体碰撞到布料模拟的多种功能。通过添加Rigidbody组件,可实现物体受力和碰撞;使用AddForce()施加力;通过关节(如Fixed Joint)连接刚体以模拟复杂结构。Unity还支持软体物理,如布料和绳索模拟,进一步增强场景丰富度。掌握这些技术,可大幅提升游戏的真实感和玩家体验。
1259 1