MATLAB绘图操作(二维+三维)

回到主页

常用小技巧:

想知道哪些可用的函数,输入h = plot(...),不加分号即可打印出句柄的属性

可以使用交互界面配合代码,例如在交互界面移动栏目获取坐标值,然后在代码中固定坐标值

一. 二维图像基本操作

1. 基础作图:plot, fplot, fimplicit与ezplot

①plot用于已知坐标作连续线图(注意:连续线图)

plot(Y):若Y是向量,则图像横轴为序号,纵轴为Y值;若Y为矩阵,则绘制 Y 中各列对其行号的图(多条曲线),横轴的刻度范围是从 1 到 Y的行数。

plot(X, Y):X, Y可以是向量(要求长度相同),可以是矩阵,也可以一个是向量一个是矩阵

plot(X1,Y1,...,Xn,Yn) 绘制多个 X、Y 对组的图,所有线条都使用相同的坐标区

②fplot用于已知显函数表达式或参数方程作函数图像

fplot(func),函数func可以是公用函数名(.m文件名内单独的函数),也可以是私密函数名(脚本后面的函数),也可以是直接的函数表达式

fplot(func, lims),其中lims限定自变量范围,lims=[XMIN XMAX YMIN YMAX][XMIN XMAX]

fplot(符号表达式1, 符号表达式2, lims):新版本中fplot用于替代ezplot的画参数方程功能

  • 注意:函数表达式要么必须定义符号变量,要么必须用匿名函数的形式加@;fimplicit中同理,也要注意

  • 例:

fplot(@(t) 10*sin(t),@(t) 10*cos(t),[0,2*pi])
% 或
syms t
fplot(10*sin(t), 10*cos(t),[0,2*pi])

③fimplicit用于已知隐函数方程作函数图像

fimplicit(f) :在默认区间 [-5 5](对于 x 和 y)上绘制 f(x,y) = 0定义的隐函数

fimplicit(f,lims)

fimplicit(___,LineSpec)

fimplicit(___,Name,Value)

  • 例:

h = fimplicit(@(x,y) y.*sin(x) + x.*cos(y) - 1);
h.Color = 'r';
h.LineStyle = '--';
h.LineWidth = 2;

④ezplot用于已知显函数、隐函数和参数方程作函数图象(不推荐)

  • ezplot会逐渐被fimplicit和flot函数代替

  • 函数fimplicit代替了ezplot画隐函数曲线的功能;fplot代替画参数方程的功能(虽然官网上只说了被fplot代替,没说fimplicit)

  • 注意fplot仅支持一个变量,无法用于画隐函数曲线

2. 一些杂七杂八但很常用的操作

subplot(2,3,6) % 将多个图画到一张图上
plot(x2,y2)

% 用句柄进行画图操作,就不用在plot里添加一堆属性了:
h = plot(x,y);
h.LineWidth = 2; % 改变线宽
h.FontSize = 12 % 改变字体大小


title('线性电阻的伏安特性曲线') % 添加图表标题

text(0.8,200,'R1=9.99Ω') % 添加标注
text(5,50,'R2=1022Ω')
legend('10Ω','1kΩ');  % 添加图例


% 坐标轴 %

xlabel('电压U/V'); % 添加x轴名称
ylabel('电流I/mA'); 
xlim([2, 46]); % 设定x轴的绘制范围
set(gca,'XTick',[2:2:46]) % 改变x轴坐标间隔显示 这里间隔为2
set(gca,'FontSize',20); % 设置坐标轴的数字大小,包括legend文字大小:
axis equal % 坐标轴相等,长方形变正方形
axis off % 隐藏坐标轴


%在图中标出每一点纵坐标
for i=1:8
    text(x(1,i),y(1,i),num2str(y(1,i)));% num2str表示数字到字符的转换
end

%任意位置四舍五入
a=roundn(a,-4) % 保留四位小数

color bar % 添加颜色bar
h.AlphaData = .5; % 利用句柄改变图像透明度
fg1 = figure('numbertitle','off','name','自定义文件名'); 
  • 注:如果subplot的话,无法画大标题

二. 二维图像进阶操作

0. gcf与gca

句柄

说明

gcf()

返回当前图形对象的句柄值,get current figure,通常不用

gca()

返回当前坐标轴对象的句柄值,get current axis

1. imagesc()

教程: https://www.cnblogs.com/MCSFX/p/11976372.html

  • imagesc(A) 将数组 A 中的数据显示为一个图像,该图像使用颜色图中的全部颜色。A 的每个元素指定图像的一个像素的颜色。生成的图像是一个 m×n 像素网格,其中 mn 分别是 A 中的行数和列数。这些元素的行索引和列索引确定了对应像素的中心

  • 简单的说,就是显示RGB图像:一个数值对应一个颜色块,数值越相近颜色则越相近,数值相同则颜色相同

% 例子:研究9~24阶幻方矩阵的分布情况
for n = 1:16
    subplot(4,4,n)
    ord = n+8;
    m = magic(ord); % 幻方矩阵
    imagesc(m)
    title(num2str(ord))
    axis equal
    axis off
    color bar
end

  • 应用:作热力图、等高线;向三维视图中的坐标区添加图像

Z = 10 + peaks; % 向上平移10,以便画xy平面上的图像
surf(Z)
hold on
imagesc(Z)

2. gscatter

  • gscatter(x, y, group) 按分组绘制散点图

  • gscatter(x, y, group, clr, sym, siz) 为每组设置颜色clr,符号sym和大小siz

例:

A=magic(6);
group=[1,2,3,3,2,3];
gscatter(A(:,1),A(:,2),group);
%	此处magic为神奇的幻方矩阵,虽然是6x6,但此处只用到了其第一列与第二列,以第一列为x,第二列为y,进行对应的group分组

