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/off
- 6. 设置边框可见性:box on/off
- 7. 设置坐标轴可见性:axis on/off
- 8. 其他坐标形式的设置
- 六 , 给绘制的图像设置标题
- 七 , 给图形增加图例
- 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-left) |
> | 右三角形(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');
输出结果为:
Matlab作图后的各种调整方法——线条、坐标、标题、图例相关推荐
- Matlab作图字体及坐标轴设置方法
作者:火星十一郎 出处:http://www.cnblogs.com/hxsyl/ 本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...
- MATLAB作图方法与技巧(二)
作为MATLAB作图方法与技巧(一)的补充 1.绘制二维散点图 ① scatter函数 scatter(x,y,s,c)函数绘制向量x和y的散点图,其中s代表点的大小,c代表点的形状,s和c缺省时为默 ...
- matlab 更换坐标轴_matlab怎么调整坐标轴范围-Matlab修改坐标轴标注范围的方法 - 河东软件园...
Mathworks Matlab是一款非常专业的数学计算软件,该软件提供了多个领域的分析方案,有用语言基础.数学.图形.数据导入和分析.编程脚本和函数.高级软件开发.桌面环境编程等多种数据计算,提供不 ...
- matlab图片在word/wps中模糊解决方法,matlab图片转pdf后信息丢失解决方法
在写论文的时候,不免需要把matlab的仿真图片贴在论文里,但是matlab图片另存为后就会降低像素,变得模糊,怎么才能让图片清晰呢? 可以按下面步骤试试: (1)matlab跑出仿真图后,在菜单栏依 ...
- 子报表修改后需要重新导入,0.00显示.00的调整方法
水晶报表笔记: 子报表修改后需要重新导入 0.00显示.00的调整方法:数字格式的内容,右键,设置对象格式, 自定义,前导值 勾上,默认值,选择0 转载于:https://www.cn ...
- 电脑重装系统后Win11底部任务栏大小调整方法
Win11任务栏大小怎么调整的方法今天和大家一起来分享一下.有的用户使用的是笔记本电脑,发现电脑桌面显示的底部任务栏位置比较大,有些占用屏幕范围.那么如何去进行大小调节接下来看看具体的操作方法. 1 ...
- 局部放电相位分布 3d matlab,基于局部放电信号特征的诊断图谱相位开窗参数调整方法与流程...
本发明属于局部放电检测领域,具体涉及一种基于局部放电信号特征的诊断图谱相位开窗参数调整方法. 背景技术: 相位开窗数:将局部放电的脉冲时域信号转换为局部放电的脉冲序列相位分布(Phase Resolv ...
- matlab取中间的几位数,Excel中取前几位数、中间几位数、后几位数的方法
在Excel中,我们可能会遇到取一组数据前几位数,中间几位数,或者后几位数的问题,这该怎么办呢?今天就教大家在Excel中用left.mid.right函数分别取出前几位数.中间几位数和后几位数的方法 ...
- matlab留白,matlab作图导出为PDF去除留白插入latex
latex写论文时,一般为了图片不失真,引用的图片需要转为pdf格式.matlab作图,直接导出为pdf经常遇到有灰色底色,有大片留白等不符合要求的情况,此博介绍一种简单的方法,轻松导出图片. 此外, ...
最新文章
- empress和queen区别_queen与empress
- 第六篇:基于朴素贝叶斯分类算法的邮件过滤系统
- mysql中systimestamp_oracle数据库中timestamp是什么数据类型
- 如何判断Customer和Administor
- C# 多页打印简单实现
- UrlReWriter 使用经验小结
- 基于(7, 5)归零非删余Turbo码的参数识别与分析
- 批量上传文件及进度显示
- 好的PHP库离不开一个好的命名空间
- chrome vue插件_不容错过的 Chrome 插件推荐合集-开发者必备篇
- 【译】ASP.NET MVC 5 教程 - 4:添加模型
- Payload与form表单提交区别
- 【鱼眼镜头6】[鱼眼畸变模型]:统一相机模型标定
- 人工智能中的深度结构学习 Learning deep architectures for AI - Yoshua Bengio
- 步进电机正反转实验_三相电机正反转自锁互锁弄清楚,就能轻松接线
- 证券投资基金名词解释
- 超闩锁和子闩锁如何工作的
- 原型图设计软件哪个好用?6款好用软件推荐
- Canvas线条花环
- php实现拼音转中文,PHP将中文转换成拼音的方法