首页 > 其他分享 >Matlab绘制图表

Matlab绘制图表

时间:2023-09-24 20:32:47浏览次数:41  
标签:subplot 函数 title 图表 3.5 Matlab 绘制 axis

学习一门技术最好的方式就是阅读官方文档,可以查看MATLAB官方文档

二维图表

折线图

函数

图形描述

loglog()

x轴和y轴都取对数坐标

semilogx()

x轴取对数坐标,y轴取线性坐标

semilogy()

x轴取线性坐标,y轴取对数坐标

plotyy()

带有两套y坐标轴的线性坐标系

ploar()

极坐标系

对数坐标系图线

下面例子演示对数坐标系图线:

x = logspace(-1,1,100); y = x.^2;

subplot(2,2,1);
plot(x,y);
title('Plot');

subplot(2,2,2);
semilogx(x,y);
title('Semilogx');

subplot(2,2,3);
semilogy(x,y);
title('Semilogy');

subplot(2,2,4);
loglog(x, y);
title('Loglog');

Matlab绘制图表_二维

对数坐标系可以加上网格,以区分线性坐标系与对数坐标系.

set(gca, 'XGrid','on');

Matlab绘制图表_二维_02

双y轴图线

plotyy()的返回值为数组[ax,hlines1,hlines2],其中:

  • ax为一个向量,保存两个坐标系对象的句柄.
  • hlines1hlines2分别为两个图线的句柄.
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
[AX,H1,H2] = plotyy(x,y1,x,y2);
set(get(AX(1),'Ylabel'),'String','Left Y-axis')
set(get(AX(2),'Ylabel'),'String','Right Y-axis')
title('Labeling plotyy');
set(H1,'LineStyle','--'); set(H2,'LineStyle',':');

Matlab绘制图表_句柄_03

极坐标图线

% 螺旋线
x = 1:100; theta = x/10; r = log10(x);
subplot(1,4,1); polar(theta,r);

% 花瓣
theta = linspace(0, 2*pi); r = cos(4*theta);
subplot(1,4,2); polar(theta, r);

% 五边形
theta = linspace(0, 2*pi, 6); r = ones(1,length(theta));
subplot(1,4,3); polar(theta,r);

% 心形线
theta = linspace(0, 2*pi); r = 1-sin(theta);
subplot(1,4,4); polar(theta , r);

Matlab绘制图表_hg_04

统计图表

函数

图形描述

hist()

直方图

bar()

二维柱状图

pie()

饼图

stairs()

阶梯图

stem()

针状图

直方图

使用hist()绘制直方图,语法如下:

hist(x,nbins)

其中:

  • x表示原始数据
  • nbins表示分组的个数
x = randn(1,1000);
subplot(2,1,1);
hist(x,10);
title('Bins = 10');
subplot(2,1,2);
hist(x,50);
title('Bins = 50');

Matlab绘制图表_句柄_05

柱状图

  • 使用bar()bar3()函数分别绘制二维和三维直方图
x = [1 2 5 4 8]; y = [x;1:5];
subplot(1,3,1); bar(x); title('A bargraph of vector x');
subplot(1,3,2); bar(y); title('A bargraph of vector y');
subplot(1,3,3); bar3(y); title('A 3D bargraph');

Matlab绘制图表_句柄_06

hist主要用于查看变量的频率分布,而bar主要用于查看分立的量的统计结果.

  • 使用barh()函数可以绘制纵向排列的柱状图
x = [1 2 5 4 8];
y = [x;1:5];
barh(y);
title('Horizontal');

Matlab绘制图表_hg_07

  • bar()传入'stack'参数可以让柱状图以堆栈的形式画出.
x = [1 2 5 4 8];
y = [x;1:5];
bar(y,'stacked');
title('Stacked');

Matlab绘制图表_句柄_08

饼图

使用pie()pie3()可以绘制二维和三维的饼图.向其传入一个bool向量表示每一部分扇区是否偏移.

