MATLAB画图——用数字表示颜色以及删除矩阵行

本篇文章用来记录本人在书写电离层程序时候的想法和设计。

在设计画图函数时,如果曲线的颜色类别较多,又想显示不同类别的数据表示,可以尝试直接用数字代表颜色,省略指定曲线颜色的步骤,这里以GPS数据为例,1~7列的数据分别为观测时间(小时),卫星PRN号,纬度,经度,VTEC值,历元编号。

数据量较大,共有2万多行数据

现在第一步,表示不同时间下的VTEC值,使用plot函数即可,第一个输入参数是时间,表示横坐标;第二个输入参数 是VTEC值,表示纵坐标。

plot(data_GPS(:,1),data_GPS(:,5),'.')

显示结果如下

这里图像显示较乱,是因为数据量大,因为卫星的PRN号最大值是32,说明这里有32颗卫星的数据,现在进行第二步,是否可以用不同颜色标记不同卫星号的数据,从而使得显示稍微好看一点呢?

这里给出了两种画图方法

第一种,使用scatter画图

scatter生成散点图,算法简单,函数简单,直接在颜色对应的输入部分输入数字即可。MATLAB会自动识别颜色值那一栏的数据,自动生成颜色,x输入栏有2万个数据表示横坐标,y输入栏有2万个数据表示纵坐标,color输入栏也有2万个数据表示颜色类型

scatter(data_GPS(:,1),data_GPS(:,5),10,data_GPS(:,2),'filled')

结果显示如下

但是scatter函数的硬伤是不好对不同颜色的点显示不同图例,如果想显示图例的话,采用下面的办法

第二种,使用plot函数对对应颜色块儿进行画图,整理到一起

type=tabulate(data_GPS(:,2));
type=type(logical(type(:,2)),:);
PRNtype=type(:,1);%取PRN号
figure
hold on
endi=0;
for i=1:length(PRNtype)%计数卫星个数
    endi=endi+type(i,2);
    starti=1+endi-type(i,2);
    plot(data_GPS(starti:endi,1),data_GPS(starti:endi,5),'.')
end
PRNname=num2str(PRNtype);
legend(PRNname)

这里解释一下第二行代码的用意,如果在矩阵变量名后头括号里输入逻辑变量(1为真,0为假),可以限制矩阵输出的行数,说白话就是删除一行的值,为什么要删除某一行的值呢?解释如下:

当使用tabulate函数统计卫星PRN号的个数时,发现PRN号为4号的数据是空的,但是type矩阵也显示出来了,因此想要删除这一行没用的统计,所以先使用logical函数将type矩阵第二列判断一下是不是为零,为零就赋值为“假”,因此就能达到删除行的作用。

最后画图显示如下,既有图像又有图例

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小虎糊涂涂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值