Как я могу отображать только метки даты и времени на графике или сделать так, чтобы октава выбрала для меня подходящее количество тиков? - PullRequest
0 голосов
/ 02 мая 2020

Я хочу отобразить столбец матрицы из более чем 5800 строк.

Матрица содержит в своих первых столбцах год, месяц и день, которые соответствуют этой строке. Он охватывает почти 20 лет (но без точных дат, первая запись начинается 30 января 2001 г.) -

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

Я определяю некоторые переменные, чтобы помочь определить, какие конкретно c столбцы я использую:

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

Затем я хочу построить столбец 8 (ЗАКРЫТЬ) и отобразить на оси X даты. Я не знаю, какие варианты мне нужно, чтобы отображать разумное количество дат.

Это то, что я пробовал:

figure(2)
xdates = datenum(data(:,YEAR),data(:,MONTH),data(:,DAY))
plot(xdates,data(:,CLOSE))
ax = gca
set (ax, "xtick", xdates);
datetick ("x", 1000, "keepticks");

Но при этом получается:

xticks

  1. Как правильно отображать отметки по оси x, ограничивая количество отображаемых отметок?
  2. Можно ли отображать только месяцы / годы вместо дня / месяца / года?

1 Ответ

0 голосов
/ 02 мая 2020

Я нашел это как правильный вариант. Я включаю ответ на случай, если он может помочь другим:

figure(2)
xdates = datenum(data(:,YEAR),data(:,MONTH),data(:,DAY))
plot(xdates,data(:,CLOSE))
ax = gca
set (ax, "xtick", datenum (2000:1:2020,1,1));
datetick("x", 'yy', "keepticks");
...