首页 > 解决方案 > 如何在 matlab/octave 图中指定 x 轴的范围?

问题描述

我有以下数据集:

octave:4> data(1:10,:)
ans =

 Columns 1 through 10:

    198.000000000   2001.000000000      1.000000000     30.000000000      0.917600000      0.928000000      0.914700000      0.926900000      0.000133000      0.000108000
    199.000000000   2001.000000000      1.000000000     31.000000000      0.926800000      0.942600000      0.926600000      0.941300000      0.000160000      0.000133000
    200.000000000   2001.000000000      2.000000000      1.000000000      0.941400000      0.944700000      0.936400000      0.937300000      0.000083000      0.000160000
    201.000000000   2001.000000000      2.000000000      2.000000000      0.937400000      0.942100000      0.931800000      0.936400000      0.000103000      0.000083000
    202.000000000   2001.000000000      2.000000000      4.000000000      0.936600000      0.939700000      0.936600000      0.939400000      0.000033000      0.000103000
    203.000000000   2001.000000000      2.000000000      5.000000000      0.939300000      0.943900000      0.936500000      0.937100000      0.000074000      0.000033000
    204.000000000   2001.000000000      2.000000000      6.000000000      0.937200000      0.938900000      0.928200000      0.929600000      0.000107000      0.000074000
    205.000000000   2001.000000000      2.000000000      7.000000000      0.929500000      0.935200000      0.926100000      0.928800000      0.000091000      0.000107000
    206.000000000   2001.000000000      2.000000000      8.000000000      0.928900000      0.929200000      0.915300000      0.918700000      0.000139000      0.000091000
    207.000000000   2001.000000000      2.000000000      9.000000000      0.918800000      0.927800000      0.913500000      0.924000000      0.000143000      0.000139000

 Columns 11 through 14:

      0.013034000      0.010134000     -0.003166000      0.009034000
      0.015680000      0.015480000     -0.000520000      0.014180000
      0.008134000      0.003134000     -0.005166000     -0.004266000
      0.010094000      0.004494000     -0.005806000     -0.001206000
      0.003034000      0.003034000     -0.000066000      0.002734000
      0.007252000      0.004452000     -0.002948000     -0.002348000
      0.010486000      0.001486000     -0.009214000     -0.007814000
      0.008918000      0.005518000     -0.003582000     -0.000882000
      0.013622000      0.000022000     -0.013878000     -0.010478000
      0.014014000      0.008714000     -0.005586000      0.004914000

我定义了一些变量来帮助识别我正在使用哪些特定的列:

YEAR = 2;
MONTH = 3;
DAY = 4;
CLOSE = 8;

然后我想绘制整个系列,所以我这样做:

figure(3)
xdates = datenum(data(:,YEAR),data(:,MONTH),data(:,DAY))
subplot(2,1,1); plot(xdates, data(:,CLOSE))
set(gca, "xtick", datenum (2000:2:2020,1,1));
set(gca,'xticklabel',{[]})
title("EURUSD 2000-2019");
subplot(2,1,2); plot(xdates, data(:,ATR))
set(gca, 'xtick', datenum (2000:2:2020,1,1));
datetick("x", 'yy/mm', "keepticks");

然后我得到:

子情节

到目前为止一切顺利(xlabels 无法读取,但没关系,我可以使用“YY”格式化并且可以读取它们)。现在我想显示 2019,1,1 和 2020,1,1 之间的图表。我努力了:

figure(3)
xdates = datenum(data(:,YEAR),data(:,MONTH),data(:,DAY))
subplot(2,1,1); plot(xdates, data(:,CLOSE))
set(gca, "xtick", datenum (2000:2:2020,1,1));
set(gca,'xticklabel',{[]})
xlim(datenum (2019:1:2020,1,1));
title("EURUSD 2000-2019");
subplot(2,1,2); plot(xdates, data(:,ATR))
set(gca, 'xtick', datenum (2000:2:2020,1,1));
xlim(datenum (2019:1:2020,1,1));
datetick("x", 'yy/mm', "keepticks");

但我得到:

xaxisrange2

应该怎么做才能使绘图显示 2019,1,1 和 2020,1,1 之间的值?

标签: octave

解决方案


推荐阅读