matlab学习笔记——数据可视化(代码片段)

归止于飞 归止于飞     2023-02-16     176

关键词:

7.1 二维图形

7.1.1 直角坐标系绘图

1.plot()函数

(1)包含两个输入参数的plot()函数

基本运用格式:plot(X,Y):

a.当X,Y都是实数向量时,它们必须都为同为向量。

X = 0:pi/100:2*pi;
Y = cos(X)+sin(X);
plot(X,Y);

绘制参数方面时:
x = c o s t y = s i n t \\begincases x=cost\\\\y=sint \\endcases x=costy=sint

t=0:pi/100:2*pi;
X=cos(t);
Y=2*sin(t);
plot(X,Y)

b.若plot的参数都是复数向量,则X,Y的虚部都会被忽略。

c.若X,Y为实数矩阵,它们必须为同型矩阵。

(2)仅包含一个输入参数的plot()函数

  • 若Y为实数向量,则plot(Y)以Y的下标为横坐标,以Y为纵坐标
  • 若Y为实数矩阵,设Y的列数为M,则plot(Y)等价于plot(Y(:,k)),k=1,2,3…M
  • 若Y为复数向量,Y的实部为横坐标,虚部为纵坐标
  • 若Y为复数矩阵,每列的实部为横坐标,虚部为纵坐标

(3)含多个输入参数的plot()函数

输入多个参数时,必须要按照成对输入参数

2.plotyy()函数

如果需要需要在同一个坐标系下绘制两个具有不同纵坐标标度的图形,可以使用plotxy()函数。

调用形式:plotyy(X1,Y2,X2,Y2)

例:需要绘制下列两个函数,且使用不同的纵坐标刻度
y = e − x y = c o s x y=e^-x\\\\ y=cosx y=exy=cosx

clear;
clc;
t=0:0.01:2*pi;
y1=exp(-t);
y2=cos(t);
plotyy(t,y1,t,y2)

注意,由于兼容性问题,2016版本后便不推荐使用,推荐yyaxis

3.对函数自适应采样的绘图函数fplot()

fplot()可以根据函数在绘图区间内的变化进行自适应采样的绘图函数。

调用形式:fplot(function_name,[tol],[n])

例题:用fplot函数绘制f(x)=sin(tan(x))的图像:

fun=@(x)sin(tan(x));
fplot(fun,[1,2],1e-4)

4.含选项的绘图软件

MATLAB运行绘图函数包含一些绘图选项,这些选项可用于设定所绘曲线的线条类型,画线用的颜色和数据点标记符号等等

(1)线型选项

选项-:-,
线型实线双划线虚线点划线

(2)颜色选项

选项rgbc
颜色红色绿色蓝色青色
选项mykw
颜色品红色黄色黑色白色

(3)标记符号选项

选项+o*.x
标记符号加号小圆圈星号实点交叉号
选项d^v><
标记符号棱形向上三角形向下三角形向右三角形向左三角形
选项shP
标记符号正方形正六角星正五角星

调用形式:plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n)

例题:用不同的线型和颜色在同一坐标内绘制曲线y=5*exp(-x).cos(10x)及其包络线

x=0:pi/100:4;
y1=5*exp(-x).*cos(10*x);
y2=[1;-1]*5*exp(-x);
x1=(0:12)*pi/10;
y3=5*exp(-x1).*cos(10*x1);
plot(x,y1,'r-',x,y2,'b:',x1,y3,'ko');

同样的用法也可以用在fplot方程里。

7.1.2 其他坐标系绘图

1.极坐标绘图

在极坐标系中绘图可以采用polar命令,该命令接受极坐标形式的函数.

pplar(theta,rho,选项)

例题:在极坐标系下绘制极坐标方程的曲线 ρ = s i n θ c o s θ \\rho=sin\\theta cos\\theta ρ=sinθcosθ

theta=0:0.01:2*pi;
rho=sin(theta).*cos(theta);
polar(theta,rho,'r')

2.对数坐标系绘图

