MATLAB 图形篇

MATLAB 图形篇

文章目录

  • MATLAB 图形篇
    • 一.线图
      • 1.二维线图
      • 2.三维线图
      • 3.阶梯图
      • 4.含误差条的线图
      • 5.填充区二维绘图
      • 6.具有公共 x 轴的几个变量的层叠绘图
    • 二.数据分布图
      • 1.直方图
      • 2.饼图
      • 3.散点图
      • 4.热图
      • 5.文字云
    • 三.离散数据图
      • 1.条形图
      • 2.针状图
      • 3.阶梯图
    • 四.地理图
    • 五.等高线图
    • 六.向量场
    • 七.曲面、体积、多边形
      • 1.部分三维图展示
      • 2.三维切片图
      • 3.四维图
    • 八.细节调参
      • 1.绘图调参界面
      • 2.图形句柄

一.线图

1.二维线图

%% 1.画多根线条
    plot(A)%若A为二维矩阵,按列画线条,条数为列数
    plot(x,[y1;y2;y3;……])%横坐标相同的多根折线
    plot(x1,y1,x2,y2,……)%横坐标不同的多根折线
    plotyy(x1,y1,x2,y2)%有两个纵坐标度
%% 2.设置线条颜色、线条类型、标记符号形状
	plot(x,y1,'g',x,y2,'b--o',x,y3,'c*')%y后面的单引号内容设置线条颜色、线条类型、标记符号形状等,无先后顺序
%% 3.标记特殊点
	plot(x,y,'-o','MarkerIndices',1:5:length(y))%每隔四个数据点标记一个数据。若只想标记部分特殊的数据点,先找到特殊数据点的位   	置,然后替换掉1:5:length(y)
%% 4.美观地标记特殊数据点
    x = -pi:pi/10:pi;
    y = tan(sin(x)) - sin(tan(x));
    plot(x,y,'--gs',...
        'LineWidth',2,...
        'MarkerSize',10,...
        'MarkerEdgeColor','b',...
        'MarkerFaceColor',[0.5,0.5,0.5])%指定线宽(LineWidth)、标记大小(MarkerSize)、标记轮廓颜色(MarkerEdgeColor)、标记	填充颜色(MarkerFaceColor)。可以和3一起使用,更美观地标记特殊数据点,如用红星标记最值:
    x = 1:100;
    y = rand(100,1);
    idxmin = find(y == max(y));
    idxmax = find(y == min(y));
    plot(x,y,'-h','MarkerIndices',[idxmin idxmax],...
        'MarkerFaceColor','red',...
        'MarkerSize',15)
%% 5.添加轴标签
	xlabel('x')
	ylabel('y')%添加轴标签
%% 6.subplot
    %subplot(m,n,p) 其中,m表示是图形排成的行数,n表示图形排成的列数,p表示图形所在的位置,位置顺序按照从左到右、从上到下计数。
    subplot(2,2,1);%左上
    plot(x,y1);
    subplot(2,2,2); %右上
    plot(x,y2);
    subplot(2,2,3); %左下
    plot(x,y3);
    subplot(2,2,4); %右下
    plot(x,y4);
%% 7.将线条断开/nan
	plot([1,2,NaN,4,5])%将线条断开。使用 NaN 和 Inf 值将行断开。例如此代码绘制前两个元素,跳过第三个元素,并使用最后两个元素绘制	 另一线条
%% 8.绘制置信范围
    %使用 fill 函数绘制置信范围,同时使用 plot 函数绘制数据点,以此方式创建含有置信范围的绘图
    x = 0:0.2:10;                     
    y = besselj(0, x);
    xconf = [x x(end:-1:1)] ;%一个来回         
    yconf = [y+0.15 y(end:-1:1)-0.15];%0.15就是条带宽度,换成矩阵就会有不同的宽度
    p = fill(xconf,yconf,'r','FaceColor',[1 0.8 0.8],'EdgeColor','none');%FaceColor为填充颜色,EdgeColor为边框颜色
    hold on
    plot(x,y,'ro')
    hold off
