Matlab中如何将折线图的横坐标刻度改为日期/时间

您所在的位置:网站首页 excel怎样把横坐标改为年份 Matlab中如何将折线图的横坐标刻度改为日期/时间

Matlab中如何将折线图的横坐标刻度改为日期/时间

2024-06-19 17:23| 来源: 网络整理| 查看: 265

用Matlab画随日期变化的折线图是常见操作了。但在画图的过程中,横坐标刻度往往是序号索引而不是对应日期。这次画降水折线图时又遇到了这个问题,如何将横坐标刻度修改成对应的时间?这次尝试的办法是先用日期对应的序号索引作为x轴进行画图,将要用到的日期单独存储为字符串数组。再用xticks设置刻度位置,用xticklabels更改对应的刻度值,核心代码如下。

plot(x, y,'-o','lineWidth',1.5,'color','#0072BD','MarkerSize',3,... 'MarkerEdgeColor','b',... 'MarkerFaceColor','b') x1 = 1:6:length(x); xticks(x1) time1=time(1:6:end,:); xticklabels(time1)

1996-2006年上海、广州两地月际降水量折线图

具体情况如下所示。有广州和上海两地1996-2006年的11年以来每月的降雨量数据,Year和Month分别是年月,Index是人为添加的索引号,在Excel里直接拉一下就行。

降水数据格式

首先利用下面的代码,在Matlab中读取该txt文件。把Year、Month利用strcat函数串联起来,得到格式如“1996.9”的字符串数组time,此时time的数据类型是132×7的char数组。x是132×1的double数组,即上图第三列里的Index。

file = 'rain_data.txt'; data = readmatrix(file); year=data(:,1); month=data(:,2); x=data(:,3); y = data(:, 4); z = data(:, 5); time=strcat(num2str(year),'.',num2str(month));

读取完之后就可以用plot画图了。因为刻度太多会挤在一起不美观,所以设置了步长为6,也即每隔6个月做一次刻度。x1用于规定在哪里画刻度,time1用于从time中提取出对应的刻度值,用xticklabels替换坐标区原有的刻度值。

plot(x, y,'-o','lineWidth',1.5,'color','#0072BD','MarkerSize',3,... 'MarkerEdgeColor','b',... 'MarkerFaceColor','b') hold on plot(x, z,'-o','lineWidth',1.5,'MarkerSize',3,... 'MarkerEdgeColor','r',... 'MarkerFaceColor','r') x1 = 1:6:length(x); xticks(x1) time1=time(1:6:end,:); xticklabels(time1) xlabel('Month') ylabel('Rainfall(mm)') legend('Shanghai','Guangzhou') title('Changes in Monthly Precipitation in Guangzhou and Shanghai from 1996 to 2006') hold off

最后就能得到文章开头放的那张1996-2006年广州、上海两地降雨量分布图了。这个方法还是比较简单的,但是需要手动创建索引,对于数据量较大的情况还是比较麻烦。不过能满足现有需求还是不错的,有更好的办法以后遇到了再更新~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3