无论是直角坐标系还是极坐标系,坐标轴都是线性刻度。在很多工程应用里,数据呈指数型变化规律,这时如果再用线型刻度来描述曲线。

(1)semilogx函数

semilogx函数在x轴上常采用对数坐标(以10为底)而y轴采用线性坐标,该函数的调用形式和plot基本相同。

例题:绘制y=lgx的x轴半对数坐标图,并与直角坐标图进行对比。

clear;
clc;
x=0:0.1:5;
y=log10(x);
subplot(1,2,1);%图形窗口分割
plot(x,y,'b');
title('plot绘图');
subplot(1,2,2);
semilogx(x,y,'r');
title('semilogx绘图');

(2)semilogy函数

semilogy函数在绘图时y轴采用常用对数坐标(以10为底),而x轴采用线性坐标。该函数的调用形式与semilogx函数完全相同

(3)loglog函数

loglog()函数在调用时,x轴,y轴上都采用常用对数坐标。调用格式与semilogx函数完全相同

7.1.3 二维特殊图形绘制函数

函数名说明函数名说明
area填充绘图hist直方图
bar柱状图pie饼图
barh水平柱状图scatter散射图
feather矢量图stem杆状图
fill多边形填充staris阶梯图
compass矢量图rose极坐标系柱状图

1.bar函数

(1)bar(y):

若y是向量,则该函数为y中每一个元素画一个长柱,长柱的高度即为元素值大小,横坐标是向量元素的下标。

(2)bar(x,y,style),style为两种模式。即group与stack模式。

x=[-1,1,3];
y=[1,1.5;2,1;3,5];
subplot(1,2,1);%窗口图形分割
bar(x,y);%直方图绘图
title('group模式');
subplot(1,2,2)
bar(x,y,'stacked')
title('stack模式')

注意,如果需要绘制水平函数图,可以使用函数barh,调用方式与bar()相同。

2.hist函数

hist可以绘制二维柱状直方图,用来显示数据的分布情况。调用方式:

(1)hist(y,m):参数m为标量,未指定时默认为10

(2)hist(y,x):参数x为向量。hist函数划分区间时以x的每个元素值为区间中心点,区间的个数为x的长度。

应用示例:

clear;
clc;
x=-5:0.1:5;
y=randn(500,1);
subplot(1,2,1);
hist(y)
title('hist(y)');
subplot(1,2,2);
hist(y,x);
title('hist(y,x)');

同时,利用rose函数可以绘制极坐标系下的直方图。

3.pie函数

pie函数可以绘制二维饼状图

(1)pie(x):pie函数使用x中的数据绘制饼图。

(2)pie(x,explode):参数explode与x具有相同的维度,但与explode的非零值对应的部分会从饼状图中分离出来。

饼状图示例:

x1=[0.1,0.3,0.5];
x2=[0.1,0.3,0.5,0.6];
x3=[1 2 5 6 4];
x4=[1 2 5 6 4;3 7 9 2 3];
explode=[0 0 1 1 0];
subplot(2,2,1);
pie(x1)
title('x1')
subplot(2,2,2);
pie(x2)
title('x2')
subplot(2,2,3);
pie(x3,explode);
title('x3');
subplot(2,2,4);
pie(x4);
title('x4');

4.fill函数

fill函数可以绘制多边形填充图,起点与终点连成多边形。

(1)fill(x,y,color):fill函数用线段依次连接x,y对应的数据点。

(2)fill(x1,y1,color,x2,y2…)根据x1-y1,x2-y2绘制多边形

x=[1 2 3 4 7];
y=[3 7 6 7 4];
fill(x,y,'g');

5.stairs函数

stairs函数可以绘制阶梯状图形,调用格式如下:

(1)stairs(x,y,选项):x为横坐标,y为纵坐标,用阶梯式连接各点

(2)stairs(x):x的下标为横坐标,x的值为纵坐标。

