MATLAB图形绘制--离散数据绘图

离散数据绘图

假如我们现在有五个学生的成绩,我们想要把他们的成绩跟名字一一对应的画在图上,必要的时候可以用折线连接,这个时候我们就要了解以下函数:

  • xtick
  • xticklabel
  • gca
  • set
  • axis

其中gca通俗的理解是返回当前函数图像的性质,比如长宽高,分辨率,坐标轴分度值等一系列图像属性
然后可以通过set命令逐一修改属性,就好似C语言的结构体一样,这样的解释可以说非常通俗易懂了。
假如我们有以下五个人的成绩:

A:50
B:98
C:75
D:80
E:98

我们要用折线图画出来,并且x坐标轴的标签不是普通的数字1,2,3....等,而是与每个人的名字相对应。
首先我们创建一个含有五个元素的数组:

>> x = [1:5];

然后我们创建一个成绩数组:

>> y = [50 98 75 80 98];

接下来我们先把这些成绩对应的点绘制出来(注意,不是折线,这个马上讲),可以使用以下命令:

>> plot(x,y,'o')

图像:
图一

其中第三个参数'o'表示我们用圆圈来表示数据,当然,我们也可以使用其它的形状:

  • s–方块
  • d–菱形
  • p–五角星
  • o–圆圈
  • x–叉号
  • .–点号
    还有一个容易出错的地方是,我们绘制的只是一些点,如果要将他们连接起来,我们可以使用下面的命令:
>> plot(x,y,'o',x,y)

表示我们表示出这些点后,再用折线将它们连起来,图像如下:
图2
MATLAB好像默认的颜色是红色,我们也可以在第三个参数那个地方更改我们喜欢的颜色和线型,这里我们就随便举一个例子:

>> plot(x,y,'or',x,y,'--')

这个表示:

  • 第一个x,y先绘制散点,并用红色的圆圈表示出来
  • 第二个x,y绘制直线,线型是虚线
    图像:
    图3
    我们要注意的是,参数的顺序对图像有一定的影响,我刚开始绘图的时候,想要把所有关于线型,颜色的参数放在一个位置,但后来发现这样的顺序会对图像造成一定的影响,就比如:
>> plot(x,y,'or--',x,y)

我们的本意是先描出这些散点,用红色的圆圈表示,然后用虚线连接这些点,但画出来的图像却如下图:
不如意的图像
结果却是用实线绘制,这与我们的预期不符,后来经过尝试终于理解了:
我们是根据零散的点绘制的图形,xy的关系是一一对应的,所以我们要先把这些点给画出来,画出来这些点我们需要一些标记,比如圆圈,菱形,点等等,我们可以为其添加颜色,但唯独不能选择线型,比如虚线实线等,因为这些只是独立的点,我们还没有把它们连接起来,所以这里线型这个命令MATLAB会忽视掉;等到我们这些点绘制出来后
我们就要把它们连接起来了,这个时候我们就可以选择线型参数了。
就比如:


>> plot(x,y,'.g',x,y,'k--')

图像:
图5
我们用绿色的点,和黑色的虚线连接

所以我们需要注意的是,离散点绘图我们要在相应位置填上相应参数,否者MATLAB会自动忽略。

好像跑题了,现在我们回到问题中去,绘制出学生成绩的图像:

>> x = [1:5];
>> y = [50 98 75 80 98];
>> plot(x,y,'or',x,y,'--')
>> set(gca,'xticklabel',['A';'B';'C';'D';'E']);
>> set(gca,'xtick',[1:5]);
>> axis([1 5 0 100])

生成:
正确图像

>> set(gca,'xticklabel',['A';'B';'C';'D';'E']);
>> set(gca,'xtick',[1:5]);

其中这两句相当于将1~5的坐标值替换成学生的姓名,gca返回当前图像的属性。

条形图

条形图的命令非常简单,我们直接使用bar(x,y)命令就可以绘制:

>> bar(x,y)
>> xlabel('学生')
>> ylabel('分数')
>> title('期末考试')

条形图

针状图

绘制离散数据的另一种方式是针状图,我们看一个函数:
我们假定这个函数是某根弹簧在某个力下随时间的响应。
函数
其中值
现在我们绘出200之内的图像,首先我们定义区间:

>> t = [0:0.1:200];

接下来定义函数:

>> f = exp(-0.01*t).*sin(t/4);

画图:

>> plot(t,f),xlabel('时间(秒)'),ylabel('弹簧响应')

图像:
弹簧响应
以上图每隔0.1取一次数据,假如我们要从离散数据绘图,我们每隔5采一次样

>> t = [0:5:200];
>> f = exp(-0.01*t).*sin(t/4);
>> plot(t,f),xlabel('时间(秒)'),ylabel('弹簧响应')

图像:
离散绘图
我们得到的图像有些粗糙,在这种情况下,工程师们喜欢把它绘制成针头图,只需使用命令stem(x,y)即可:
针头图
plot的许多命令也能用到stem上,比如点的颜色,形状,线的颜色,形状:

  • s–方块
  • d–菱形
  • p–五角星
  • o–圆圈
  • x–叉号
  • .–点号
    我们也可以使用fill命令填充形状
    代码:
>> stem(t,f,'p','fill'),xlabel('时间(秒)'),ylabel('弹簧响应')

五角星填充

>> stem(t,f,'dg--','fill'),xlabel('时间(秒)'),ylabel('弹簧响应')

绿色菱形填充虚线连接

发布了84 篇原创文章 · 获赞 18 · 访问量 5805

猜你喜欢

转载自blog.csdn.net/qq_44486550/article/details/105276774
今日推荐