loglog:对x,y求对数
semilogx:对x求对数
semilogy:对y求对数
plotyy:双坐标轴
hist:频数直方图
https://ww2.mathworks.cn/help/matlab/ref/timetable.html
bar:条形图
pie:饼图
polar:极坐标中绘制线条
具体用法可参考Mathworks帮助中心:
https://ww2.mathworks.cn/help/matlab/ref/bar.html
下面通过一个例子来熟悉这些方法(loglog、semilogx、semilogy):
>> 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');

如果画log图,加上网格,表示的更清晰一点。
set(gca,‘Xgrid’,‘on’);

plotyy(),双坐标轴,不同的图
>> 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',':');

hist()直方图,看局部
>> y=randn(1,1000);
subplot(2,1,1);
hist(y,10);
title('Bins=10');
subplot(2,1,2);
hist(y,50);
title('Bins=50');

bar:条形图,看整体
>> x=[3 2 4 8 6 7 5];y=[x;1:7];
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('C 3D bargraph');

其中y函数表示的是两行七列的矩阵
stacked(堆叠),barh(水平条形图)
>> x=[3 2 4 8 7 6 9];y=[x;1:7];
subplot(1,2,1);bar(y,'stacked');title('Stacked');
subplot(1,2,2);barh(y);title('Horizontal');

pie:饼状图。
>> a=[20 50 90 60];
subplot(1,3,1);pie(a);
subplot(1,3,2);pie(a,[0,1,0,0]);
subplot(1,3,3);pie3(a,[0,0,0,1]);

polar Chart:极坐标图
>> 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);

Stairs and Stem Charts
stairs 绘制阶梯图
Stem 绘制离散序列数据
>> x=linspace(0,4*pi,40);y=sin(x);
subplot(1,2,1);stairs(y);
subplot(1,2,2);stem(y);

Box Plot() and Error Bar
Box Plot() 用箱线图可视化汇总统计量
errorbar 含误差条的线图
>> load carsmall
boxplot(MPG,Origin);

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

注解:
errorbar(x,y,e); e表示bar的大小;
封闭图形,带有颜色
Stop sign
例,画一个八边形,中间部分填充为红色,字样为STOP,效果图如下:
>> 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');

注解:
t=(1:2:15)’*pi/8
()’ *表示,多行一列
t=
0.3927
1.1781
1.9635
2.7489
3.5343
4.3197
5.1051
5.8905
t=(1:2:15)*pi/8
()*表示,一行多列
t =
1 至 7 列
0.3927 1.1781 1.9635 2.7489 3.5343 4.3197 5.1051
8 列
5.8905
练习:画一个菱形,中间部分填充为黄色,字样WAIT,效果如下:

>> t=(0:3)'*pi/2;x=sin(t);y=cos(t);
fill(x,y,'y','Linewidth',3);axis square off;
text(0,0,'WAIT','Color','k','FontSize',60,...
'FontWeight','bold','HorizontalAlignment','center');

([R G B])

