初阶绘图

  • 前言
  • 一、基础绘图
    • 1.plot() 绘制二维线图
    • 2.legend()添加图例
    • 3.title()和*label()添加标题与坐标轴
    • 4.text()和annotation()增加注解
  • 二、更改图像属性
    • 1.获取图像的相关 handle
    • 2.设置数轴的字体与刻度
    • 3.更改线条属性
    • 4.描点属性
    • 5.多图
    • 6.图像个性化操作
    • 7.保存图像

前言

【台大郭彦甫】PPT链接:https://pan.baidu.com/s/1VXdy3HCBPexMK0csyehiZA 提取码:2io1
matlab官方帮助文档:https://ww2.mathworks.cn/help/


一、基础绘图

1.plot() 绘制二维线图

plot()

  • plot(x,y):如果 X 和 Y 都是向量,则它们的长度必须相同,plot 函数绘制 Y 对 X 的图;
  • plot(y):横坐标为1.2.3…
plot(cos(0:pi/20:2*pi))

  • plot(X,Y,LineSpec) 设置线型、标记符号和颜色。例如'--or' 是带有圆形标记的红色虚线。

  • hold 保留当前坐标区中的绘图
    hold on保留;hold off 关闭此功能

eg.

hold on
plot(cos(0:pi/20:2*pi));
plot(sin(0:pi/20:2*pi));
hold off

2.legend()添加图例

eg.

x=0:0.5:4*pi;
y=sin(x);
h=cos(x);
w=1./(1+exp(-x));
g=(1/(2*pi*2)^0.5).*exp((-1.*(x-2*pi).^2)./(2*2^2));
plot(x,y,'bd-',x,h,'gp:',x,w,'ro-',x,g,'c^-')
  • legend()
    参数内容与画图时 plot() 的参数内容一一对应
legend('sin(x)','cos(x)','Sigmoid','Gaussfunction');

3.title()和*label()添加标题与坐标轴

  • title() 添加标题
  • xlabel()、ylabel()、zlabel()为 x y z 轴添加题注;
  • \pie^{-x}

eg.

x = 0:0.1:2*pi;
y1 = sin(x);
y2 = exp(-x);
plot(x, y1, '--*', x, y2, ':o');
xlabel('t = 0 to 2\pi');
ylabel('values of sin(t) and e^{-x}');
title('Function Plots of sin(t) and e^{-x}');
legend('sin(t)','e^{-x}');

4.text()和annotation()增加注解

  • line绘制基本线条. 在课件的这段代码中,line() 的第一个参数是 x 坐标,第二个参数是 y 坐标. 按照这两个向量连线画图;其实效果与plot差不多,基本的使用也与plot一样

  • text() 向数据点添加文本说明
    text(x,y,txt) 前两个参数是说明在图中的起始位置

  • annotation(lineType, x, y) 创建一个在当前图窗中的两个点之间延伸的线条或箭头注释
    lineType 指定为 line(线条)、arrow(箭头) 或 doublearrow(双向箭头).
    xy 分别指定为 [x_begin, x_end] 和 [y_begin, y_end] 形式的二元素向量.

eg.

x = linspace(0,3);
y = x.^2.*sin(x);
plot(x,y);
line([2,2],[0,2^2*sin(2)]);
str = '$$ \int_{0}^{2} x^2\sin(x) dx $$';
text(0.25,2.5,str,'Interpreter','latex');
annotation('arrow','X',[0.32,0.5],'Y',[0.6,0.4]);
  • text()中第3个参数是 latex 语句字符串,后两个是使用 latex 语法添加说明时的固有格式。

    练习
  • linspace是Matlab中的一个指令,用于产生x1,x2之间的N点行矢量。其中x1、x2、N分别为起始值、中止值、元素个数。若缺省N,默认点数为100。
t = linspace(1,2);
f = t.^2;
g = sin(2*pi*t);
p = plot(t,f,'b',t,g,'ro');
xlabel('Time(ms)');
ylabel('f(t)');
title('Mini Assignment #1');
legend({'t^{2}' ,'sin(2\pi t)'},'location','best');

二、更改图像属性

  • Tick为坐标轴的标识间隔的小线段

    先认识图像:
  • 绘图物件有:Figure Axes Line 三个 Object

eg.

x = linspace(0, 2*pi, 1000);y = sin(x);
plot(x,y);set(gcf, 'Color', [1 1 1]);

  • 可以通过”编辑-图窗属性“查看属性名称、属性值等

1.获取图像的相关 handle

  • handle即id number

h = plot(x,y)
  • 上述代码为画出图形,并把图形 Line 的 handle赋值为h (类似于file id),以后便可以通过 h 来改变 Line 的一些属性; gcf、gca为Figure(图像)和Axes(数轴)固定的id

eg.

