Matlab_plot

请注意,本文最近一次更新于:2022-04-07,文章内容可能已经不具有时效性,请谨慎参考

本文最后更新于:2022年4月7日星期四晚上7点14分 +08:00

自2021-11-08推出第一篇文章后承诺的系列文章杳无音讯,疯狂当鸽子🕊,最近开始慢慢摸索Matlab的使用了,决定收回飞出去的鸽子,本文先说说绘图问题。


Matlab

绘图基础

绘图选项
绘图选项
曲线类型曲线颜色曲线颜色标记符号标记符号
选项意义选项意义选项意义选项意义选项意义
‘-‘实现‘b’蓝色‘c’蓝绿色‘*’星号‘pentagram’
‘–’虚线‘g’绿色‘k’黑色‘**’点号‘o’
‘:’点线‘m’红紫色‘r’红色‘x’叉号‘square’
‘-.’点划‘w’白色‘y’黄色‘v’‘diamond’
‘none’无线‘[r,g,b]’自定义‘^’‘hexagram’
‘>’左三角‘<’右三角

特殊绘图曲线
特殊二维曲线绘图函数
函数名含义常见调用格式
bar()二维条形图bar(x,y)
comet()彗星状轨迹图comet(x,y)
compass()罗盘图compass(x,y)
errorbar()误差限图errorbar(x,y,l,u)
feather()羽毛状图feather(x,y)
fill()二维填充函数fill(x,y,c)
hist()直方图hist(y,n)
loglog()对数图loglog(x,y)
polar()极坐标图ploar(x,y)
quiver()磁力线图quover(x,y)
stairs()阶梯状图stairs(x,y)
stem()火柴杆图stem(x,y)
semilogx()半对数图semilogx(x,y)
semilogy()半对数图semilogy(x,y)
plotmatrix()散点图plotmatrix(x)

绘图基础指令
  • 二维绘图

    1
    2
    3
    4
    % x,y为数据集,paras为绘图选项,下同
    plot(x,y,'paras')
    plot(x1,y1,'paras1',x2,y2,'paras2',...)
    plot(y)
    • Demostration:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      plot(x,y):
      如果 X 和 Y 都是向量,则它们的长度必须相同。plot 函数绘制 Y 对 X 的图。
      如果 X 和 Y 均为矩阵,则它们的大小必须相同。plot 函数绘制 Y 的列对 X 的列的图。
      如果 X 或 Y 中的一个是向量而另一个是矩阵,则矩阵的各维中必须有一维与向量的长度相等。如果矩阵的行数等于向量长度,则 plot 函数绘制矩阵中的每一列对向量的图。如果矩阵的列数等于向量长度,则该函数绘制矩阵中的每一行对向量的图。如果矩阵为方阵,则该函数绘制每一列对向量的图。
      如果 X 或 Y 之一为标量,而另一个为标量或向量,则 plot 函数会绘制离散点。但是,要查看这些点,您必须指定标记符号,例如 plot(X,Y,'o')。
      plot(y):
      如果 Y 是向量,x 轴的刻度范围是从 1length(Y)。
      如果 Y 是矩阵,则 plot 函数绘制 Y 中各列对其行号的图。x 轴的刻度范围是从 1 到 Y 的行数。
      如果 Y 是复数,则 plot 函数绘制 Y 的虚部对 Y 的实部的图,使得 plot(Y) 等效于 plot(real(Y),imag(Y))。
  • 三维绘图

    1
    plot3(x,y,z,'paras');
  • 标题&名称&格栅

    1
    2
    3
    4
    5
    6
    xlabel('name'); % x轴标题,下同
    ylabel('name');
    zlabel('name');
    title('name');
    grid on; % 开启格栅
    grid off; % 关闭格栅
  • 特定数据点显示标记

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    % 指定标记符号 设定MarkerIndices属性 设定取点步长
    x = [data];
    plot(x,'-marksign','MarkerIndices','step');
    y = [data];
    z = function(y);
    plot(y,z,'-marksign','MarkerIndices','step');
    % '-'一定不能少,marksign为上表中标记符号之一,'step'自行设定步长
    % 举例如下
    % 生成10*10的幻数矩阵
    % ☆标记,每五个数据点标注一个
    x = magic(10);
    plot(x,'-pentagram','MarkerIndices',1:5:length(x));
    % 生成0-100内均匀取样50个点,生成余弦函数
    % ⚪标记,每隔10个去一个样点
    x=linspace(0,100,50);
    y=cos(x);
    plot(x,y,'-o','MarkerIndices',1:10:length(y));
  • 指定线宽,标记大小与颜色

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    plot(x,y,'-marksign',...
    'LineWidth',value,...
    'MarkerSize',value...,
    'MarkerEdgeColor','colorsign',...
    'MarkerFaceColor',[value,value,value]
    )
    % LineWidth 设置线宽
    % MarkerSize 设置标记大小
    % MarkerEdgeColor 设置标记边框颜色
    % MarkerFaceColor 设置标记面颜色,由rgb矩阵表示,数值均为小于1的数
    % 不要忘记...表示代码延续
    % 举个例子
    x = 1:5:100;
    y=x.^2;
    plot(x,y,'-v',...
    'LineWidth',2,...
    'MarkerSize',10,...
    'MarkerEdgeColor','b',...
    'MarkerFaceColor',[0.2,0.4,0.6]
    )
  • 一图中绘制多条曲线

    1
    2
    3
    4
    plot(x1,y1,'paras');
    % hold on 指令实现绘制多曲线
    hold on;
    plot(x2,y2,'paras')
  • 双Y轴图像

    1
    2
    % (x,y);(z,w)
    plotyy(x,y,z,w)
  • 绘制多幅图

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    % row:行数 line:列数 index:图标序列号[1,row*line]
    subplot(row,line,index);
    plot(x1,y1,'paras');

    subplot(row,line,index);
    plot(x2,y2,'paras');

    subplot(row,line,index);
    plot(x3,y3,'paras');

    subplot(row,line,index);
    plot(x4,y4,'paras');
    ......
  • 绘制圆形

    1
    2
    3
    4
    5
    6
    7
    8
    r = value; % 半径
    xc = value; % 圆心
    yc = value; % 圆心
    theta = linspace(0,2*pi);
    x = r*cos(theta)+xc;
    y = r*sin(theta)+yc;
    plot(x,y);
    axis equal; % 沿每个坐标方向使用相等的数据单位
  • 绘制散点图

    1
    2
    3
    4
    5
    % 随机生成 20*4的数据矩阵
    x=randn(20,4);
    % 绘制散点图,每张散点图包含20个散点
    plotmatrix(x);

