matlab—基础绘图

九、基础绘图

9.1 plot()

plot函数是matlab中用于作图的函数,常用格式为:plot(x,y),x代表着横坐标,y代表纵坐标,一般情况下如果是画一组连续的图,x和y一般都是矩阵

还有一种格式:plot(y),如果只给一个参数,那么这个参数默认是代表纵坐标,而横坐标的值默认是1,2,3......举个例子,我们输入plot(cos(0:pi/20:2*pi));,做出来的图是这样的

图9-1 plot(cos(0:pi/20:2*pi))

9.2 hold on/off

如果我们写两个plot函数,plot(cos(0:pi/20:2*pi));plot(sin(0:pi/20:2*pi));,他会不会把这两个图画出来,答案是不会,因为matlab在执行代码的时候,后面的画图会把前面的画图清空掉,所以只会有一个图画出来,那如果想把这两个函数的图都画出来,应该怎么做,下面给出代码

图9-2 hold on

也可以先画一个图,然后hold on,然后再画一个图,hold on的顺序可以变

9.3 plot style

我们还可以给图加上我们想要的样式,调用格式:plot(x,y,’str’);,str的位置是我们用的参数,具体有哪些参数,见下图

图9-3 plot type

示例:

图9-4 示例1

更多的type,可以访问mathworks网站内查看:https://cn.mathworks.com/help/matlab/ref/linespec.html?s_tid=gn_loc_drop

9.4 legend()

光有图,没有说明标签也不行,所以我们需要用到legend这个函数,以一个例子来说明,我们首先做四个函数的图像

图9-5 示例2

我们看这个图很不直观,因为缺少了标签说明,下面我们就给他加上,代码为:legend(‘sin(x)’,’cos(x)’,’Sigmoid’,’Gauss function’);,他会根据你plot函数的顺序,依次给对应的线标上对应的标签

图9-6 legend函数

9.5 title() and ?label()

到现在为止,其实我们这个图还不算完整,还缺少横纵坐标的说明,以及标题,所以接下来我们就要用到几个函数来完善它:title()、xlabel()、ylabel()、zlabel()、下面给出示例

图9-7 坐标以及标题

9.6 text() and annotation()

如果我们需要在图像中加入说明性的文本和某些图形比如说箭头,就会分别用到两个函数,一个是text(),一个是annotation(),下面给出示例图

图9-8 示例3

我们首先观察这个函数的横坐标,是从0到3,所以我们要用代码x = linspace(0,3);即可,这里y的函数我也直接给出来y = x.^2.*sin(x);,再看图上,有一天线段x = 2,他需要用到line函数,通常其调用格式为:line([x起始坐标,x终止坐标],[y起始坐标,y终止坐标]);,所以如果要画出我们图上的这条直线,代码就应该是line([2,2][0,x.^2.*sin(2)]);

有了以上的函数,我们看看做出的图是什么样的

图9-9 示例4

下面我们就要开始讲解如何在图上做出文本以及箭头标志

首先我们先考虑一个问题,那一串积分符号是如何打出来的?这里大家如果有latex基础应该会知道,没有的话我直接给出代码不用过多解释,了解一下即可

图9-10  str本文

文本有了以后,我们需要用text()函数写进去,其调用格式为:text(x坐标,y坐标,str,’Interpreter’,’latex’);,后面的’Interpreter’,’latex’这个是固定格式,填上去就行了。

接下来我们要用到annotation()函数画箭头,其调用格式为:annotation(‘shape’,’x’,[x起始位置,x终止位置],’y’,[y起始位置,y终止位置]);,这个annotation函数用起来比较复杂,我把参数一个一个讲,首先是’shape’,这个参数可以有很多值,具体见下表

shape参数

说明

line

线

arrow

箭头

doublearrow

双箭头

textarrow

带文本框的箭头

shape参数讲完了,然后就是这个x,y坐标的问题,这里要注意,这个函数中的坐标并不是我们图像里对应的坐标,而是我们进行归一化以后的坐标,什么叫归一化?假设一个图的宽w,高h,坐标[x,y],归一化以后的坐标就是[x/w,y/h]