[0…0]…[1…255] 全黑到全白
配色表:
>> G=[46 38 29 24 13];S=[29 27 17 26 8];
B=[29 23 19 32 7];h=bar(1:5,[G' S' B']);
title('Medal count for top 5 countries in 2012 Olympics');
ylabel('Number of medals');xlabel('Country');
legend('Gold','Silver','Bronze');

对于金牌、银牌、铜牌,设置相应的颜色:
>> G=[46 38 29 24 13];S=[29 27 17 26 8];
B=[29 23 19 32 7];h=bar(1:5,[G' S' B']);
title('Medal count for top 5 countries in 2012 Olympics');
ylabel('Number of medals');xlabel('Country');
legend('Gold','Silver','Bronze');
set(gca,'XTickLabel',{'USA','CHI','GBR','RUS','KOR'});
set(h(1), 'FaceColor', [225,215,0]/256);
set(h(2), 'FaceColor', [204,204,204]/256);
set(h(3), 'FaceColor', [217,83,25]/256);

>> [x,y]=meshgrid(-3:.2:3,-3:.2:3);
z=x.^2+x.*y+y.^2;surf(x,y,z);box on;
set(gca,'FontSize',16);zlabel('z');
xlim([-4 4]);xlabel('x');ylim([-4 4]);ylabel('y');

注解:
meshgrid() 表示二维和三维网格
surf 曲面图
从z轴往下看的图像
>> imagesc(z);axis square;xlabel('x');ylabel('y');

colorbar: 显示色阶的颜色栏。
如果上图加上颜色条,效果如下:
imagesc(z);axis square;xlabel('x');ylabel('y');colorbar;

colormap(),查看并设置当前颜色图。a=colormap(prism);可以查看color中具体的数值
colormap(hot); 暖色系
>> imagesc(z);axis square;xlabel('x');ylabel('y');colormap(hot);colorbar;

colormap(cool); 冷色系
>> imagesc(z);axis square;xlabel('x');ylabel('y');colormap(cool);colorbar;

colormap(gray); 灰色系
imagesc(z);axis square;xlabel('x');ylabel('y');colormap(gray);colorbar;

最近,在b站上学习Matlab视频,有的图片来源课件;

3D画图
plot3:三维点或线图
surf:曲面图
surfc:曲面图下的等高线图
surface:基本曲面图
meshc:网格曲面图下的等高线图
contour:矩阵的等高线图
contourf:填充的二维等高线图
在所有画图效果显示窗口,点击这个按钮,就可得到一个3D的图形,那么用代码怎么操作呢?

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');

注解:
grid:显示或隐藏坐标区网格线
例1:
>> t=0:pi/50:10*pi;plot3(sin(t),cos(t),t);
grid on;axis square;

例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;

>> x=-2:1:2;
y=-2:1:2;
[x,y]=meshgrid(x,y)
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
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);

总结:
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,2,1);mesh(X,Y,Z);axis square;
subplot(1,2,2);contour(X,Y,Z);axis square;

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);
%紧密的图,在contour中加范围,大小按照等差进行画
subplot(1,3,1);contour(Z,[-.45:.05:.45]);axis square;
%带数字的图
subplot(1,3,2);[C,h]=contour(Z);clabel(C,h);axis square;
%带颜色的图,contourf()
subplot(1,3,3);contourf(Z);axis square;

注解:
clabel为等高线图添加高程标签
clabel(c,h),举例:
>> [x,y,z] = peaks;
[C,h] = contour(x,y,z);
clabel(C,h)

peaks函数:
1.返回坐标
Z = peaks 返回在一个 49×49 网格上计算的 peaks 函数的 z 坐标。
Z = peaks(n) 返回在一个 n×n 网格上计算的 peaks 函数。如果将 n 指定为长度为 k 的向量,则 MATLAB® 将在一个 k×k 网格上计算该函数。
Z = peaks(Xm,Ym) 返回在 Xm 和 Ym 指定的点上计算的 peaks 函数。Xm 和 Ym 的大小必须相同或兼容。例如,您可以将 Xm 和 Ym 指定为 meshgrid 格式的矩阵。
[X,Y,Z] = peaks(___) 返回 peaks 函数的 x、y 和 z 坐标。
2.创建曲面图
peaks(___) 将 peaks 函数绘制为一个三维曲面图。您可以使用以前语法中的任意输入参数组合。
具体用法可参考下方帮助文档:
https://ww2.mathworks.cn/help/matlab/ref/peaks.html?searchHighlight=peaks&s_tid=srchtitle_peaks_1
—————————————————————————————————————————————————
学着后面的,忘着前面的,该怎么办呀!!!!
又忘记subplot具体用法是什么了?
subplot 在各个分块位置创建坐标区
https://ww2.mathworks.cn/help/matlab/ref/subplot.html
subplot(m,n,p);就是在当前窗格中划分出mxn个的 坐标系 ,p是坐标系的位置;即m行,n列,第p个。
—————————————————————————————————————————————————
练习:
画出下方图示的图形;

>> 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);
[C,h]=contourf(Z,[-.45:.05:.45]);clabel(C,h);axis square;
meshc() and 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);axis square;
subplot(1,2,2);surfc(X,Y,Z);axis square;

View Angle:view() 可从不同角度,观察图形
相机视线
view(az,el) 为当前坐标区设置相机视线的方位角和仰角。
view(v) 根据 v(二元素或三元素数组)设置视线:
view(dim) 对二维或三维绘图使用默认视线。对默认二维视图,将 dim 指定为 2,对于默认三维视图,指定为 3。
view(ax,___) 指定目标坐标区的视线。
[caz,cel] = view(___) 分别将方位角和仰角返回为 caz 和 cel。指定上述任一语法中的输入参数,以获得新视线的角度。或者,不指定输入参数以获得当前视线的角度。
举例:view 通过不同的视角观察图形
>> sphere(50);shading flat;
light('Position',[1 3 2]);
light('Position',[-3 -1 3]);
material shiny;
axis vis3d off;
set(gcf,'Color',[1 1 1]);
view(-45,20);

**Light : light() ** 可从不同 光 线观察图形
light 在当前坐标区中创建一个光源。光源仅影响补片和曲面图对象。
light('PropertyName',propertyvalue,...) 使用给定属性的指定值创建一个 Light 对象。有关上述属性的说明,请参阅 Light 属性。MATLAB® 软件将该光源指定为当前坐标区的父级,除非您使用 Parent 属性指定了其他坐标区。
light(ax,...) 将在由 ax 指定的坐标区中而不是在当前坐标区 (gca) 中创建光源对象。选项 ax 可以位于前面的语法中的任何输入参数组合之前。
handle = light(...) 返回创建的 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,'Color','g');
L2=light('Position',[-6,-1,-1]);
set(L2,'Color','y');