%% 9.双纵坐标清晰可调版
	plotyy()/yyaxis left/yyaxis right%双纵坐标
	days = 0:5:35;%使用两个 y 轴合并线图和条形图
    conc = [515 420 370 250 135 120 60 20];
    temp = [29 23 27 25 20 23 23 17];
    yyaxis left
    b = bar(days,temp);
    yyaxis right
    p = plot(days,conc);

MATLAB 图形篇_第1张图片

MATLAB 图形篇_第2张图片

MATLAB 图形篇_第3张图片

MATLAB 图形篇_第4张图片
MATLAB 图形篇_第5张图片
MATLAB 图形篇_第6张图片

MATLAB 图形篇_第7张图片

2.三维线图

%三维螺旋图
t = 0:pi/50:10*pi;
st = sin(t);
ct = cos(t);
plot3(st,ct,t)

MATLAB 图形篇_第8张图片

3.阶梯图

%stairs
X = linspace(0,1,30)';
Y = [cos(10*X), exp(X).*sin(10*X)];
h = stairs(X,Y);
h(1).Marker = 'o';
h(1).MarkerSize = 4;
h(2).Marker = 'o';
h(2).MarkerFaceColor = 'm';

MATLAB 图形篇_第9张图片

4.含误差条的线图

%绘制长度相等的垂直误差条
x = 1:10:100;
y = [20 30 45 40 60 65 80 75 95 90];
err = 8*ones(size(y));
errorbar(x,y,err)%err这里表示垂直误差条的长度,不同可以输入一维数组

%绘制长度不等的垂直+水平误差条
x = 1:10:100;
y = [20 30 45 40 60 65 80 75 95 90];
yneg = [1 3 5 3 5 3 6 4 3 3];
ypos = [2 5 3 5 2 5 2 2 5 5];
xneg = [1 3 5 3 5 3 6 4 3 3];
xpos = [2 5 3 5 2 5 2 2 5 5];
errorbar(x,y,yneg,ypos,xneg,xpos,'o')
%yneg 和 ypos分别控制垂直误差条下部和上部的长度。xneg 和 xpos分别控制水平误差条左侧和右侧的长度。

%数据点标记属性都可以更改
x = linspace(0,10,15);
y = sin(x/2);
err = 0.3*ones(size(y));
errorbar(x,y,err,'-s','MarkerSize',10,...
    'MarkerEdgeColor','red','MarkerFaceColor','red')

MATLAB 图形篇_第10张图片

MATLAB 图形篇_第11张图片

5.填充区二维绘图

%area,可以更改线条形状和填充颜色
Y = [1, 5, 3;
     3, 2, 7;
     1, 5, 3;
     2, 6, 1];
h = area(Y,'LineStyle',':');%Y为矩阵则按列画图
h(1).FaceColor = [0 0.25 0.25];
h(2).FaceColor = [0 0.5 0.5];
h(3).FaceColor = [0 0.75 0.75];

MATLAB 图形篇_第12张图片
MATLAB 图形篇_第13张图片

6.具有公共 x 轴的几个变量的层叠绘图

MATLAB 图形篇_第14张图片

二.数据分布图

1.直方图

%histogram直方图是统计每个数值出现的次数,还可以归一化再统计......其实一般没啥用,条形图bar更有用
x = randn(2000,1);
y = 1 + randn(5000,1);
h1 = histogram(x);
hold on
h2 = histogram(y);
h1.Normalization = 'probability';%归一化
h1.BinWidth = 0.25;
h2.Normalization = 'probability';%归一化
h2.BinWidth = 0.25;

MATLAB 图形篇_第15张图片

MATLAB 图形篇_第16张图片

MATLAB 图形篇_第17张图片

2.饼图