a = [10 5 20 30];
subplot(1,3,1); pie(a);
subplot(1,3,2); pie(a, [0,0,0,1]);
subplot(1,3,3); pie3(a, [0,0,0,1]);

Matlab绘制图表_hg_09

阶梯图和针状图:绘制离散数字序列

stairs()stem()函数分别用来绘制阶梯图和针状图,用于表示离散数字序列.

x = linspace(0, 4*pi, 40); y = sin(x);
subplot(1,2,1); stairs(y);
subplot(1,2,2); stem(y);

Matlab绘制图表_句柄_10

其它统计图表

  • boxplot()
load carsmall
boxplot(MPG, Origin);

Matlab绘制图表_二维_11

  • errorbar()
x=0:pi/10:pi; y=sin(x);
e=std(y)*ones(size(x));
errorbar(x,y,e)

Matlab绘制图表_句柄_12

绘制图形

MATLAB也可以绘制简单的图形,使用fill()函数可以对区域进行填充.

t =(1:2:15)'*pi/8; x = sin(t); y = cos(t);
fill(x,y,'r'); axis square off;
text(0,0,'STOP','Color', ...
	'w', 'FontSize', 80, ... 
	'FontWeight','bold', ...
	'HorizontalAlignment', 'center');

Matlab绘制图表_二维_13

三维图表

二维图与三维图间的关系

二维图转为三维图

在MATLAB中,所有的图都是三维图,二维图只不过是三维图的一个投影.点击图形窗口的Rotate 3D按钮,即可通过鼠标拖拽查看该图形的三维视图.

Matlab绘制图表_句柄_14

三维图转换为二维图

使用imagesc()函数可以将三维图转换为二维俯视图,通过点的颜色指示高度.

[x, y] = meshgrid(-3:.2:3,-3:.2:3); z = x.^2 + x.*y + y.^2; 

subplot(1, 2, 1)
surf(x, y, z); 

subplot(1, 2, 2)
imagesc(z);

Matlab绘制图表_hg_15

使用colorbar命令可以在生成的二维图上增加颜色与高度间对应关系的图例,使用colormap命令可以改变配色方案.具体细节请参考官方文档

Matlab绘制图表_二维_16

三维图的绘制

绘制三维图前的准备工作:使用meshgrid()生成二维网格

我们对一个二维网格矩阵应用函数 z = f ( x , y ) z=f(x,y) z=f(x,y)才能得到三维图形,因此在得到三维数据之前我们应当使用meshgrid()函数生成二维网格矩阵.

meshgrid()函数将输入的两个向量进行相应的行扩充和列扩充以得到两个增广矩阵,对该矩阵可应用二元函数.

x = -2:1:2;
y = -2:1:2;
[X,Y] = meshgrid(x,y)
Z = X.^2 + Y.^2

我们得到了生成的二维网格矩阵如下:

X =
    -2    -1     0     1     2
    -2    -1     0     1     2
    -2    -1     0     1     2
    -2    -1     0     1     2
    -2    -1     0     1     2


Y =
    -2    -2    -2    -2    -2
    -1    -1    -1    -1    -1
     0     0     0     0     0
     1     1     1     1     1
     2     2     2     2     2
     
Z =
     8     5     4     5     8
     5     2     1     2     5
     4     1     0     1     4
     5     2     1     2     5
     8     5     4     5     8

绘制三维线

使用plot3()函数即可绘制三维面,输入应为三个向量.

x=0:0.1:3*pi; z1=sin(x); z2=sin(2.*x); z3=sin(3.*x);
y1=zeros(size(x)); y3=ones(size(x)); y2=y3./2;
plot3(x,y1,z1,'r',x,y2,z2,'b',x,y3,z3,'g'); grid on;
xlabel('x-axis'); ylabel('y-axis'); zlabel('z-axis');