参数列表
  • marksign: Marker,标记符号,查阅上表即可
  • LineStyle: 线型,查阅上表即可
  • Color: 颜色,可以查阅上表,支持RGB三元组,支持十六进制颜色代码,支持英文全称
  • MarkerIndices: 显示标记数据索引
    1
    2
    3
    示例: plot(x,y,'-o','MarkerIndices',[1 5 10]) 在第一、第五和第十个数据点处显示圆形标记。
    示例: plot(x,y,'-x','MarkerIndices',1:3:length(y)) 每隔三个数据点显示一个交叉标记。
    示例: plot(x,y,'Marker','square','MarkerIndices',5) 在第五个数据点显示一个正方形标记。
  • MarkerEdgeColor: 标记轮廓颜色,支持上表内容,支持RGB三元组,支持十六进制代码
  • MarkerFaceColor: 标记填充颜色,支持上表内容,支持RGB三元组,支持十六进制代码
  • MarkerSize: 标记大小
  • DatetimeTickFormat datetime刻度标签格式
    1
    2
    3
    4
    5
    示例: 'DatetimeTickFormat','eeee, MMMM d, yyyy HH:mm:ss' 显示日期和时间,例如 Saturday, April 19, 2020 23:41:06
    示例: 'DatetimeTickFormat','yyyy-MM-dd' 显示日期,例如 2022-03-30
    示例: 'DatetimeTickFormat','dd.MM.yyyy' 显示日期,例如 30.03.2022
    示例: 'DatetimeTickFormat','dd/MM/yyyy' 显示日期,例如 30/03/2022
    示例: 'DatetimeTickFormat','MMMM d, yyyy HH:mm:ss Z' 显示日期和时间,例如 March 30, 2022 22:41:06 -0400
  • DurationTickFormat: 刻度标签格式

读取Excel表格数据

读取方法
  • 读入Excel数据
    1
    2
    var = xlsread('absolute_path','sheet','scope')
    xls=xlsread('C:\Users\NKU\Desktop\matlab.xlsx','Sheet1','A1:A20');
    • Demostration:
      1
      2
      3
      4
      5
      var: 随便取一个变量名
      xlsread(): 读入Excel的专用函数
      absolute_path: 待读取xls文件的绝对路径
      sheet: 需要读取的是哪个工作表,可以为工作表名称
      scope: 表示需要读取的数据的范围,即数据所在的行列
  • 写入数据
    1
    xlswrite('absolute_path','sheetname','sheet','scope')
    • Demostration:
      1
      2
      3
      4
      5
      该函数包含了四个参数
      第一个参数是文件的路径
      第二个参数是要写入的数据集的名称
      第三个参数是第几个工作表,这个参数你也可以写该工作表的名称,
      第四个参数是在表格中写入的位置,如果默认从A1的位置开始,则可以不写

参考资源


您阅读这篇文章共花了:
Invitation
USTC-茶糜花开
FeynmanDirac
created:12/03/2022
Welcome to USTC-茶糜花开

This is an identification card as an honored membership of FeynmanDirac

Happy to see you follow FeynmanDirac, enjoy science together

© 版权声明
验证码启动中...