由此我们就能做出这个箭头了,下面给出完整代码

图9-11 annotation and text

9.7 Figure Adjustment

其实matlab画图远不止这点内容,还有很多可以修改的部分,下面的内容我们就是讲,如何优化一个图

首先优化一个图,我们可以修改这个图的哪些属性?Font、Font size、Line width、Axis limit、Tick position、Tick label......

那么我们如何修改这些属性呢?

图9-12 编辑图形属性

如果你觉得这些还不够,你可以选择更多属性

图9-13 更多属性

9.8 Multiple Figures

记得我们一开始讲过如何将两个函数画在同一张图上,当时用的方法是hold on/off,那么现在问题来了,如果我想画两个函数,在两张图上,应该怎么做呢?下面给出代码

图9-14 figure

其实只需要在每个plot函数前面,加上figure即可

9.9 subplot()

如果说,我现在要求在一个figure,也就是一个画布上,画很多不同的图,应该怎么画,要用到的函数就是subplot(),其调用格式为:subplot(m,n,x);,下面用一张图来解释其中的参数

图9-15 subplot

下面我们给个示例,让大家更清楚的了解subplot的用法

图9-16 示例5

为什么我们画的同一张图,x,y的值都是一样的,但是显示出来的图像却不一样?有兴趣的读者可以百度看看axis的作用就能明白了,这里我就不做多讲解了

9.10 Save Figures

我们有时候花完了图,想要保存,这时候就要用打saveas函数,其调用格式为:saveas(gcf,’filename’,’formattype’);,gcf就是你当前图像的默认的”名字”,filename也不用多说,就是你给你保存的图像起个名字,关键是这个formattype,它其实有很多参数,见下图

图9-17 formattype

下面给个示例

图9-18 示例6

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习之tensorflow实战篇

tensorflow(一)windows 10 64位安装tensorflow1.4与基本概念解读tf.global_variables_initializer

一.安装 目前用了tensorflow、deeplearning4j两个深度学习框架, tensorflow 之前一直支持到python 3.5,目前以更新...

39360
来自专栏小樱的经验随笔

51 Nod 1007 正整数分组【类01背包】

1007 正整数分组 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 将一堆正整数分为2组,要求2组的和相差最小。 例如:1...

30570
来自专栏深度学习之tensorflow实战篇

R语言函数的含义与用法,实现过程解读

R的源起 R是S语言的一种实现。S语言是由 AT&T贝尔实验室开发的一种用来进行数据探索、统计分析、作图的解释型语言。最初S语言的实现版本主要是S-PLUS。S...

536120
来自专栏漫漫深度学习路

tensorflow学习笔记(三十三):ExponentialMovingAverage

ExponentialMovingAverage Some training algorithms, such as GradientDescent and M...

56360
来自专栏Python中文社区

实现属于自己的TensorFlow(一) - 计算图与前向传播

前言 前段时间因为课题需要使用了一段时间TensorFlow,感觉这种框架很有意思,除了可以搭建复杂的神经网络,也可以优化其他自己需要的计算模型,所以一直想自...

46870
来自专栏应兆康的专栏

100个Numpy练习【3】

翻译:YingJoy 网址: https://www.yingjoy.cn/ 来源: https://github.com/rougier/numpy-100...

470100
来自专栏Script Boy (CN-SIMO)

Java中随机数的产生方式与原理

查阅随机数相关资料,特做整理 首先说一下java中产生随机数的几种方式 在j2se中我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数...

34800
来自专栏人工智能LeadAI

Python 设计模式初探

本文章是在阅读精通Python设计模式(中文版)(https://book.douban.com/subject/26829015/),以及阅读 Mask R-...

37060
来自专栏小樱的经验随笔

Vijos P1131 最小公倍数和最大公约数问题【暴力】

一元三次方程求解 描述 有形如:ax^3+bx^2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三...

34650
来自专栏python3

python语句-中断循环-continue,break

continue的作用是:从continue语句开始到循环结束,之间所有的语句都不执行,直接从一下次循环重新开始

15830

扫码关注云+社区

领取腾讯云代金券