首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Matlab中添加x轴中的年份。

在Matlab中添加x轴中的年份。
EN

Stack Overflow用户
提问于 2016-03-26 23:04:30
回答 2查看 625关注 0票数 1

我有一个带有mmyyyySPI (标准化降水指数)变量的两列数据。前两个样本没有数据(NAN)。档案是:

代码语言:javascript
运行
AI代码解释
复制
011982 NAN
021982 NAN
031982 -1.348
.
.
.
122013 1.098

我将时间和SPI数据加载到MATLAB中,然后我想绘制它,但它不工作。

我想绘制直线图,但我真的不知道如何在x轴上绘制时间,我希望我的x轴只显示年份。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-29 06:08:04

我正在添加另一个答案,它适用于更早的MATLAB版本,没有tabledatetime数据类型。

和以前一样,我们首先从文件中导入数据,但这次我们将日期作为字符串读取,然后使用datenum函数将日期转换为序列号(定义为“1月0,0000”之后的天数):

代码语言:javascript
运行
AI代码解释
复制
% import data from file
fid = fopen('file.dat', 'rt');
C = textscan(fid, '%s %f');
fclose(fid);

% create matrix
t = [datenum(C{1},'mmyyyy') C{2}];

数据如下:

代码语言:javascript
运行
AI代码解释
复制
>> format long 
>> t(1:10,:)
ans =
   1.0e+05 *
   7.239120000000000                 NaN
   7.239430000000000                 NaN
   7.239710000000000   0.000005606888474
   7.240020000000000   0.000009156147863
   7.240320000000000   0.000004504804864
   7.240630000000000   0.000008359005819
   7.240930000000000   0.000007436313932
   7.241240000000000   0.000002800134237
   7.241550000000000   0.000005261613664
   7.241850000000000   0.000001809901372

接下来,我们像以前一样绘制数据,但是使用datetick函数将x轴格式化为日期(“yyyy”数年):

代码语言:javascript
运行
AI代码解释
复制
plot(t(:,1), t(:,2))
datetick('x', 'yyyy')
xlabel('Date'), ylabel('Standardized Precipitation Index')

不幸的是,当你放大和缩小时,滴答标签不会自动更新.好消息是,文件交换上有解决此问题的解决方案,例如达蒂克比格datetick2

票数 0
EN

Stack Overflow用户

发布于 2016-03-26 23:49:28

在MATLAB中使用新的datetime数据类型(在R2014b中添加),这应该很容易。

下面是一个例子。首先,我们将数据加载到MATLAB table中。

代码语言:javascript
运行
AI代码解释
复制
% import data from file
fid = fopen('file.dat', 'rt');
C = textscan(fid, '%{MMyyyy}D %f');
fclose(fid);

% create table
t = table(C{:}, 'VariableNames',{'date','SPI'});

你会得到这样的东西:

代码语言:javascript
运行
AI代码解释
复制
>> t(1:10,:)
ans = 
     date       SPI   
    ______    ________
    011982         NaN
    021982         NaN
    031982       2.022
    041982      1.5689
    051982     0.75813
    061982    -0.74338
    071982     -1.7323
    081982     -2.4466
    091982    -0.86604
    101982    0.085698

用日期和时间绘制数据旁边,它就像调用plot一样简单

代码语言:javascript
运行
AI代码解释
复制
plot(t.date, t.SPI)
xlabel('Date'), ylabel('Standardized Precipitation Index')

默认情况下,plot根据数据范围选择勾标位置。放大或缩小绘图时,滴答标签会自动调整到新的轴限值。

但是,如果需要,还可以为自定义格式标签指定datetime滴答标签。请注意,当您这样做时,情节总是按照指定的值格式化滴答标签,它们不会在缩放时调整:

代码语言:javascript
运行
AI代码解释
复制
plot(t.date, t.SPI, 'DatetimeTickFormat','yyyy')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36244760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档