%pie
X = 1:3;
explode = [1 0 0];%1表示弹出
labels = {'Taxes','Expenses','Profit'};%设置文本标签,没有这一行默认是所占百分比
p = pie(X,explode,labels)
t = p(2);%第一块的标签
t.BackgroundColor = 'c';
t.EdgeColor = 'red';
t.FontSize = 14;
%三维饼图是pie3,用法和pie一模一样

MATLAB 图形篇_第18张图片
MATLAB 图形篇_第19张图片

MATLAB 图形篇_第20张图片

3.散点图

%scatter
x = linspace(0,3*pi,200);
y = cos(x) + rand(1,200);
sz = linspace(1,100,length(x));%改变圆圈尺寸,可以为常数
c = linspace(1,10,length(x));%改变圆圈颜色
scatter(x,y,sz,c)%只想改变圆圈颜色的话记得sz处写成[],想变成实心的就在最后面加上,'filled'
grid on;set(gca,'GridLineStyle',':','GridColor','b','GridAlpha',1);%添加网格虚线
%三维散点图用scatter3

MATLAB 图形篇_第21张图片

MATLAB 图形篇_第22张图片

MATLAB 图形篇_第23张图片

MATLAB 图形篇_第24张图片

MATLAB 图形篇_第25张图片

MATLAB 图形篇_第26张图片

MATLAB 图形篇_第27张图片

MATLAB 图形篇_第28张图片
MATLAB 图形篇_第29张图片

4.热图

MATLAB 图形篇_第30张图片

MATLAB 图形篇_第31张图片

MATLAB 图形篇_第32张图片

MATLAB 图形篇_第33张图片

MATLAB 图形篇_第34张图片

5.文字云

MATLAB 图形篇_第35张图片

MATLAB 图形篇_第36张图片

三.离散数据图

1.条形图

MATLAB 图形篇_第37张图片

MATLAB 图形篇_第38张图片

MATLAB 图形篇_第39张图片

MATLAB 图形篇_第40张图片

MATLAB 图形篇_第41张图片

MATLAB 图形篇_第42张图片

MATLAB 图形篇_第43张图片

MATLAB 图形篇_第44张图片
MATLAB 图形篇_第45张图片
MATLAB 图形篇_第46张图片
MATLAB 图形篇_第47张图片
MATLAB 图形篇_第48张图片

2.针状图

MATLAB 图形篇_第49张图片

MATLAB 图形篇_第50张图片

MATLAB 图形篇_第51张图片

MATLAB 图形篇_第52张图片

MATLAB 图形篇_第53张图片

MATLAB 图形篇_第54张图片

MATLAB 图形篇_第55张图片

3.阶梯图

MATLAB 图形篇_第56张图片

MATLAB 图形篇_第57张图片

MATLAB 图形篇_第58张图片

四.地理图

MATLAB 图形篇_第59张图片

MATLAB 图形篇_第60张图片

MATLAB 图形篇_第61张图片

MATLAB 图形篇_第62张图片

MATLAB 图形篇_第63张图片

MATLAB 图形篇_第64张图片

五.等高线图

MATLAB 图形篇_第65张图片

MATLAB 图形篇_第66张图片

MATLAB 图形篇_第67张图片

MATLAB 图形篇_第68张图片

MATLAB 图形篇_第69张图片

MATLAB 图形篇_第70张图片

MATLAB 图形篇_第71张图片

六.向量场

b=zz; %相关性数值
 
r=a*pi/180;%将角度转为弧度 
 
[x,y]=pol2cart(r,b); 
 
hd=compass(x,y) plottools 

MATLAB 图形篇_第72张图片
MATLAB 图形篇_第73张图片

七.曲面、体积、多边形

1.部分三维图展示

MATLAB 图形篇_第74张图片

MATLAB 图形篇_第75张图片

MATLAB 图形篇_第76张图片