x = linspace(0, 2*pi, 1000);
y = sin(x);
h = plot(x,y);
get(h)
get(gca)
  • 上述代码使用get(h)返回sin函数曲线的各属性值;get(gca)返回坐标轴的各属性值

2.设置数轴的字体与刻度

  • set()设置图形对象属性;

eg.设置刻度范围

set(gca,'XLim', [0, 2*pi]);
set(gca,'YLim', [-1.2, 1.2]);
  • xlim()设置或查询 x 坐标轴范围,可以达到上面代码同样的效果。
xlim([0, 2*pi]);
ylim([-1.2, 1.2]);


eg.设置字体

set(gca,'FontSize', 25);


eg.设置坐标轴刻度及刻度标签
XTick为x轴的小竖线;XTickLabel为x轴竖线下的数值

set(gca,'XTick', 0:pi/2:2*pi);
set(gca,'XTickLabel', 0:90:360);


想要数轴上显示Π标志,课程中使用如下方法:

但提到的 Symbol 字体,现有的matlab不再支持。因此换为如下:

set(gca,'XTick', 0:pi/2:2*pi);
set(gca,'XTickLabel', {'0','\pi/2','\pi','3\pi/2','2\pi'});

3.更改线条属性

  • 设置线条的格式、宽度、颜色
set(h,'LineStyle','-.','LineWidth',7.0,'Color','g');


也可以在画图的时候直接设置,如下:

plot(x,y,'-.g','LineWidth',7.0);

delete(h)将画好的图形清除;

delete(h);
  • 使用圆点法画图
 x = linspace(-2*pi,2*pi);y1 = sin(x);y2 = cos(x);p = plot(x,y1,x,y2);


更改属性

p(1).LineWidth = 2;
p(2).Marker = '*';

4.描点属性


练习

t = linspace(1,2);
f = t.^2;
g = sin(2*pi*t);
p = plot(t,f,'b',t,g,'ro');
legend({'t^{2}','sin(2\pi t)','location','best'});
title('Mini Assingment #1');
xlabel('Time(ms)');
ylabel('f(t)');

p(1).Color='k';
p(1).LineWidth=3;
p(2).MarkerEdgeColor='m';
p(2).MarkerFaceColor='#7E2F8E';
p(2).MarkerSize=4;
g=gca;
g.FontSize=15;

5.多图

  • 多个窗口多个图像
  • figure创建两个视窗

eg.

x = -10:0.1:10;
y1 = x.^2-8;
y2 = exp(x);
figure,plot(x,y1);
figure,plot(x,y2);


  • 需要注意的是:再画完多图后,调用gcf/gca操作时,只作用在最新窗口的图像上,如上代码为Figure2是最新窗口。

  • 一个窗口多个图像
    subplot(m,n,1)表示m行n列并从1开始指定坐标区

    eg.连接3、4两个位置画一个长图:
subplot(2,2,1);
x = linspace(-3.8,3.8);
y_cos = cos(x);
plot(x,y_cos);
title('Subplot 1: Cosine')subplot(2,2,2);
y_poly = 1 - x.^2./2 + x.^4./24;
plot(x,y_poly,'g');
title('Subplot 2: Polynomial')subplot(2,2,[3,4]);
plot(x,y_cos,'b',x,y_poly,'g');
title('Subplot 3 and 4: Both')

6.图像个性化操作

  • axis normal:自动调整轴的纵横比和数据单元的相对缩放比例
    axis square:使当前区域为正方形
    axis equal:设置纵横比,使各个方向上的数据单位相同
    axis equal tight:将轴限制设置为数据范围

eg.

t = 0:0.1:2*pi;
x = 3*cos(t);
y = sin(t);
subplot(2,2,1);plot(x,y);axis normal
subplot(2,2,2);plot(x,y);axis square
subplot(2,2,3);plot(x,y);axis equal
subplot(2,2,4);plot(x,y);axis equal tight

  • grid on /off显示或隐藏坐标区网格线
  • box on /off显示或隐藏坐标区轮廓
  • axis on /off显示或隐藏坐标区的线条和背景

eg.上面案例中最后一个关掉坐标轴及背景

axis off

7.保存图像

  • saveas(fig,filename)使用指定的文件格式创建文件。
  • 如果需要高解析度的图片,使用print()函数。

eg.

x = [2 4 7 2 4 5 2 5 1 4];
bar(x);
saveas(gcf,'Barchart.png')

