- 线条类型为点线,宽度为默认宽度的3倍,点的符号为实心正方形,大小为
- 自定义坐标轴的示例
- 例子:依剂量对比药物A和药物B的响应情况
> 就像我之前绘制ROC曲线那样,基础包做的比较成熟,所以我直接使用基础包完成的组图。
- R中使用函数par()或layout()可以容易地组合多幅图形为一幅总括图形。
- 下面例子是创建4幅图,且按照2行2列排列
R语言实战这前三章对于R基础的学习非常重要,本篇学习笔记也确实抓到了要学习的点,很聪明了去除了一些不必要学习的内容。通过比对书本,我发现这些我们今后要用到的知识都在这里的。
但是这些只是不是一遍就可以学会并使用的,需要反复学习三次,在后续的重复学习中药在R.Rmd中做笔记,在运行的过程中理论和实践结合。
大连理工大学数学科学学院
强大的绘图功能是Matlab的特色之一,Matlab提供了一系列的绘图函数,用户不须要过多的考虑绘图的细节,只须要给出一些基本参数就能获得所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操做的低层绘图操做。这类操做将图形的每一个图形元素(如坐标轴、曲线、文字等)看作一个独立的对象,系统给每一个对象分配一个句柄,能够经过句柄对该图形元素进行操做,而不影响其余部分。函数
本章介绍绘制二维和三维图形的高层绘图函数以及其余图形控制函数的使用方法,在此基础上,再介绍能够操做和控制各类图形对象的低层绘图操做。ui
二维图形是将平面坐标上的数据点链接起来的平面图形。能够采用不一样的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其余绘图操做的基础。orm
一.绘制二维曲线的基本函数对象
在Matlab中,最基本并且应用最为普遍的绘图函数为plot,利用它能够在二维平面上绘制出不一样的曲线。blog
plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,能够绘制分别以x和y为横、纵坐标的二维曲线。plot函数的应用格式字符串
程序以下:在命令窗口中输入如下命令
程序执行后,打开一个图形窗口,在其中绘制出以下曲线
注意:指数函数和正弦函数之间要用点乘运算,由于两者是向量。
这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量便可输出曲线:
程序执行后,打开一个图形窗口,在其中绘制出以下曲线
以上提到plot函数的自变量x,y为长度相同的向量,这是最多见、最基本的用法。实际应用中还有一些变化。分别说明:
2. 含多个输入参数的plot函数
plot函数能够包含若干组向量对,每一组能够绘制出一条曲线。含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,…,xn,yn)
以下列命令能够在同一坐标中画出3条曲线。
当输入参数有矩阵形式时,配对的x,y按对应的列元素为横坐标和纵坐标绘制曲线,曲线条数等于矩阵的列数。
x,y都是含有三列的矩阵,它们组成输入参数对,绘制三条曲线;x和cos(x)又组成一对,绘制一条余弦曲线。
利用plot函数能够直接将矩阵的数据绘制在图形窗体中,此时plot函数将矩阵的每一列数据做为一条曲线绘制在窗体中。如
3. 含选项的plot函数
Matlab提供了一些绘图选项,用于肯定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示:
用不一样的线型和颜色在同一坐标内绘制曲线 及其包络线。
在该plot函数中包含了3组绘图参数,第一组用黑色虚线画出两条包络线,第二组用蓝色双划线画出曲线y,第三组用红色五角星离散标出数据点。
在Matlab中,若是须要绘制出具备不一样纵坐标标度的两个图形,可使用plotyy函数,它能把具备不一样量纲,不一样数量级的两个函数绘制在同一个坐标中,有利于图形数据的对比分析。使用格式为:plotyy(x1,y1,x2,y2)
x1,y1对应一条曲线,x2,y2对应另外一条曲线。横坐标的标度相同,纵坐标有两个,左边的对应x1,y1数据对,右边的对应x2,y2。
二.绘制图形的辅助操做
绘制完图形之后,可能还须要对图形进行一些辅助操做,以使图形意义更加明确,可读性更强。
在绘制图形时,能够对图形加上一些说明,如图形的名称、坐标轴说明以及图形某一部分的含义等,这些操做称为添加图形标注。有关图形标注函数的调用格式为:
其中,title、xlabel和ylabel函数分别用于说明图形和坐标轴的名称。text函数是在坐标点(x,y)处添加图形说明。(P88 或用gtext命令)。legend函数用于绘制曲线所用线型、颜色或数据点标记图例,图例放置在空白处,用户还能够经过鼠标移动图例,将其放到所但愿的 位置。除legend函数外,其余函数一样适用于三维图形,在三维中z坐标轴说明用zlabel函数。
[Latex]上述函数中的说明文字,除了使用标准的ASCII字符外,还可使用LaTex(一种流行的数学排版软件)格式的控制字符,这样就能够在图形上添加 希腊字符,数学符号和公式等内容。在Matlab支持的LaTex字符串中,用/bf , /it ,
在绘制图形时,Matlab能够自动根据要绘制曲线数据的范围选择合适的坐标刻度,使得曲线可以尽量清晰的显示出来。因此,通常状况下用户没必要选择坐标轴的刻度范围。可是,若是用户对坐标不满意,能够利用axis函数对其从新设定。其调用格式为
若是只给出前四个参数,则按照给出的x、y轴的最小值和最大值选择坐标系范围,绘制出合适的二维曲线。若是给出了所有参数,则绘制出三维图形。
axis函数的功能丰富,其经常使用的用法有:
还有:给坐标加网格线能够用grid命令来控制,grid on/off命令控制画仍是不画网格线,不带参数的grid命令在两种之间进行切换。
给坐标加边框用box命令控制。和grid同样用法
例 :绘制分段函数,并添加图形标注。(略)
通常状况下,每执行一次绘图命令,就刷新一次当前图形窗口,图形窗口原有图形将不复存在,若是但愿在已经存在的图形上再继续添加新的图形,可使用 图形保持命令hold。hold on/off 命令是保持原有图形仍是刷新原有图形,不带参数的hold命令在二者之间进行切换。
在实际应用中,常常须要在一个图形窗口中绘制若干个独立的图形,这就须要对图形窗口进行分割。分割后的图形窗口由若干个绘图区组成,每个绘图区可 以创建独立的坐标系并绘制图形。同一图形窗口下的不一样图形称为子图。Matlab提供了subplot函数用来将当前窗口分割成若干个绘图区,每一个区域代 表一个独立的子图,也是一个独立的坐标系,能够经过subplot函数激活某一区,该区为活动区,所发出的绘图命令都是做用于该活动区域。调用格式:
该函数把当前窗口分红m×n个绘图区,m行,每行n个绘图区,区号按行优先编号。其中第p个区为当前活动区。每个绘图区容许以不一样的坐标系单独绘制图形。
三.绘制二维图形的其余函数
1. 其余形式的线性直角坐标图
在线性直角坐标中,其余形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别为:
前三个函数和plot的用法类似,只是没有多输入变量形式。fill函数按向量元素下标渐增次序依次用直线段链接x,y对应元素定义的数据点。
例5-8:分别以条形图、填充图、阶梯图和杆图形式绘制曲线
polar函数用来绘制极坐标图,调用格式为:
其中,theta为极坐标极角,rho为极径,选项的内容和plot函数类似。
例5-9:绘制 的极坐标图
在实际应用中,常常用到对数坐标,Matlab提供了绘制对数和半对数坐标曲线的函数,其调用格式为:
这些函数中选项的定义和plot函数彻底同样,所不一样的是坐标轴的选取。semilogx函数使用半对数坐标,x轴为经常使用对数刻度,而y轴仍保持线性刻度。semilogy刚好和semilogx相反。loglog函数使用全对数坐标,x、y轴均采用对数刻度。
4. 对函数自适应采样的绘图函数
5. 其余形式的二维图形
一.绘制三维曲线的基本函数
最基本的三维图形函数为plot3,它将二维绘图函数plot的有关功能扩展到三维空间,能够用来绘制三维曲线。其调用格式为:
其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot的选项同样。当x,y,z是同维向量时,则x,y,z对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵的列数。
例513 绘制空间曲线
%该曲线对应的参数方程为
1.平面网格坐标矩阵的生成
当绘制z=f(x,y)所表明的三维曲面图时,先要在xy平面选定一矩形区域,假定矩形区域为D=[a,b]×[c,d],而后将[a,b]在x方 向分红m份,将[c,d]在y方向分红n份,由各划分点作平行轴的直线,把区域D分红m×n个小矩形。生成表明每个小矩形顶点坐标的平面网格坐标矩阵, 最后利用有关函数绘图。
产平生面区域内的网格坐标矩阵有两种方法:
通过上述语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素个数,矩阵Y的每一列都是向量y,列数等于向量x的元素个数。
语句执行后,所获得的网格坐标矩阵和上法,相同,当x=y时,能够写成meshgrid(x)
2.绘制三维曲面的函数
Matlab提供了mesh函数和surf函数来绘制三维曲面图。mesh函数用来绘制三维网格图,而surf用来绘制三维曲面图,各线条之间的补面用颜色填充。其调用格式为:
通常状况下,x,y,z是维数相同的矩阵,x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不一样高度下的颜色范围。c省略 时,Matlab认为c=z,也即颜色的设定是正比于图形的高度的。这样就能够获得井井有条的三维图形。当x,y省略时,把z矩阵的列下标看成x轴的坐 标,把z矩阵的行下标看成y轴的坐标,而后绘制三维图形。当x,y是向量时,要求x的长度必须等于z矩阵的列,y的长度必须等于必须等于z的行,x,y向 量元素的组合构成网格点的x,y坐标,z坐标则取自z矩阵,而后绘制三维曲线。
例515 用三维曲面图表现函数 :
为了便于分析三维曲面的各类特征,下面画出3种不一样形式的曲面。
程序执行结果分别如上图所示。从图中能够发现,网格图(mesh)中线条有颜色,线条间补面无颜色。曲面图(surf)的线条都是黑色的,线条间补面有颜色。进一步观察,曲面图补面颜色和网格图线条颜色都是沿z轴变化的。用plot3 绘制的三维曲面实际上由三维曲线组合而成。能够分析plot(x’,y’,z’)所绘制的曲面的特征。
例516 绘制两个直径相等的圆管相交的图形。
例517 分析由函数 构成的曲面形状与平面z=a的交线。
此外,还有两个和mesh函数类似的函数,即带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz,其用法和mesh相似。不一样的是,meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。
surf函数也有两个相似的函数,即具备等高线的曲面函数surfc和具备光照效果的曲面函数surfl。
Matlab提供了一些函数用于绘制标准三维曲面,这些函数能够产生相应的绘图数据,经常使用于三维图形的演示。如,sphere函数和cylinder函数分别用于绘制三维球面和柱面。sphere函数的调用格式为:
该函数将产生(n+1)×(n+1矩阵x,y,z 。采用这三个矩阵能够绘制出圆心位于原点、半径为1的单位球体。若在调用该函数时不带输出参数,则直接绘制所需球面。n决定了球面的圆滑程度,其默认值为20。若n值取的比较小,则绘制出多面体的表面图。
cylinder函数的调用格式为:
其中R是一个向量,存放柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,默认有20个间隔点。如:cylinder(3)生成一个圆 柱,cylinder([10,1])生成一个圆锥。而t=0:pi/100:4*pi; R=sin(t); cylinder(R,30);生成一个正弦圆柱面。
另外Matlab还提供了一个peaks函数,称为多峰函数,经常使用于三维曲面的演示。该函数能够用来生成绘图数据矩阵,矩阵元素由函数:
在矩形区域[-3 3]×[-3 3]的等分网格点上的函数值肯定。如:z=peaks(30)
将生成一个30×30矩阵,
例519 绘制标准三维曲面图形
在介绍二维图形时,曾经提到条形图、杆图、饼图和填充图等特殊图形,它们还能够以三维形式出现,其函数分别为bar3,stem3,pie3和fill3。
bar3绘制三维条形图,经常使用格式为:
在第一种格式中,y的每一个元素对应于一个条形。第二种格式在x指定的位置上绘制y中元素的条形图。
stem3函数绘制离散序列数据的三维杆图,经常使用格式为:
第一种格式将数据序列z表示为从xy平面向上延伸的杆图,x和y自动生成。第二种格式在x和y指定的位置上绘制数据序列z的杆图,x,y,z的维数要相同。
pie3函数绘制三维饼图,经常使用格式为:
x为向量,用x中的数据绘制一个三维饼图。
fill3函数可在三维空间内绘制出填充过的多边形,经常使用格式为:
用x,y,z作多边形的顶点,而c指定了填充的颜色。
例520 绘制三维图形。
除了上面讨论的三维图形外,经常使用的图形还有瀑布图和三维曲面的等高线图。绘制瀑布图用waterfall函数,用法和meshz函数类似,只是它的网格线在x轴方向出现,具备瀑布效果。等高线图分二维和三维两种形式,分别使用函数contour和contour3绘制。
例521 绘制多峰函数的瀑布图和等高线图。
三.三维图形的精细处理
在平常生活中,从不一样的角度观察物体,所看到的物体形状是不同的。一样,从不一样视点绘制的三维图形的形状也是不同的。视点位置可由方位角和仰角表示。
Matlab提供了设置视点的函数view,其调用格式为:
其中az为方位角,el为仰角,它们均以度为单位。系统默认的视点定义为方位角为-37.5度,仰角30度。
例522 从不一样视点绘制多峰函数曲面。
Matlab定义的NaN常数能够用于表示那些不可以使用的数据,利用这些特性,能够将图形中须要裁剪部分对应的函数值设置成NaN,这样在绘制图形 时,函数值为NaN的部分将不显示出来,从而达到对图形进行裁剪的目的。
例如,要削掉正弦波顶部或底部大于0.5的部分,可以使用下面的程序。
例524 绘制两个球面,其中一个在另外一个里面,将外面的球裁掉一部分,以便能看到里面的球。
色图中使用三种颜色,外面的球是绿色,里面的球采用深浅不一样的两种红色。
若是给定了函数的显式表达式,能够先设置自变量向量,而后根据表达式计算函数向量,从而用plot等函数绘制出图形。可是当函数采用隐函数形式时,如: ,则很难利用上述方法绘制图形。Matlab提供了一个ezplot函数绘制隐函数图形。用法以下:
例525 隐函数绘图举例。