MATLAB 图形篇_第77张图片

MATLAB 图形篇_第78张图片

MATLAB 图形篇_第79张图片

MATLAB 图形篇_第80张图片

MATLAB 图形篇_第81张图片

MATLAB 图形篇_第82张图片

MATLAB 图形篇_第83张图片

2.三维切片图

%三维切片图需要四个指标,且X,Y,Z,V都是三维的,多了一个v其实就是由曲面变成了实心体,v表示三维体的内部情况
clc;clear;close all;
[X,Y,Z] = meshgrid(-2:.2:2);%由一维扩充成三维,这样生成的X,Y,Z都是三维的
V = X.*exp(-X.^2-Y.^2-Z.^2);%V也是三维的

xslice = [-1.2,0.8,2];%画平行于yoz的切平面   
yslice = [];%画平行于xoz的切平面 
zslice = 0;%画平行于xoy的切平面 
slice(X,Y,Z,V,xslice,yslice,zslice)

在这里插入图片描述

%面
x=-2:.2:2;y=-2:.2:2;z=-2:.2:2;
[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4');%插值
surf(X,Y,Z)

MATLAB 图形篇_第84张图片

%把面变成实心体,对实心体切面就是三维切片图
x=-2:.2:2;y=-2:.2:2;z=-2:.2:2;
[X,Y,Z] = meshgrid(-2:.2:2);%由一维扩充成三维,这样生成的X,Y,Z都是三维的
V = X.*exp(-X.^2-Y.^2-Z.^2);%V也是三维的

xslice = [-1.2,0.8,2];%画平行于yoz的切平面   
yslice = [];%画平行于xoz的切平面 
zslice = 0;%画平行于xoy的切平面 
slice(X,Y,Z,V,xslice,yslice,zslice)
hold on
[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4');%插值
surf(X,Y,Z)

MATLAB 图形篇_第85张图片

3.四维图

%四维图其实是动态三维图,第四维为时间,只能用动图或视频表示
[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);
v = x.*exp(-x.^2-y.^2-z.^2);
xslice = [-1.2,.8,2];
yslice = 2;
zslice = [-2,0];
[xsp,ysp,zsp] = sphere;
slice(x,y,z,v,[-2,2],2,-2)
for i = -3:.2:3
    hsp = surface(xsp + i,ysp,zsp);
    rotate(hsp,[1 0 0],90)
    xd = get(hsp,'XData');
    yd = get(hsp,'YData');
    zd = get(hsp,'ZData');
    delete(hsp)
    hold on
    hslicer = slice(x,y,z,v,xd,yd,zd);
    axis tight
    xlim([-3,3])
    view(-10,35)
    drawnow
    delete(hslicer)
    hold off
end

在这里插入图片描述

八.细节调参

1.绘图调参界面

在画图代码的最后面加上

plottools

即可自动调出编辑界面,可视化同步

2.图形句柄

图形对象有所画的点、线、面、文本、坐标轴、窗口等,**句柄(**handle)是图形对象的唯一标识符,不同对象的句柄不同,句柄变量就相当于对象名。

命令 功能
hd1=plot(x,y) hd1为该曲线的句柄变量
hd2=scatter(x,y) hd2为散点的句柄变量
hd3=gcf hd3为当前图形窗口的句柄变量
hd4=gca hd4为当前坐标轴的句柄变量

上述命令不加分号,会在命令行窗口输出各个对象的属性,知道属性就可以通过更改属性值来获得满意的图像啦

我们可以通过set函数重新设定对象属性,可以通过get函数获取属性值

  1. set

    set(图形句柄,属性名1,属性值1,属性名2,属性值2,……)

  2. get

    get(图形句柄,属性名)

一些具体的属性设置,诸如 position、title、xlabel / ylabel / zlabel、xlim / ylim / zlim 等的用法,在此就不再具体展开

你可能感兴趣的:(MATLAB知识框架)