MATLAB:常用绘图tips

标题换行

  1. 利用newline
    title([str1,neline,str2])
  2. 利用cell
    title({str1;str2})

在一个ax中绘制多条line

  1. plot(ax,x1,y1,x2,y2);
  2. 利用hold(ax,‘on’)
plot(ax,x1,y1)
hold(ax,'on')
plot(ax,x2,y2)

注意:默认情形下,ax是hold off的。

指定坐标轴范围

axis([0 1 0 0.018]);
or
xlim(), ylim()

plot(x,y,‘ro’)

功能:绘制散点图
实现方法:plot(x,y,‘ro’)
‘ro’:表示颜色+形状。
常用颜色和形状见:绘图属性.md
实例:

x=1:5;
y=x.^2;
figure();
plot(x,y,'ro')

MATLAB:常用绘图tips_第1张图片

xtick,xticklabel

figure();
x = 1:5;
x_str = cell(1,length(x));
for i = 1:length(x)
   x_str{i} = ['Q',num2str(x(i))]; 
end
y = x.^2;
plot(x, y, 'bo')
xticks(x)
xticklabels(x_str)
xtickangle(45)

ytick, yticklabel同理
MATLAB:常用绘图tips_第2张图片

yyaxis:绘制两个2y轴

功能:同一个自变量x,有两个因变量y1,y2。但y1,y2的量级相差很远,若是共用一个y轴,则不好同时显示两者的变化。因此需要建立各自的y轴。一左一右。
实例:

x=1:5;
y1=x.^2;
y2=log10(x);
figure();
yyaxis left;
plot(x,y1);
yyaxis right
plot(x,y2);

MATLAB:常用绘图tips_第3张图片

XY坐标轴比例尺一样

axis equal

imagesc(x,y,z’)

功能:作二维图。
要求:x长度为a,y长度位b,Z为a*b
实例:

x=1:5;
y=1:10;
z=reshape(1:50,10,5)';
figure();
imagesc(x,y,z');
set(gca,'Ydir','normal');

MATLAB:常用绘图tips_第4张图片

surf(mesh_x,mesh_y,z’)

功能:作三维图。通过view(2),可以2维显示
要求:
原始数据:x长度为a,y长度为b,z长度为a*b
处理后:[mesh_x,mesh_y]=meshgrid(x,y);
实例:

x=1:5;
y=1:10;
z=reshape(1:50,10,5)';
[mesh_x,mesh_y]=meshgrid(x,y);
surf(mesh_x,mesh_y,z')
view(2)
colorbar;
colormap('jet')

MATLAB:常用绘图tips_第5张图片
对比上面两幅二维图:
imagesc的每个点是一个矩形,surf的每个点是是一个网格,所以surf的矩形不代表一各点。

surf(mesh_x,mesh_y,z’) 三维图

x1=-100:1:100;
x2=-100:1:100;
z=f(x1,x2);

[mesh_x,mesh_y]=meshgrid(x1,x2);
surf(mesh_x,mesh_y,z')
% view(2)
colorbar;
colormap('jet')

function result=f(x1,x2)
result=zeros(length(x1),length(x2));
for i=1:length(x1)
    for j=1:length(x2)
        result(i,j)=20+(x1(i)/30-1)^2+(x2(j)/20-1)^2-10*(cos(pi*(x1(i)/30-1))+cos(pi*(x2(j)/20-1)));
    end
end
end

MATLAB:常用绘图tips_第6张图片
view(0,0)可查看正视图
MATLAB:常用绘图tips_第7张图片
view(90,0)可查看侧视图
MATLAB:常用绘图tips_第8张图片
view(0,90)可查看俯视图
MATLAB:常用绘图tips_第9张图片

不显示坐标轴

axis off

gscatter

方法接口
h = gscatter(x,y,group,clr,sym)(常用形式之一,更具体见matlab帮助文档)
x: 向量,所有数据点的横坐标
y:向量,所有数据买的纵坐标
group:向量,描述每一个数据点的group,可以是如下:

  1. 数值向量:[1 2 2 1 2]
  2. 逻辑向量:[0 1 1 0 1]
  3. 字符串数组cell:{‘Male’,‘Female’,‘Female’,‘Male’,‘Female’}
  4. Categorical vector(我不常用): Male Female Female Male Female

clr:指定color
sym:指定marker形状

使用场景
scatter plot by group

实例

sigma = 0.5;
n = 100;
x1 = sigma*randn(n,1)+1;
y1 = sigma*randn(n,1)+1;
label1 = zeros(n, 1) + 1;
x2 = sigma*randn(n,1)-1;
y2 = sigma*randn(n,1)-1;
label2 = zeros(n, 1) - 1;
Xdata = [x1,y1;x2,y2];
Ylabel = [label1;label2];
figure();
gscatter(Xdata(:,1), Xdata(:,2), Ylabel, 'br', 'xo')
xlabel('x');
ylabel('y');

MATLAB:常用绘图tips_第10张图片

你可能感兴趣的:(matlab,matlab)