Matlab画图相关知识

Matlab画图相关知识有关matlab作图过程中的一些细节问题以及常用的作图函数的使用举例

目录

一、绘制不同种类的图像

1.1.画一般曲线图

1.2.绘制柱状图

 二、matlab的图像处理

2.1将多张图同时绘制在一个Figure上面,采用subplot函数

2.2改变matlab图像坐标刻度增长幅度

2.3设置坐标轴刻度为任意值

 2.4在一张Figure中用同一个x对应两个y作图

2.5关于ylim函数,ylabel函数,yticks函数的说明(x同理)

2.5.1 ylim函数

2.5.2 ylabel函数

2.5.3 yticks函数

 三、用matlab画三维柱状图



    最近用matlab画图,在这边做一个简单总结,以后还需要逐渐丰富内容。

一、绘制不同种类的图像

        matlab最常用的绘图命令也就是plot,以下是几种较为常用的绘图方法。

1.1.画一般曲线图

        输入以下代码绘制简单的sin函数曲线

Matlab画图相关知识

        运行结果如下:

Matlab画图相关知识

         可以看到运行结果平滑度很差,这是有由于matlab是以描点连线的方式来作图的,x=1:20默认间隔是以1来绘制点,也就是说此时matlab画出了20个点,然后连线做的图像,所以导致图像不平滑,此时可以通过设置点和点的间距来使得图像变平滑,改变输入x的方式如下:

Matlab画图相关知识

         此时的运行结果如下:

Matlab画图相关知识

         可以看到此时平滑程度较高。

1.2.绘制柱状图

        在matlab中用bar函数来绘制柱状图:

Matlab画图相关知识

如果想要每个柱的颜色都不相同,可以参考以下代码:

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轴')

运行结果如下图所示:

Matlab画图相关知识

         注意一定要用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画图相关知识

 二、matlab的图像处理

2.1将多张图同时绘制在一个Figure上面,采用subplot函数

例如:

subplot(3,1,1),将一张Figure分成三行一列,此时画的这张图在第一个位置上

subplot(3,1,2),将一张Figure分成三行一列,此时画的这张图在第二个位置上

subplot(3,1,3),将一张Figure分成三行一列,此时画的这张图在第三个位置上

即subplot函数第一个变量指的是行数,第二个变量指的是列数,第三个变量指的是当前所画的图出现的位置。

结果如下图所示:

Matlab画图相关知识

 透过这张模糊的图像可以看到结果大致是这样的。

2.2改变matlab图像坐标刻度增长幅度

        在绘制matlab图像的时候,就算设置了x轴和y轴的坐标范围,但是软件会自动给出合适的坐标增量,例如我希望x轴是从0-20以1为间隔增长,但是matlab默认画出的图像如下:

Matlab画图相关知识      

         可以看出matlab自动设置以2为增幅进行增长,若想要改变增幅,以下介绍两种方法。

        第一种方法是通过matlab生成图像时的属性检查器改变,缺点是每张图片都需要重新进行点击修改,图片数量过多的时候会很麻烦。操作过程如下:

        首先随便画出一张图,点击属性检查器,如下图:

Matlab画图相关知识

        之后双击曲线可以改变曲线颜色,并且可以给曲线加特殊标记,例如在每个转折点处加小圆点,小方块等等。双击空白处可以选择图像中字体,字号等等参数信息,其中Fontsize是一次性改变整张图中的字号大小,双击坐标轴手动输入坐标值改变坐标轴增量信息,以x轴为例,如下图所示:

Matlab画图相关知识

         可以看出横轴增量从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值,即出现空白区域,如下图所示:

Matlab画图相关知识

        通过axis函数设置,可以使得图像横坐标强行从1开始画起,避免了0-1空白区域的尴尬,之后xticks函数和yticks函数分别设置x轴和y轴的范围

        例如xticks(1:1:20) ,第一个参数1是指横坐标从1开始,第二个1指的是增量幅度为1,第三个参数20指的是画到x=20的时候,同理yticks函数是设置纵坐标的,下图是结果展示:

Matlab画图相关知识

2.3设置坐标轴刻度为任意值

         有时候画图的时候只需要显示个别刻度,这时候依旧可以采用xticks和yticks函数,以x轴为例,我期望x轴刻度只显示0,2,18这三个数字,核心代码如下:

        注:需要和xlim([])共同使用

        set函数改变坐标轴字体以及刻度大小

xticks([0 2 18])
set(gca,'FontSize',13);

        输出图像结果如下:

Matlab画图相关知识

 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中黑白打印,为了区分两条曲线,可以设置两种曲线的格式,常用曲线格式以及颜色如下表:

Matlab画图相关知识

H1=plot(x,y1,’.-r’),输入折线直接在拐点处带小实心点

输出结果如下:

Matlab画图相关知识

        从图像可以看出,通过这种方法可以实现两种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中所写代码中加入这一行,结果也会随之改变,如下图:

Matlab画图相关知识

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)

展示效果:

Matlab画图相关知识

备注:

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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注