【台大郭彦甫】Matlab入门教程超详细学习笔记五:初阶绘图(附PPT链接)相关推荐

  1. 【台大郭彦甫】Matlab入门教程超详细学习笔记二:基本操作与矩阵运算(附PPT链接)

    Matlab入门教程超详细学习笔记二:基本操作与矩阵运算 前言 一.基本操作 1.把matlab当作计算器使用 2.变量 3.控制格式输出 二.矩阵运算 1.矩阵 2.矩阵索引 3.使用:创建向量 4 ...

  2. 【台大郭彦甫】Matlab入门教程超详细学习笔记七:数值微积分(附PPT链接)

    数值微积分 前言 一.多项式微积分 1. 多项式计算 2. 多项式微分 3. 多项式积分 二.数值微积分 1. 数值微分法 2. 高阶微分法 3. 数值积分法 三.回顾Function Handles ...

  3. 【台大郭彦甫】Matlab入门教程超详细学习笔记六:高阶绘图(附PPT链接)

    高阶绘图 前言 一.进阶二维绘图 1. 对数图 2.一图双y轴 3. 直方图 4. 条形图 5. 饼状图 6. 极坐标图 7. 阶梯图与取样图 8. 箱线图以及误差线图 9. 填充图 二.配色 1.R ...

  4. 【台大郭彦甫】Matlab入门教程超详细学习笔记四:数据类型与文件读写(附PPT链接)

    变量类型与文件读写 前言 一.变量类型 1.numeric(数值类型) 2.char(字符类型) 3.string(字符串类型) 4.structure(结构体) 5.cell(元胞数组) 5.高维数 ...

  5. 台大郭彦甫-Matlab软件学习课堂exercise示例(第二讲)

    台大郭彦甫-Matlab软件学习课堂exercise示例 (仅供参考) 第二讲 基本操作与矩阵输入 (P6 exercise) >> cos(((1+2+3+4)^3/5)^(1/2))a ...

  6. Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)

    所有示例使用的数据表均为Oracle提供的SQL基础数据表(t_employees.sql dept.sql emp.sql salgrade.sql) 熟练掌握多多练习即可达到完成后端开发所需具备的 ...

  7. 陈宝林《最优化理论与算法》超详细学习笔记 (七)————第五章 运输问题

    陈宝林<最优化理论与算法>超详细学习笔记 (七)----第五章 运输问题 第1节 运输问题的数学模型 第2节 表上作业法 2.1 确定初始基可行解 2.2 最优解的判别 2.3 改进的方法 ...

  8. 陈宝林《最优化理论与算法》超详细学习笔记 (二)————补充知识(凸集) 第二章 线性规划的基本性质

    陈宝林<最优化理论与算法>超详细学习笔记 (二)----补充知识 凸集 & 第二章 线性规划的基本性质 补充知识 凸集 方向与极方向 表示定理 择一定理 第一章 线性规划的基本性质 ...

  9. 陈宝林《最优化理论与算法》超详细学习笔记 (八)————最优性条件

    陈宝林<最优化理论与算法>超详细学习笔记 (八)----最优性条件 无约束问题的极值条件 必要条件 二阶充分条件 充要条件 约束极值问题的最优性条件 不等式约束的一阶最优性条件 无约束问题 ...

最新文章

  1. 超级队长VR线下体验店落地上海,让娱乐突破想象
  2. python爬虫怎么做毕业设计_python语言爬虫做成毕业设计的话,怎样答辩演示,或者怎样把爬虫复杂化?...
  3. 接口测试用例模板_ITest:京东数科接口自动化测试实践
  4. CenterOS x64安装serv-U
  5. 前端学习(224):iconfont矢量库
  6. ajax 传字符串到后台,JSON.stringify()将JSON对象转换为字符串通过Ajax传入到后台处理...
  7. 建立自己的唱机前置放大器
  8. pycharm查看关键词的方法
  9. Java快逸报表展现demo,快逸报表展示图片—来自数据库中的图片
  10. php自动发卡程序8.0_API支付代理版自动发卡平台源码 v4.5.8
  11. 计算机视觉——Harris角点检测(课堂实验)
  12. python 布尔值取反_如何在Python中获得布尔值的相反(否定)?
  13. jquery 抓取微博_使用jQuery和RegexJavaScript进行客户端网络抓取
  14. mysql pdo 端口_pdo连接mysql
  15. SqlDbx连接Mysql中文乱码
  16. 分享一下自己存的网站
  17. win10用html文件做壁纸,利用win10自带工具制作动态壁纸的简单方法
  18. For循环—函数初步概念
  19. Windows Server 2008 R2中关闭“IE增强的安全配置”
  20. python逐行写入文件_Python文件逐行写入

热门文章

  1. 关于numeric_limits
  2. 串口配置c语言,C语言驱动之配置串口(基于S3C2440开发板)
  3. 一些对模糊搜索的思考
  4. 【Python】Windows下安装Dpark
  5. statusBar控件
  6. 嵌入式ARM设计编程(三) 处理器工作模式
  7. ios 隐私政策网址(URL)
  8. 介绍一下ROS常用的命令<rosnode和rostopic实操>(一)
  9. matlab 电压矢量开关,解析电压空间矢量研究及Matlab仿真
  10. Vue路由懒加载报错问题解决