【问题标题】:Using XTickLabel in plotting在绘图中使用 XTickLabel
【发布时间】:2013-12-18 19:27:59
【问题描述】:

我正在实现一个 Matlab 脚本,我想在其中绘制一个函数,如下所示:

figure;
plot(Flows(:,1),Flows(:,2));
title(strcat('f',num2str(j),'\_2013\_0',num2str(k)));
xlabel('Timestamp');
ylabel('Energy flow');
set(gca, 'XTickLabel', datestr(Flows(:,1)));

Flows 是一个矩阵,它以 csv 文件作为输入,其中第一列是时间戳值。有 12 个文件,每个文件用于每个月。在一个循环中,我读取文件并创建矩阵。

Flows(i,1)=datenum(Input{i,1}{1,1},'YYYY-mm-DD HH:MM:SS');
Flows(i,2)=Input{i,1}{1,7};

但是,当我绘制趋势时,x 轴仅显示从 1 月 1 日 00:00 到 1 月 1 日 00:36 的日期。至少从“月份”的 1 秒到月底,我如何在 x 轴上显示?我怀疑问题出在从num到date的数据翻译的掩码上,但是我尝试了几种掩码,哪个适合?

【问题讨论】:

  • 我怀疑您还必须调整“xticks”(以您要标记的分辨率显示 xticks)。请参阅此处的示例mathworks.com/matlabcentral/answers/92565;你能提供你的数据吗?
  • @Cici 没错。 XTicks 与 XTickLabels 不匹配也是常见的陷阱when creating bar plots,因为当您超过一定数量的点时,MATLAB 不会自动创建刻度。
  • @Jose Hdez,你用的是什么版本的 Matlab?

标签: matlab


【解决方案1】:

最后,我添加了以下几行:

set(gca,'XLim',[min(Flows(:,1)) max(Flows(:,1))]);
set(gca,'XTick',Flows(:,1));
set(gca, 'XTickLabel', datestr(Flows(:,1)));

但是,当我要绘制趋势图时,我得到以下异常,

Values must be monotonically increasing

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 2020-03-25
    • 2017-08-26
    相关资源
    最近更新 更多