Matlab作图后的各种调整方法 | 您所在的位置:网站首页 › 表格出现图标标题怎么消除 › Matlab作图后的各种调整方法 |
Matlab作图后的各种调整方法——线条、坐标、标题、图例
文章目录
Matlab作图后的各种调整方法——线条、坐标、标题、图例一 , 写在前面1.整个图窗 Figure(gcf)2.我们使用命令做出的线条 Line,例如plot命令3.坐标轴 Axes (gca)
二 , 改变图中线条的粗细、颜色、标记等1. 线条颜色:'Color'2. 线型:'LineStyle'3. 线宽:'LineWidth'4. 标记符号:'Marker'5. 标记轮廓颜色:'MarkerEdgeColor' 和标记填充颜色:'MarkerFaceColor'6.标记大小:'MarkerSize'7. 标记所在数据点的索引:'MarkerIndices'
三 , 那么指定对象名有什么用呢四 , 改变坐标轴的名称以及特性1. 设置坐标轴名称2. 改变坐标轴特性2.1 改变字体大小:'FontSize'2.2 改变字符粗细:'FontWeight'2.3 改变字体名称:'FontName'2.4 改变文本颜色:'Color'
五 ,改变坐标轴的刻度以及范围1. 设置或查询x轴刻度值:'xtick'2. 设置或查询x轴标签:'xticklabel'3. 使坐标轴刻度更精细:'xminortick'4. 设置坐标轴范围:'xlim'5. 设置网格可见性:grid on/off6. 设置边框可见性:box on/off7. 设置坐标轴可见性:axis on/off8. 其他坐标形式的设置
六 , 给绘制的图像设置标题七 , 给图形增加图例1. 增加图例2. 改变字体大小:'FontSize'3. 改变字体名称:'FontName'4. 改变字符粗细:'FontWeight'5. 改变文本颜色:'TextColor'6. 改变图例框填充颜色:'Color'7.改变图例所在的位置:'Location'8.任意改变图例所在的位置和大小:'Position'9.改变图例的堆叠方向:'Orientation'10.改变图例框的可见性:'boxon'/'boxoff'11.改变图例的可见性:'hide'/'show'
一 , 写在前面
首先介绍一个概念,我们在Matlab中作的图分为三个部分,分别是: 1.整个图窗 Figure(gcf) 2.我们使用命令做出的线条 Line,例如plot命令 3.坐标轴 Axes (gca)所以看似我们使用plot命令画出了一张图,实际上我们只是改变了这张图的一个部分。 在Matlab中,我们可以分别对这三个部分进行改变,其中整个图窗的默认对象名是 gcf,坐标轴的默认对象名是 gca,而线条通常是自己绘图时手动定义的,例如: >> x=[1 2 3 4 5]; >> y=x.^2; >> p1=plot(x,y);p1就是plot(x,y)这个曲线的名称,对象名有什么作用以及好处我们下文再进行介绍。 二 , 改变图中线条的粗细、颜色、标记等以plot命令为例,我现在使用以下代码做出了一条曲线: >> x=[1 2 3 4 5]; >> y=x.^2; >> plot(x,y);结果为: 这张图空白部分很大,图线比较细,颜色我也不喜欢。 那么如果我想把图线加粗,并且变成黑色,应该怎么做呢? 其实我们使用的plot命令里有很多种参数可以设置,以下给出plot命令的两种常用的基本形式: plot(X1,Y1,LineSpec1,...,XN,YN,LineSpecN); plot(___,Name1,Value1,...,NameN,ValueN);第一个式子在同一个图窗内绘制了从y1-x1到yN-xN 一共n条曲线。式子中的LineSpec就是控制它前面所绘制曲线特征的参数,它是一个字符串,包含三个部分:线型 、颜色、标记。以下分别给出每种特征和对应的字符串: 线型字符说明-实线(solid line)- -虚线(dashed line)- .点划线 (dash-dotted line):点线(dotted line)颜色字符k黑色(black)b蓝色(blue)g绿色(green)c青色(cyan)m粉红色(magenta)r红色(red)w白色(white)y黄色(yellow)标记字符.点(dot)*星号(asterisk)X叉号(cross)O圆圈(circle)+加号(plus sign)s方形(square)d菱形(diamond)p五角形(Five-pointed star)h六角形(hexagram)^上三角形(triangle-up)v下三角形(triangle-down)右三角形(triangle-right)例如我想把上述曲线改为虚线,黑色,用星号标记,则plot命令可以写为: >> plot(x,y,'--k*');运行结果为: 需要说的是,这三种特征字符的顺序并没有要求,即上式中的- -、k和*的顺序可以按自己喜好书写。 讲完了第一个式子,接下来讲讲第二个式子: plot(___,Name1,Value1,...,NameN,ValueN);其中的Name和Value被称为名称-值对组参数,Name为参数名称,Value为对应的值。下面分别给出各种常用的Name以及对应的Value: 1. 线条颜色:‘Color’前面更改线条颜色的方法只能把线条颜色变为预设的几种,如果想指定任意一种颜色,就需要使用此组参数,其中Value的值可以是预设颜色的全名,也可以是RGB三元组和十六进制颜色代码,例如将上述曲线颜色变为绿色(green),则代码可以写为以下三种方式中的任意一种: >> plot(x,y,'Color','green'); >> plot(x,y,'Color',[0 1 0]); >> plot(x,y,'Color','#00FF00');输出结果均为: 如果想要使用任意一种颜色,只需要知道对应的RGB三元组或者十六进制颜色代码即可,可以去配色网站寻找,在这里也给出几个笔者比较常用的配色网站,均为免费使用不需要账号: Adobe Color CC (https://color.adobe.com/create/color-wheel/) Material Palette (https://www.materialpalette.com/) Flat UI Color Picker (https://www.flatuicolorpicker.com/) 例如将上述曲线改为紫色,则可以写为: >> plot(x,y,'Color','#A500EB');运行结果为: 2. 线型:‘LineStyle’同上,例如改为点划线: >> plot(x,y,'LineStyle','-.'); 3. 线宽:‘LineWidth’指定以榜为单位的正值,如果不进行设置,默认线宽为0.5榜,其中1榜=1/72英寸,例如将上述曲线宽度改为2榜,则代码为: >> plot(x,y,'LineWidth',2);输出结果为: 4. 标记符号:‘Marker’和上述相同,例如将标记符号改为加号,则代码为: >> plot(x,y,'Marker','+'); 5. 标记轮廓颜色:‘MarkerEdgeColor’ 和标记填充颜色:‘MarkerFaceColor’和上述相同,Value的值可以为预设颜色的全名、RGB三元组或十六进制颜色代码。 6.标记大小:‘MarkerSize’同样指定以榜为单位的正值,如果不进行设置,默认大小为6榜,例如把加号标记的大小改为12榜,则代码可以写为: >> plot(x,y,'Marker','+','MarkerSize',12);运行结果为: 7. 标记所在数据点的索引:‘MarkerIndices’这个要重点说一下,假设我现在有这么一个代码: >> x=[0:0.01:3]; >> y=x.^2; >> plot(x,y,'-d');绘制以菱形为标记的实线曲线,但是由于这个曲线包含的点非常多,有301个点,所以使用上述代码得到的曲线会糊成一团: 这个时候就可以使用这个参数了,Value值为需要标记的数据点所在位置组成的向量,以下举两个例子说明一下用法: **例1.**我需要在第1、第150和第301个数据点显示标记,其他位置不显示标记,则代码可以写为: >> plot(x,y,'-d','MarkerIndices',[1 150 301]);输出结果为: 例2我需要从第一个点开始,每隔50个点显示一个标记,则代码可以写为: >> plot(x,y,'-d','MarkerIndices',1:50:length(y));输出结果为: 需要注意的是,这个参数在使用时必须要手动指定曲线的线型,如果不指定线型,则输出结果并不会自动指定曲线为实线,而是不会显示曲线只显示标记,例如: >> plot(x,y,'d','MarkerIndices',1:50:length(y));输出结果为: 三 , 那么指定对象名有什么用呢不知你发现没有,上文中我们改变曲线的特征都是在plot命令中进行的,那如果之后我们对曲线的特征不满意的话要怎么修改呢?重新使用plot命令再画一遍?只是一条曲线倒还好,如果一个plot命令里面包含的曲线比较多就变得麻烦起来了。 但是如果我们在使用plot命令时指定一个变量名给它,问题就会变得轻松得多,例如: >> x=[1 2 3 4 5]; >> y1=x; >> y2=2*x-1; >> y3=3*x-2; >> p=plot(x,y1,'-rO',x,y2,'-kX',x,y3,':b*');执行结果为: 在上述代码中,我们将plot的执行结果赋值给变量名为p的变量,他是一个3✖1的Line数组: 假设此时我对于第三条曲线y3-x的特征不满意,想要把线的宽度改为2榜,我们只需要修改变量p的值即可,下面给出两种写法供读者体会: 方法一:数组写法 >> p(3).LineWidth=2;即改变Line数组p中的第三条曲线的LineWidth值。 方法二:set()命令写法 首先介绍一下set命令,它的作用是设置图形对象属性,基本形式为: set(H,Name1,Value1,...,NameN,ValueN)其中的Name和Value和上文中讲到的基本相同,本例中的写法为: >> set(p(3),'LineWidth',2);输出结果均为: 四 , 改变坐标轴的名称以及特性 1. 设置坐标轴名称我们仍以第二章给出的例子为例: >> x=[1 2 3 4 5]; >> y=x.^2; >> plot(x,y);假设我们想要将x轴命名为:X-axis,将y轴命名为:y=x²,这时候我们可以使用命令:xlabel和ylabel,他们的完整形式为: xlabel(target,text,Name1,Value1,...,NameN,ValueN); ylabel(target,text,Name1,Value1,...,NameN,ValueN);其中target为需要设置坐标轴名称的目标,如果不设定则默认为gca,text为设定的坐标轴名称,本例中为’X-axis’,Name和Value为参数,具体设置后面再介绍,和下文中set命令相同。 那么代码可以写为: >> xlabel('X-axis'); >> ylabel('y=x^2');运行结果为: 如果一行写不下需要分行书写,则需要将字符串分开书写,例如让本例中的X-占第一行,axis占第二行,则代码为: >> xlabel({'X-','axis'});运行结果为: 需要说明的是,Matlab作图中坐标轴名称以及后面提到的图例内容和文本内容,是支持Tex引擎的,所以可以直接使用Tex写法,下面给出两个论文中比较常用的例子,请读者自行体会: 例1:以斜体表示名称 >> xlabel('{\it X-axis}'); %{\it }表示斜体例2:表示希腊字母等,以π为例: >> xlabel('-2\pi \leq x \leq 2\pi'); %输出结果为-2π≤x≤2π如果要表达更为复杂的公式,如: 则需要使用LaTex写法,并且需要将’Interpreter’参数指定为’latex’,上面各例的表达方法可以阅读我的另一篇文章:《使用LaTex表达MATLAB绘图中的常见公式》,链接为: 使用LaTeX表达MATLAB绘图中的常见公式 (https://blog.csdn.net/XTU__zhang/article/details/115706741) 2. 改变坐标轴特性我们同样可以使用set命令改变坐标轴的特性,使用set命令可以同时改变两个坐标轴的特性,以下分别进行说明: 2.1 改变字体大小:‘FontSize’以榜为单位,指定为大于零的标量值。例如将上例中坐标轴字体的大小改为10榜,则命令为: >> set(gca,'FontSize',10); 2.2 改变字符粗细:‘FontWeight’字符粗细默认值为’normal’,如果要使用加粗字体则需要设置为’bold’: >> set(gca,'FontWeight','bold');运行结果为: 2.3 改变字体名称:‘FontName’例如将坐标轴字体改为Times New Roman,则代码为: >> set(gca,'FontName','Times'); 2.4 改变文本颜色:‘Color’同上,此处不在详述。 五 ,改变坐标轴的刻度以及范围假设有一个函数为y=sin(x),x∈[0 2π],则代码为: >> x=linspace(0,2*pi); >> y=sin(x); >> plot(x,y);输出结果为: 可以看到虽然我们输出的x的上限是2*pi,但是做出的图中还是以自然数表示的,如果我们想用2π表示要怎么办呢? 为了解决这个问题,我们需要知道两个参数: 1. 设置或查询x轴刻度值:‘xtick’顾名思义,这个参数是用来设置x轴的刻度值的,例如我想让本例中x的刻度只显示2和6,则代码为: >> set(gca,'xtick',[2 6]);输出结果为: 这里多说一句,如果不想用set命令,可以直接使用命令: >> xticks([2 6]);注意直接使用时是xticks,而不是xtick,虽然作用相同但是一个是命令一个是参数,作为命令使用时多了一个s。 2. 设置或查询x轴标签:‘xticklabel’这个参数是和xtick配套使用的,比如上述代码中我们只显示了2和6时的标签,再改变xticklabel参数我们就可以让显示的2和6变成x=2和x=6: >> set(gca,'xticklabel',{'x=2','x=6'});输出结果为: 同理如果不想用set命令,直接使用xticklabels命令,效果相同: >> xticklabels({'x=2','x=6'});同样的,作为命令使用多了一个s。 下面回到第五章开始时的例子,x的范围是[0 2π],如果想用π表示x坐标,我们只需要先使用xtick定位到需要加标签的点,例如每隔π/2设置一个坐标,然后使用xticklabel设置标签即可,完整代码为: >> x=linspace(0,2*pi); >> y=sin(x); >> plot(x,y); >> set(gca,'xtick',0:pi/2:2*pi); >> set(gca,'xticklabel',{'0','\pi/2','\pi','3\pi/2','2\pi'});输出结果为: 同理,如果要设置y轴的坐标,可以使用ytick和yticklabel。 3. 使坐标轴刻度更精细:‘xminortick’继续使用这个例子,我们现在得到了以π刻度表示的图形,但是x轴上相邻坐标之间没有刻度,如果想要在相邻坐标之间继续划分刻度,则可以改变xminortick参数,例如: >> set(gca,'xminortick','on');输出结果为: 同理如果要对y轴刻度继续划分,则可以改变yminortick参数。 4. 设置坐标轴范围:‘xlim’可以改变xlim参数的值来控制坐标轴的显示范围,例如将x坐标轴的范围控制在[π 2π]之间,则代码为: >> set(gca,'xlim',[pi,2*pi]);运行结果为: xlim也可以单独作为命令使用,例如: >> xlim([pi,2*pi]);效果相同,同理如果要改变y轴范围则可以使用ylim。 5. 设置网格可见性:grid on/off使用此命令可以设置网格为可见: >> grid on输出结果为: 6. 设置边框可见性:box on/off使用次命令可以使右边和上边的边框变为不可见: >> box off输出结果: 7. 设置坐标轴可见性:axis on/off使用此命令可以使坐标轴变为不可见: >> axis off输出结果为: 8. 其他坐标形式的设置如果要使用对数坐标作图,则可以使用其他绘图命令如loglog()、semilogx()、semilogy()。绘图相关命令在我的文章《MATLAB的几种常用出图方式》中做了简单的汇总,感兴趣的话可以去了解一下,链接为: MATLAB的几种常用出图方式 (https://blog.csdn.net/XTU__zhang/article/details/116163268) 虽然只是简单的汇总,使用的时候如果不知道怎么使用可以直接在MATLAB命令行窗口输入help+命令即可,例如: >> help loglog 六 , 给绘制的图像设置标题可以使用title命令给图像设置标题,完整形式为: title(titletext,subtitletext,Name1,Value1,...,NameN,ValueN)其中titletext为标题名,subtitletext为副标题名,写在标题名的下方。Name和Value和上述相同,即’FontSize’,‘FontWeight’,‘FontName’,'Color’等。 七 , 给图形增加图例 1. 增加图例可以使用legend命令给图形增加图例,完整形式为: legend(target,label1,...,labelN,Name1,Value1,...,NameN,ValueN)其中target是需要增加图例的目标,label1,…,labelN为增加的图例文字,图例的顺序和绘图时的顺序相同,Name1,…,NameN则为一系列参数,除了之前讲过的’FontSize’之类的以外还有很多参数,后面会详细说明。 以第三章的例子为例: >> x=[1 2 3 4 5]; >> y1=x; >> y2=2*x-1; >> y3=3*x-2; >> p=plot(x,y1,'-rO',x,y2,'-kX',x,y3,':b*');分别给三条曲线加上图例,代码为: >> lg1=legend('y=x','y=2x-1','y=3x-2');此处将legend的执行结果赋值给变量名为lg1的变量,输出结果为: 其中图例文字的输入顺序与plot命令中的绘制顺序一致。 图例虽然加上了,但是问题也很明显,比如图例的位置不合适,把线挡住了一部分,再比如字体不合适或者大小不合适等等。下面分别介绍legend命令中的常用参数。 2. 改变字体大小:‘FontSize’ 3. 改变字体名称:‘FontName’ 4. 改变字符粗细:‘FontWeight’前文已经介绍过,此处用一个例子带过,例如将图例字体大小改为10榜,字体改为Times New Roman字体,采用加粗字符,则代码为: >> set(lg1,'FontSize',10,'FontName','Times','FontWeight','bold');输出结果为: 5. 改变文本颜色:‘TextColor’ 6. 改变图例框填充颜色:‘Color’这里有所不同,上文讲过的’Color’参数在这里是改变图例框的填充颜色,如果想改变图例中文字的颜色应该使用’TextColor’参数,例如将图例中文字改为红色,图框填充改为黄色,则代码为: >> set(lg1,'TextColor','red','Color','yellow');输出结果为: 7.改变图例所在的位置:‘Location’改变Location参数可以改变图例所在的位置,常用的Value值为: Value值说明在坐标区域内north坐标区域内的 顶部south坐标区域内的 底部east坐标区域内的 右侧west坐标区域内的 左侧northeast坐标区域内的 右上角northwest坐标区域内的 左上角southeast坐标区域内的 右下角southwest坐标区域内的 左下角在坐标区域外northoutside坐标区域外的 顶部southoutside坐标区域外的 底部eastoutside坐标区域外的 右侧westoutside坐标区域外的 左侧northeastoutside坐标区域外的 右上角northwestoutside坐标区域外的 左上角southeastoutside坐标区域外的 右下角southwestoutside坐标区域外的 左下角本例中坐标区域左上角空间很大,我们可以将图例的位置移动到坐标区域内的左上角: >> set(lg1,'Location','northwest');输出结果为: 8.任意改变图例所在的位置和大小:‘Position’改变position参数可以任意设置图例的位置和大小,它的Value值为一个四元素行向量,形式为 [left bottom width height] ,其中left和bottom是指图例左下角相对于整个图窗(不是坐标区域)的位置,width和height则是指图例右上角相对于图例左下角的位置。 需要注意的是,这四个值默认情况下均为归一化的测量值,即相对于图窗的长、宽的比值,为小于1的数。例如: >> set(lg1,'Position',[0.2,0.7,0.2,0.2]);输出结果为: 9.改变图例的堆叠方向:‘Orientation’指定为’vertical’:垂直堆叠图例项 或者’horizontal’:水平堆叠图例项。 默认值为’vertical’,如果要将图例改为水平堆叠,位置在左上角,则代码为: >> set(lg1,'Location','northwest','Orientation','horizontal');运行结果为: 10.改变图例框的可见性:‘boxon’/‘boxoff’例如将图例框改为不可见: >> legend('boxoff');输出结果为: 11.改变图例的可见性:‘hide’/‘show’例如将图例变为不可见: >> legend('hide');输出结果为: |
CopyRight 2018-2019 实验室设备网 版权所有 |