Как настроить плотность сетки при построении таймсерии

avatar
Argyll
9 августа 2021 в 00:59
40
1
1

Есть ли способ настроить плотность сетки при построении временных рядов?

Например, начиная с CSV-файла, содержащего данные здесь, временные точки которого указаны каждый день, начиная с февраля прошлого года.

T=readtable(filename); % filename is the full file name of the csv file
ts=timeseries([T{:,2}],cellstr([T{:,1}]));
plot(ts,'.')
grid on

Результат это, где график правильный и 4 метки сетки правильно расположены. Но при этом для 502 моментов времени всего 4 метки сетки.

Как настроить плотность сетки по горизонтальной оси?


Из этого ответа я узнал один способ создания пользовательских точек сетки. Я хотел бы изучить любые другие методы. Может быть, есть более простой метод, поскольку требования ослабляются от пользовательских точек сетки до пользовательской плотности сетки?

Источник

Ответы (1)

avatar
mimocha
9 августа 2021 в 06:32
1

Линии сетки MATLAB рисуются на основе расположения xticks и yticks. Итак, в вашем случае вы можете изменить свойство xticks, чтобы настроить плотность горизонтальных линий сетки.


Вы можете проверить текущие тики с помощью функций xticks() и yticks(), и это даст вам массив текущих положений тиков. Например, после создания точечной диаграммы с вашими данными я могу сделать:

>> xticks()

ans = 

  1×8 datetime array

   2020-01-01   2020-04-01   2020-07-01   2020-10-01   2021-01-01   2021-04-01   2021-07-01   2021-10-01

В этом случае, чтобы установить новое значение xticks, мне нужно передать функции массив типа datetime, поскольку значение x имеет тип datetime.

Итак, если я хочу рисовать линию сетки каждые 30 дней, вы можете сделать что-то вроде:

% Generate an array of datetime from the first date in your data,
% then incrementing by 30 days until the last day in your data.
tick = your_data.date(1) + (0:30:length(your_data.date))
% Update xticks location
xticks(tick)

Example updated xtick location