Matlab绘制图表_二维_17

下面例子绘制了两个螺旋线:

subplot(1, 2, 1)
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
grid on; axis square;

subplot(1, 2, 2)
turns = 40*pi;
t = linspace(0,turns,4000);
x = cos(t).*(turns-t)./turns;
y = sin(t).*(turns-t)./turns;
z = t./turns;
plot3(x,y,z); grid on;

Matlab绘制图表_句柄_18

绘制三维面

使用mesh()surf()命令可以绘制三维面,前者不会填充网格而后者会.

x = -3.5:0.2:3.5; y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);
subplot(1,2,1); mesh(X,Y,Z);
subplot(1,2,2); surf(X,Y,Z);

Matlab绘制图表_hg_19

绘制三维图形的等高线

使用contour()contourf()函数可以绘制三维图形的等高线,前者不会填充网格而后者会.

x = -3.5:0.2:3.5;
y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);

subplot(1,2,1);
mesh(X,Y,Z); axis square;
subplot(1,2,2);
contour(X,Y,Z); axis square;

Matlab绘制图表_句柄_20

contour()函数传入参数或操作图形句柄可以改变图像的细节:

x = -3.5:0.2:3.5; y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y); Z = X.*exp(-X.^2-Y.^2);

subplot(1,3,1); contour(Z,[-.45:.05:.45]); axis square;
subplot(1,3,2); [C,h] = contour(Z); clabel(C,h); axis square;
subplot(1,3,3); contourf(Z); axis square;

Matlab绘制图表_二维_21

使用meshc()surfc()函数可以在绘制三维图形时绘制其等高线.

x = -3.5:0.2:3.5; y = -3.5:0.2:3.5;
[X,Y] = meshgrid(x,y); Z = X.*exp(-X.^2-Y.^2);

subplot(1,2,1); meshc(X,Y,Z);
subplot(1,2,2); surfc(X,Y,Z);

Matlab绘制图表_二维_22

绘制三维体

使用patch()函数可以绘制三维体.

v = [0 0 0; 1 0 0 ; 1 1 0; 0 1 0; 0.25 0.25 1; 0.75 0.25 1; 0.75 0.75 1; 0.25 0.75 1];
f = [1 2 3 4; 5 6 7 8; 1 2 6 5; 2 3 7 6; 3 4 8 7; 4 1 5 8];

subplot(1,2,1); 
patch('Vertices', v, 'Faces', f, 'FaceVertexCData', hsv(6), 'FaceColor', 'flat');
view(3); axis square tight; grid on;

subplot(1,2,2); 
patch('Vertices', v, 'Faces', f, 'FaceVertexCData', hsv(8), 'FaceColor','interp');
view(3); axis square tight; grid on

Matlab绘制图表_hg_23

三维图的视角与打光

调整视角

使用view()函数可以调整视角,view()函数接受两个浮点型参数,分别表示两个方位角azimuthelevation.

Matlab绘制图表_hg_24

sphere(50); shading flat;
material shiny;
axis vis3d off;
view(-45,20);

Matlab绘制图表_句柄_25

调整打光

使用light()函数可以对三维图形进行打光,并返回光源的句柄.

[X, Y, Z] = sphere(64); h = surf(X, Y, Z);
axis square vis3d off;
reds = zeros(256, 3); reds(:, 1) = (0:256.-1)/255;
colormap(reds); shading interp; lighting phong;
set(h, 'AmbientStrength', 0.75, 'DiffuseStrength', 0.5);
L1 = light('Position', [-1, -1, -1])

通过对光源的句柄进行操作可以修改光源的属性

set(L1, 'Position', [-1, -1, 1]);
set(L1, 'Color', 'g');

Matlab绘制图表_句柄_26

标签:subplot,函数,title,图表,3.5,Matlab,绘制,axis
From: https://blog.51cto.com/u_16189732/7588299