x=0:0.1:5;
m=[1,2,3,4];
y=exp(-x);
subplot(1,2,1);
stairs(x,y,'r');
subplot(1,2,2);
stairs(m);

6.stem函数

stem函数可以绘制火柴杆状的图形

(1)stem(x,y,选项,‘filled’):stem函数用火柴杆表示以x轴为横坐标,y为纵坐标的各个数据点。

(2)stem(x):x的下标为横坐标,x值为纵坐标描述函数。x为矩阵时,含义与plot函数一样。

7.compass函数

(1)compass(x,y,选项):campass函数用箭头表示向量x和y对应元素表示的矢量

(2)compass(z)

x=linspace(-pi,pi,20);
y=cos(x);
subplot(1,2,1);
compass(x,y,'b');
subplot(1,2,2);
feather(x,y,'r');

matlab还提供了其它绘制矢量的函数,如feather(),区别在于横坐标上等距地绘制矢量,矢量图看起来像鸟的羽毛。

7.2 绘图的辅助

7.2.1图形备注

1.图形标题

使用到了titie函数

2.坐标轴标签

在Matlab中,可以使用到xlabel和ylabel函数给图形添加坐标轴。

3.文本说明

可以使用text函数给图形添加文本说明。

4.图例

可以使用legend函数添加对不同曲线的说明。

示例:

clear;
clc;
x=0:0.1:2*pi;
y1=cos(x);
y2=sin(x);
plot(x,y1,'k',x,y2,'b');
legend('余弦函数','正弦函数','Location','North');
xlabel('X轴','color','r');
ylabel('Y轴','color','r');
text(3*pi/2,cos(3*pi/2),'\\leftarrow黑色实线');
gtext('\\leftarrow蓝色虚线');

7.2.2 坐标控制

坐标轴的取值范围和刻度对图形的显示有一定影响。

  • axis([ x m i n , x m a x , y m i n , y m a x x_min,x_max,y_min,y_max xmin,xmax,ymin,ymax])去取x轴与y轴的取值范围
  • axis equal:纵,横坐标轴采用等长刻度
  • axis square:使用正方形坐标系
  • axis auto:使用默认设置
  • axis off:取消显示坐标轴
  • axis on:显示坐标轴
  • axis tight:使用数据范围定为坐标轴范围

如果需要给坐标系添加或者取消网格线:

  • grid on:添加网格线
  • grid off:取消网格线

7.2.3 图形保持

  • hold on:保持原有图形
  • hold off:清楚原有图形

7.2.4 图形窗口分隔

使用到函数subplot函数可以切割窗口。

  • subplot(m,n,k)
  • subplot(‘position’,[left bottom width height]):把指定的位置作为当前绘图区,向量元素采用归一化的标称单位,也就是取值范围0~1。

在使用subplot函数后,需要绘制占满整个窗口的图形时,应该先使用clf函数清楚当前图形窗口。

示例:将图形窗口分成多块并在其中绘制正弦,余弦,双曲正弦,双曲余弦。

x=-pi:pi/100:pi;
y1=sin(x);
y2=cos(x);
y3=sinh(x);
y4=cosh(x);
subplot(2,2,1);
plot(x,y1);
title('正弦函数');
subplot(2,4,3);
plot(x,y2);
title('余弦函数');
subplot(2,4,4);
plot(x,y3);
title('双曲正弦函数');
subplot('Position',[0.25,0.1,0.5,0.3]);
plot(x,y4);
title('双曲余弦函数')

7.3 三维绘图

7.3.1 三维曲线图

最基本的三维图形函数为plot3,它将二维函数plot的有关功能扩展到了三维空间。

调用格式:plot( x 1 , y 1 , z 1 , 选 项 1 , x 2 , y 2 , z 2 , 选 项 2 , . . . x_1,y_1,z_1,选项1,x_2,y_2,z_2,选项2,... x1,y1,z1,1,x2,y2,z2,2,...)

例如,绘制空间曲线:
x = s i n t y = c o s t z = c o s 2 t \\begincases x=sint\\\\ y=cost\\\\ z=cos2t\\\\ \\endcases x=sinty=costz=cos2t