3. 坐标轴的高级设置

教程: 官网较全的总结,这里选取部分常用的

  • xtickangle(ax, angle) 设置x轴刻度转过的角度,避免重叠

  • xtickformat(ax, format) 将x轴刻度按规定格式显示


标识符

说明

显示结果

d或i

底数为10的有符号整数,精度指示有效位数

'%.4d' 0003

f

定点计数法,精度指示小数位数

'%.4f' 3.1416

e

指数计数法,精度指示小数位数

'%.4e' 3.1416×10

g

不带尾随零,精度指示最大小数位数

'%.4g' 3.1416

  • xticks(x) 显示数组x处的刻度值

  • xticklabels({'','',''}) 将x轴刻度值显示为{'...','...','...'}

  • xlim([2, 46]) 设定x轴的绘制范围

  • set(gca,'XTick',[2:2:46]) 改变x轴坐标间隔显示 这里间隔为2

  • set(gca,'FontSize',20) 设置坐标轴的数字大小,包括legend文字大小

4. 等值线的绘制

教程: 轩轩的CSDN

(见教程)

三. 三维图像基本操作

教程: 较全的总结

①surf:绘制三维曲面

  • surf(x, y, z)

x = 1:100; % 1x100矩阵
y = 101:200; % 1x100矩阵
z = x'*y % 100x100矩阵
surf(x, y, z);
  • surf(z):若z=mxn,则默认x=0:m, y=0:n

②mesh:绘制三维网格

  • mesh(x,y,z)

③plot3:绘制三维曲线

  • ①~③三者对比

t=-2:0.1:2;
s=-1:0.1:3
[x,y]=meshgrid(t,s);
z=x.*exp(-x.^2-y.^2);

subplot(1,3,1);
plot3(x,y,z);
title('三维曲线');

subplot(1,3,2);
mesh(x,y,z);
title('mesh');

subplot(1,3,3);
surf(x,y,z);
title('surf');

④fsurf与fmesh

  • fsurf(x,y,z,[umin,umax,vmin,vmax]);

  • 这两个函数就是用来绘制参数方程定义的三维曲面,和fplot3函数很像,需要用到函数句柄

  • 例:作三维螺旋曲面

x=@(u,v) u*sin(v);
y=@(u,v) -u*cos(v);
z=@(u,v) v;

fsurf(x,y,z,[-5,5,-2,2]);
grid on;
title('螺旋曲面');
xlabel('x=usinv');
ylabel('y=-ucosv');
zlabel('z=v');

⑤meshgrid:创建网格

  • [X,Y] = meshgrid(x,y):根据向量x,y创建网格矩阵X,Y

  • 这样子就可以直接用函数的形式,用自变量XY表示因变量Z了

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

     1     2     3
     1     2     3
     1     2     3
     1     2     3
     1     2     3

Y = 5×3

     1     1     1
     2     2     2
     3     3     3
     4     4     4
     5     5     5
     
Z = 5×3

     2     5    10
     5     8    13
    10    13    18
    17    20    25
    26    29    34

四. 三维图像进阶操作

①peaks

peaks 函数是一个典型的多元函数,本质上是一个二元高斯分布的概率密度函数,表达式如下: blockformula_editorf(x,y)=3(1−x)^2e^{−x^2−(y+1)^2}−10(\frac{1}{5}x−x^3−y^5)e^{−x^2−y^2}−\frac{1}{3}e^{−(x+1)^2−y^2}

  • z = peaks:生成49x49的矩阵,默认x,y=0:49

  • z = peaks(n):生成nxn的矩阵,默认x,y=0:n

  • peaks(n):没有输出参数z时,这个函数可以直接进行绘制peaks,默认n为49

clc;clear;close all; % 1,1~5,5
figure(1);
z=peaks(5);
surf(z);

figure(2); % -3,-3~3,3
peaks(5);%没有输出值的peaks函数直接绘制表面图

[x,y,z]=peaks(5); % -3,-3~3,3
figure(3);
surf(x,y,z);%注意图像2和图像3坐标的差异性,相当于平移了

②view

  • view可以改变对三维视图的视角

  • view(3):恢复默认的三视图视角

  • view(ez,el):设置方位角为ez,俯角为el:[0,0]为正视图,[90,0]为侧视图,[0,90]为俯视图

③颜色控制

教程: 轩轩的CSDN

a) colormap

  • 用于修改色轴,即修改图形的颜色

b) brighten

  • 调整色轴明度

c) caxis

  • 设置函数值映射到色轴两端的最大值与最小值,一般默认

d) colorbar

  • 显示颜色条,分横条与竖条两种

e) surf属性

  • 可以调整曲面透明度、网线颜色,作热力图等


本文章使用 limfx的vscode插件快速发布

深圳SEO优化公司张掖百度网站优化推荐酒泉百度标王价格吕梁关键词按天计费济源SEO按天收费推荐杭州建站价格大运营销型网站建设推荐伊春百姓网标王报价聊城百度关键词包年推广永新品牌网站设计报价霍邱网站优化推广多少钱宝安网站推广工具推荐哈密英文网站建设报价江门百姓网标王推广哪家好随州百度关键词包年推广株洲至尊标王报价天门网站建设设计长治seo新余百姓网标王推广价格潍坊百搜标王枣庄关键词排名包年推广报价海南网站优化排名报价防城港SEO按天扣费推荐衢州网站推广方案周口网站优化按天计费价格黑河关键词排名价格西宁营销网站哪家好湘潭关键词按天收费哪家好临猗关键词按天收费价格保定网站优化推广价格湘潭网站优化按天扣费报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化