注解:
1.sphere 创建球面。
2.shading 设置颜色着色属性
shading 函数控制曲面和补片图形对象的颜色着色。
shading flat每个网格线段和面具有恒定颜色,该颜色由该线段的端点或该面的角边处具有最小索引的颜色值确定。
shading faceted具有叠加的黑色网格线的单一着色。这是默认的着色模式。
shading interp通过在每个线条或面中对颜色图索引或真彩色值进行插值来改变该线条或面中的颜色。
shading(axes_handle,...)将着色类型应用于 axes_handle 指定的坐标区而非当前坐标区中的对象。使用函数形式时,可以使用单引号。
3.lighting phong 光照是使用定向光源照亮对象的技术。
4.AmbientStrength - 环境光的强度 0.3 (默认)
DiffuseStrength — 散射光的强度
Patch 属性
Patch 属性控制 Patch 对象的外观和行为。通过更改属性值,您可以修改该补片的特定方面。使用圆点表示法查询和设置属性。
p = patch;
c = p.CData;
p.CDataMapping = 'scaled';
可参考帮助文档:
https://ww2.mathworks.cn/help/matlab/ref/matlab.graphics.primitive.patch-properties.html?searchHighlight=AmbientStrength&s_tid=srchtitle_AmbientStrength_1
patch()
绘制一个或多个填充多边形区域
patch(X,Y,C) 使用 X 和 Y 的元素作为每个顶点的坐标,以绘制一个或多个填充多边形区域。patch 以您指定顶点的顺序连接这些顶点。要创建一个多边形,请将 X 和 Y 指定为向量。要创建多个多边形,请将 X 和 Y 指定为矩阵,其中每一列对应于一个多边形。C 决定多边形的颜色。
patch(X,Y,Z,C) 使用 X、Y 和 Z 在三维坐标中创建多边形。要在三维视图中查看这些多边形,请使用 view(3) 命令。C 确定多边形的颜色。
patch('XData',X,'YData',Y) 类似于 patch(X,Y,C),不同之处在于您不需要为二维坐标指定颜色数据。
patch('XData',X,'YData',Y,'ZData',Z) 类似于 patch(X,Y,Z,C),不同的是不需要为三维坐标指定颜色数据。
patch('Faces',F,'Vertices',V) 创建一个或多个多边形,其中 V 指定顶点的值,F 定义要连接的顶点。当有多个多边形时,仅指定唯一顶点及其连接矩阵可以减小数据大小。为 V 中的每个行指定一个顶点。要创建一个多边形,请将 F 指定为向量。要创建多个多边形,请将 F 指定为矩阵,其中一行对应于一个多边形。不要求每个面都具有相同的顶点数。要指定不同数量的顶点,请以 NaN 值填充 F。
patch(S) 使用结构体 S 创建一个或多个多边形。结构体字段对应于补片属性名称,字段值对应于属性值。例如,S 可以包含字段 Faces 和 Vertices。
patch(___,Name,Value) 创建多边形,并使用名称-值对组参数指定一个或多个补片属性。补片是包含所有已创建多边形的数据的对象。您可以使用上述语法中的任意输入参数组合指定补片属性。例如,'LineWidth',2 将所有多边形的轮廓宽度设置为 2 磅。
patch(ax,___) 将在由 ax 指定的坐标区中,而不是当前坐标区 (gca) 中创建补片。选项 ax 可以位于前面的语法中的任何输入参数组合之前。
p = patch(___) 返回包含所有多边形的数据的补片对象。使用 p 可在创建补片对象后查询并修改其属性。
举例:
>> 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;

注解:
hsv 颜色图数组
c = hsv 以三列数组形式返回 hsv 颜色图,其中包含的行数与当前图窗的颜色图相同。如果不存在图窗,则行数等于默认长度 256。数组中的每一行包含一种特定颜色的红、绿、蓝强度。强度介于 [0,1] 范围内,颜色方案如下图所示。

c = hsv(m) 返回包含 m 种颜色的颜色图。
练习一下:山水图
>> load cape
X=conv2(ones(9,9)/81,cumsum(cumsum(randn(100,100)),2));
surf(X,'EdgeColor','none','EdgeLighting','Phong',...
'FaceColor','interp');
colormap(map);caxis([-10,300]);
grid off;axis off;

注解:
conv2是二维卷积,C = conv2(u,v,A) 首先求 A 的各列与向量 u 的卷积,然后求每行结果与向量 v 的卷积。
cumsum累积和
cummax累积最大值
cummin累积最小值
caxis,(clim设置颜色图范围,R2022a从caxis更名为现在的名称clim)
clim(limits) 设置当前坐标区的颜色图范围。limits 是 [cmin cmax] 形式的二元素向量。颜色图索引数组中小于或等于 cmin 的所有值映射到颜色图的第一行。大于或等于 cmax 的所有值映射到颜色图的最后一行。介于 cmin 和 cmax 之间的所有值以线性方式映射到颜色图的中间各行。
EdgeLighting - 光源对象对边缘的影响 ‘none’ (默认) | ‘flat’ | ‘gouraud’ 光源对象对边缘的影响,指定为下列值之一: ‘flat’ - 将光源均匀地应用于每个边缘上。 ‘none’ - 不将来自光源对象的光源应用于各个边。 ‘gouraud’ - 计算顶点处的光源,然后以线性方式插入各个边缘中。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删