t=0:pi/100:2*pi;
x=sin(t);
y=cos(t);
z=cos(2*t);
plot3(x,y,z,'p');
title('三维图形');grid;
xlabel('x');
ylabel('y');
zlabel('z');

7.3.2 三维曲面图

1.平面网格坐标矩阵的生成

(1)利用矩阵运算生成

x=a:dx:b;
y=(c:dy:d)';
X=ones(size(y));
Y=y*ones(size(x));

(2)利用meshgrid函数生成

x=a:dx:b;
y=(c:dy:d)';
[X,Y]=meshgrid;

2.绘制三维曲面的函数

MATLAB提供了mesh函数与surf函数来绘制三维曲面。

示例:绘制z=sinx*siny的三维曲面图

x=0:0.01*pi:2*pi;
[x,y]=meshgrid(x);
z=sin(x).*sin(y);
mesh(x,y,z);
xlabel('x-轴'),ylabel('y-轴'),zlabel('z-轴');
title('mesh函数绘制');

3.标准三维曲面

MATLAB同时提供了一些函数用于绘制标准的三维曲面。如sphere函数与cylinder函数分别用于绘制三维曲面柱面。

调用格式:

[x,y,z]=sphere(n)

[x,y,z]=cylinder(R,n)

斯坦福大学数据可视化课程学习笔记:第三节视觉设计(代码片段)

《斯坦福大学数据可视化课程学习笔记》课程资源来自于斯坦福大学数据可视化课程,是我所在团队实习生提升计划的一部分。本系列是“秉姝”同学在学习过程中记录和整理的学习笔记,希望这些笔记也能够帮助更多... 查看详情

斯坦福大学数据可视化课程学习笔记:第一节可视化的发展与目标(代码片段)

《斯坦福大学数据可视化课程学习笔记》课程资源来自于斯坦福大学数据可视化课程,是我所在团队实习生提升计划的一部分。本系列是“秉姝”同学在学习过程中记录和整理的学习笔记,希望这些笔记也能够帮助更多... 查看详情

python深度学习:python数据处理及可视化(读书笔记)(代码片段)

...深度学习开始了,第一篇正式的文章就是数据处理和可视化,我们开始吧!数据处理与可视化一、NumPy的初步使用二、Matplotlib包的使用--图形化数据处理三、深度学习理论方法--相似度计算(可以跳过)1、基于欧几... 查看详情

mne学习笔记:evokeddata的可视化(代码片段)

MNE学习笔记(七):Evokeddata的可视化参考文章:https://mne.tools/stable/auto_tutorials/evoked/20_visualize_evoked.html准备工作这里就不再解释了,具体可以查看MNE学习笔记(四):Evoked数据结构。代码 查看详情

mne学习笔记:evokeddata的可视化(代码片段)

MNE学习笔记(七):Evokeddata的可视化参考文章:https://mne.tools/stable/auto_tutorials/evoked/20_visualize_evoked.html准备工作这里就不再解释了,具体可以查看MNE学习笔记(四):Evoked数据结构。代码 查看详情

mne学习笔记:evokeddata的可视化(代码片段)

MNE学习笔记(七):Evokeddata的可视化参考文章:https://mne.tools/stable/auto_tutorials/evoked/20_visualize_evoked.html准备工作这里就不再解释了,具体可以查看MNE学习笔记(四):Evoked数据结构。代码 查看详情

学习笔记python-pyecharts(代码片段)