相关文章

  • matlab-动图
    matlab中的gif动图%彩色图像,举个例子,n个图片%对于实际图形,常用到frame=getframe(fig);im(idx)=frame2im(frame);n=100;fori=1:nimg{i}=im2uint8(rand(512,512,3));end%将图片组合成gif图filename='test_rgb.gif';foridx=1:n[A,map]=rgb2ind......
  • matlab-griddata函数
    四维图,xyz-v(经度、纬度、深度--速度),对于不规则的数据进行三维插值,griddata函数。%readthevelocityperturbationfilename='dv';delimiterIn='';headerlinesIn=1;A=importdata(filename,delimiterIn,headerlinesIn);lat=A.data(:,1);lon=A.data(:,2);de......
  • Global Mapper(地图绘制)下载_生成地形图 各个版本下载
    GlobalMapper21是一款实用的桌面GIS应用程序,包含丰富的空间数据处理工具、3D渲染和高程工具、地形修改工具和GPS数据管理工具等,可以将数据转化成光栅地图、高程地图或矢量地图,同时还具有GIS数据的编辑、转换、打印和记录等功能,支持超过250种文件格式。GlobalMapper21带来了新的......
  • GlobalMapper(地图绘制)下载 各个版本下载
    GlobalMapper23版是一款提供给所有GIS专业人士和地图爱好者们使用的多功能地图绘制工具,这款软件不仅为用户们提供了各式各样的空间数据处理工具,从而满足地理空间专业人员的不同需求。而且我们也可以利用GlobalMapper23版百度云来轻松完成地图绘制工作。GlobalMapper23版可以......
  • 多表数据动态图表
    问题:一簿若干工作表,每表结构相同,现需要制作动态图表,通过勾选等方式动态显示不同维度的数据。解决思路:第一步:多表合并第二步:打开新生成的合并表中的“总表”工作表第三步:删除A列第四步:制作数据透视图第五步:通过勾选或勾销字段的方式实现动态显示,或插入切片器后以点选切片器......
  • 基于Yolov2深度学习网络的车辆检测算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本MATLAB2022A 3.算法理论概述        车辆检测是计算机视觉领域中的一个重要问题。它在自动驾驶、智能交通系统、交通监控以及车辆计数等应用场景中起着至关重要的作用。近年来,深度学习在图像识别领域取得了显著的......
  • FPmarkets澳福详解Renko图表如何表现价格变动
    相信大多数投资者与FPmarkets澳福一样,都已发现Renko图表与日本烛台图一样,具有上升和下降的特性。增长期间的典型砖块颜色为绿色或白色,而衰退期前的Renko则呈现红色或黑色。今天,FPmarkets澳福将与各位投资者共同探讨Renko图表对价格变动的表现方式。当某一资产价值相对于上一个固定......
  • 记录--使用Canvas绘制一个验证码组件
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助使用Canvas绘制一个验证码组件前言验证码,这一日常伴随我们的要素,是我们在线交互的重要安全保障。你的手机短信里是否被它占据半壁江山,今天我们就来聊聊如何在网页上实现一个简单的验证码组件。大家在登录网站时......
  • Qt3D绘制光照效果
    直接给出一个例子供参考。此例子参考了以下博文中公开的代码并做了整理:Qt::QOpenGLWidget渲染带光照的立方体_D_Guco的博客-CSDN博客这里把立方体换成了四面体,贴图也换成了顶点的颜色。并对代码结构做了简化,以使读者更容易看懂。有兴趣的读者可以调节软件中相机位置、EYE位置......
  • Echarts图表基本参数设置说明
    ECharts是一款强大的数据可视化库,可以通过JavaScript构建交互式和动态的图表。在使用ECharts进行图表绘制时,我们可以通过设置各种参数来达到我们想要的效果。下面是对ECharts中常用的图表参数的详细介绍说明。1.全局配置参数:-title:图表标题,可以设置主标题和副标题。......