目录
2.1将多张图同时绘制在一个Figure上面,采用subplot函数
2.5关于ylim函数,ylabel函数,yticks函数的说明(x同理)
最近用matlab画图,在这边做一个简单总结,以后还需要逐渐丰富内容。
一、绘制不同种类的图像
matlab最常用的绘图命令也就是plot,以下是几种较为常用的绘图方法。
1.1.画一般曲线图
输入以下代码绘制简单的sin函数曲线
运行结果如下:
可以看到运行结果平滑度很差,这是有由于matlab是以描点连线的方式来作图的,x=1:20默认间隔是以1来绘制点,也就是说此时matlab画出了20个点,然后连线做的图像,所以导致图像不平滑,此时可以通过设置点和点的间距来使得图像变平滑,改变输入x的方式如下:
此时的运行结果如下:
可以看到此时平滑程度较高。
1.2.绘制柱状图
在matlab中用bar函数来绘制柱状图:
如果想要每个柱的颜色都不相同,可以参考以下代码:
x=[1,2,3,4,5]
y=[5,4,3,2,1]
width=0.8;
hold on %至关重要!!!
for i=1:length(y)
h=bar(i,y(i),width)
if y(i)==1
set(h,'FaceColor','b');
else if y(i)==2
set(h,'FaceColor','y');
else if y(i)==4
set(h,'FaceColor','g');
else
set(h,'FaceColor','r');
end
end
end
end
xlabel('x轴')
ylabel('y轴')
运行结果如下图所示:
注意一定要用hold on避免图像被刷新。
3.matlab画散点图
matlab通过scatter函数画散点图,参考代码如下:
x=[1 2 3 4 5 6 7 8 9 10]
y=[4 8 6 1 2 4 7 6 9 11]
h=scatter(x,y,'*')
输出结果如下:
二、matlab的图像处理
2.1将多张图同时绘制在一个Figure上面,采用subplot函数
例如:
subplot(3,1,1),将一张Figure分成三行一列,此时画的这张图在第一个位置上
subplot(3,1,2),将一张Figure分成三行一列,此时画的这张图在第二个位置上
subplot(3,1,3),将一张Figure分成三行一列,此时画的这张图在第三个位置上
即subplot函数第一个变量指的是行数,第二个变量指的是列数,第三个变量指的是当前所画的图出现的位置。
结果如下图所示:
透过这张模糊的图像可以看到结果大致是这样的。
2.2改变matlab图像坐标刻度增长幅度
在绘制matlab图像的时候,就算设置了x轴和y轴的坐标范围,但是软件会自动给出合适的坐标增量,例如我希望x轴是从0-20以1为间隔增长,但是matlab默认画出的图像如下:
可以看出matlab自动设置以2为增幅进行增长,若想要改变增幅,以下介绍两种方法。
第一种方法是通过matlab生成图像时的属性检查器改变,缺点是每张图片都需要重新进行点击修改,图片数量过多的时候会很麻烦。操作过程如下:
首先随便画出一张图,点击属性检查器,如下图:
之后双击曲线可以改变曲线颜色,并且可以给曲线加特殊标记,例如在每个转折点处加小圆点,小方块等等。双击空白处可以选择图像中字体,字号等等参数信息,其中Fontsize是一次性改变整张图中的字号大小,双击坐标轴手动输入坐标值改变坐标轴增量信息,以x轴为例,如下图所示:
可以看出横轴增量从2变成1,但是这种方法比较麻烦,通常这种方法用来改变图像的字体字号等外观信息比较方便一点。
第二种方法是通过代码的方法进行修改,核心代码如下:
axis([1 20 0 15])
xticks(1:1:20)
yticks(0:2:15)
其中,axis函数的意思是设置横纵坐标范围,本例中横坐标是从1-20,纵坐标是从0-15,由于我期望输出的图像横坐标是从1开始到20,如果不用axis函数设置的话,而直接用下面两行代码设置的话,会出现x在0-1的时候没有对应y值,即出现空白区域,如下图所示:
通过axis函数设置,可以使得图像横坐标强行从1开始画起,避免了0-1空白区域的尴尬,之后xticks函数和yticks函数分别设置x轴和y轴的范围
例如xticks(1:1:20) ,第一个参数1是指横坐标从1开始,第二个1指的是增量幅度为1,第三个参数20指的是画到x=20的时候,同理yticks函数是设置纵坐标的,下图是结果展示:
2.3设置坐标轴刻度为任意值
有时候画图的时候只需要显示个别刻度,这时候依旧可以采用xticks和yticks函数,以x轴为例,我期望x轴刻度只显示0,2,18这三个数字,核心代码如下:
注:需要和xlim([])共同使用
set函数改变坐标轴字体以及刻度大小
xticks([0 2 18])
set(gca,'FontSize',13);
输出图像结果如下:
2.4在一张Figure中用同一个x对应两个y作图
在matlab作图的时候,有时候会遇到一个x对应两个y,因此可以画出两条曲线,但是这两个y值不一样,那么这时候可以将Figure的左右两边设置两种刻度,这样就可以把两条x取值相同,但是y取值不同的两条曲线作到同一张图片里面,之后可以通过设置颜色,以及添加标签等方式对这两条曲线进行区分,能够在Figure中直观看到两种曲线,核心函数是yyaxis函数,举例如下:
x=[0 1 2 3 4 5 6 7 8 9];
y1=[10 9 8 7 6 5 4 1 2 3];
y2=[5 6 1 2 3 5 4 3 2 1];
hold on
yyaxis left;
plot(x,y1,'--r')
ylabel('y1轴')
yyaxis right;
plot(x,y2,':k')
xlabel('x轴')
ylabel('y2轴')
legend('我是y1','我是y2')
其中yyaxis left是将坐标轴设置在左侧,yyaxis right是将坐标轴设置在右侧,matlab会自动设置两种颜色来绘制图像,之后我用legend函数对两种曲线进行标识,若需要在word中黑白打印,为了区分两条曲线,可以设置两种曲线的格式,常用曲线格式以及颜色如下表:
H1=plot(x,y1,’.-r’),输入折线直接在拐点处带小实心点
输出结果如下:
从图像可以看出,通过这种方法可以实现两种y轴下的两条曲线绘制在同一个Figure中。
2.5关于ylim函数,ylabel函数,yticks函数的说明(x同理)
2.5.1 ylim函数
该函数是用来设置或查询 y 轴范围。
使用方法:接下来是摘自比较官方的语言
ylim(limits) % 设置当前坐标区或图的 y轴范围,limits 为 [ymin,ymax] 形式的向量(ymax > ymin)
ylim auto % 设置自动模式,使坐标区自动确认 y 轴范围(即此命令会将坐标区的 YLimMode 属性设置为 auto)
ylim manual % 设置手动模式,将范围冻结在当前值(即此命令会将坐标区的 YLimMode 属性设置为 manual)此命令用在 hold on 命令向坐标区添加数据时保留当前范围
m = ylim(‘mode’) % 返回当前 y 轴范围模式(auto 或 manual)
___ = ylim(target,___) % 对 target 指定到的坐标区或图进行上述设置
半自动 y 轴范围:limits 指定的向量 [ymin,ymax] 中的一个为具体数值,一个为无穷大(无穷大方向由 MatLab 自动确认)
我自己使用直接ylim([-10 10]),意思就是输出的图像的y轴只显示-10到10的范围
例如,在2.4中所写代码中加入这一行,结果也会随之改变,如下图:
2.5.2 ylabel函数
该函数是用来给y轴写标签用的,比如2.4中的例子
2.5.3 yticks函数
该函数主要是用来改变y轴刻度的,见2.2-2.3的例子
三、用matlab画三维柱状图
目标:将两个三维柱状图绘制到一个图像中
实际应用:官方误差与实际误差
代码:
figure()
bar3(B,'y') %绘制三维柱状图,B为数组,y为颜色黄色
alpha(0.1) %设置透明度函数,取值0-1,越小越透明
hold on %在现有图像基础上继续作图
bar3(F,'c') %绘制三维柱状图,F为数组,c为颜色亮青色
ylabel('连锁故障类型') %设置y轴标签
set(gca,'yticklabel',{'大风低高穿',...
'大风高低穿','小风低高穿','小风高低穿'}); %设置y轴刻度标签
xlabel('区间') %设置x轴标签
set(gca,'XTick',[1,2,3,4,5,6,7,8,9,...
10,11,12,13,14,15,16,17,18,19]); %设置x轴刻度标签位置
set(gca,'xticklabel',{'F1A','F3A','F5A',...
'F1B1','F3B1','F5B1','F2B1','F4B1','F1B2',...
'F3B2','F5B2','F2B2','F4B2','F1C','F3C',...
'F5C','F2C','F4C','FGP'}); %设置x轴刻度标签对应的名字
zlabel('有功功率误差') %设置z轴标签
注:在不设置x轴刻度标签位置的情况下,matlab默认以2为单位显示刻度,因此不能将全部设置的x轴刻度标签显示出来,因此需要加xtick函数,确定标签位置,也可以在前面所述的属性检查器中修改刻度。
四、将公式直接写入图中
代码:
%%
%测试将公式加入图片中
x = 1:1:10;
y = x
figure(1)
plot(x,y)
figure(2) %选取一个花里胡哨的公式测试效果
plot(x,y)
str = ['$$\left[\begin{array}{c}\dot{U}_{2} \\\dot{I}_{2}\end{array}\right]...' ...
'=\left[\begin{array}{cc}\cos \lambda_{2} & \mathrm{j} Z_{2} \sin \lambda_{2}...' ...
' \\\mathrm{j} Z_{2}^{-1} \sin \lambda_{2} & \cos \lambda_{2}\end{array}...' ...
'\right]\left[\begin{array}{l}\dot{U}_{3} \\\dot{I}_{3}\end{array}\right]$$']
text(5,5,str,'interpreter','latex','FontSize',10)
展示效果:
备注:
1.公式位置以及大小:
上述代码中的text中(5,5)是公式坐标位置,10是公式字体大小
2.数学公式转化为Latex公式方法:
网址:在线LaTeX公式编辑器-编辑器 (latexlive.com)
进入网址后注册,注册完毕选择图片识别,将所需要的公式ctrl+V直接复制到识别区域,自动转化为Latex公式,将Latex代码进行复制。
注意:若数学公式过长,转化出的Latex可能不在一行,需要手动转化为一行(与word换行变成一行同理),matlab中的代码为:str = %%Latex代码%%,若matlab中一行太长不美观,可以在适当位置加入…后回车,如上代码所示
同理,也可以将Latex代码直接复制到word里面的mathtype公式编辑器中,可以实现公式图片转成mathtype公式。
今天的文章Matlab画图相关知识分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/29432.html