pyechartspyecharts是一款将python与echarts结合的强大的数据可视化工具。echarts是百度开源的一个数据可视化JS库,主要用于数据可视化,而pyecharts则是一个用于生成echarts图表的类库。pyecharts包含以下图表:Bar(柱状图/... 查看详情

《python数据科学手册》学习笔记及书评(代码片段)

...记写在前面1.食谱数据库数据找不到的问题2.Seaborn马拉松可视化里时分秒转化为秒数的问题3.scikit-learn使用fetch_mldata无法下载MNIST数据集的问题4.GridSearchCV.grid_scores_和mean_validation_score报错5.Jupyter导出PDF从入门到绝望 查看详情

斯坦福大学数据可视化课程学习笔记:第二节从数据到图像(代码片段)

《斯坦福大学数据可视化课程学习笔记》课程资源来自于斯坦福大学数据可视化课程,是我所在团队实习生提升计划的一部分。本系列是“秉姝”同学在学习过程中记录和整理的学习笔记,希望这些笔记也能够帮助更多... 查看详情

pytorch学习笔记6.可视化工具visdom(代码片段)

原创PyTorch学习笔记6.可视化工具visdom一、visdom简介二、一些概念及简单使用1.env环境2.pane窗格3.安装4.一些启动操作5.运行demo三、一些输出项1.Plotly提供的可视化API接口2.基础可视化接口3.环境操作API4.文本5.绘制折线图6.绘制一个通... 查看详情

pytorch学习笔记6.可视化工具visdom(代码片段)

原创PyTorch学习笔记6.可视化工具visdom一、visdom简介二、一些概念及简单使用1.env环境2.pane窗格3.安装4.一些启动操作5.运行demo三、一些输出项1.Plotly提供的可视化API接口2.基础可视化接口3.环境操作API4.文本5.绘制折线图6.绘制一个通... 查看详情

pytorch学习笔记3.数据集和数据加载器(代码片段)

...1.预置数据集FashionMNIST介绍2.加载数据集3.对数据集处理和可视化三、自定义数据集1.要实现的方法2.定义3.`__init__`4.`__len`5.`__getitem__`6.准备数据、训练7.通过数据加载器传入数据一、说明PyTorch提供了一些 查看详情

matplotlib学习笔记1(代码片段)

...作一些图表吧!Matplotlib是一个面向Python的,专注于数据可视化的模块。快速上手这是使用频率最高的几个模块,在接下来的程序中,都需要把它们作为基础模块importmatplotlibasmplimportmatplotlib.pyplotaspltimportnumpyasnp第一个图表使用pypl... 查看详情

黄佳《零基础学机器学习》chap3笔记(代码片段)

...的收集和预处理3.2.1收集网店销售额数据3.2.2数据读取和可视化3.2.3数据的相关分析3.2.4数据的散点图3.2.5数据集清洗和规范化数据清洗数据规范化3.2.6拆分数据集为训 查看详情

斯坦福大学数据可视化课程学习笔记:第三节视觉设计(代码片段)

《斯坦福大学数据可视化课程学习笔记》课程资源来自于斯坦福大学数据可视化课程,是我所在团队实习生提升计划的一部分。本系列是“秉姝”同学在学习过程中记录和整理的学习笔记,希望这些笔记也能够帮助更多... 查看详情

斯坦福大学数据可视化课程学习笔记:第一节可视化的发展与目标(代码片段)

《斯坦福大学数据可视化课程学习笔记》课程资源来自于斯坦福大学数据可视化课程,是我所在团队实习生提升计划的一部分。本系列是“秉姝”同学在学习过程中记录和整理的学习笔记,希望这些笔记也能够帮助更多... 查看详情

学习数据结构笔记====>不同的排序算法(sortalgorithm)[冒泡,选择,插入,快速,希尔,基数,归并](代码片段)

...java算法(Java数据结构与算法)写在前面数组结构可视化在线网站地址===>数据结构可视化在线排序算法:把一组数据,依指定顺序进行排列的过程.ml1.时间复杂度概述时间频度时间复杂度平均&最差时间复... 查看详情

mne学习笔记:epocheddata的可视化(代码片段)

MNE学习笔记(六):Epocheddata的可视化参考文章:https://mne.tools/stable/auto_tutorials/epochs/20_visualize_epochs.html准备工作包括导包加载这个部分之前已经有详细地说明了,如果有疑惑可以去看MNE学习笔记(三)... 查看详情