Тиковый интервал будет зависеть от вашей области отображения. Вам нужно будет принять во внимание ширину вашего графика (я предполагаю, что время на оси X) и ширину строки даты в выбранном вами шрифте, чтобы получить хороший масштаб.
Базовый алгоритм будет выглядеть примерно так.
- Сканирование списка дат, чтобы найти минимальное и максимальное значения.
- Разделите ширину графика на ширину строки даты (это можно сделать один раз, сохраняя результат в переменной, если * обе * ширины постоянны). Этот шаг будет проще, если вы используете шрифт фиксированной ширины и формат даты MM-DD-YYYY. Если вы используете шрифт переменной ширины и формат даты, в котором прописано название месяца, вам нужно добавить дополнительный отступ в строку, чтобы каждая строка даты имела одинаковую ширину. Обратите внимание, что я сказал * дополнительные * отступы. Даже если вы используете фиксированный формат даты, вам нужно заполнить его хотя бы одним пробелом, чтобы избежать переполнения. Я назову это значение `ticks`, потому что именно столько тиков на вашей оси будет соответствовать в зависимости от ширины вашего графика.
- Подсчитайте, сколько дней проходит между минимальной и максимальной датами (включительно). Как вы это сделаете, будет зависеть от того, какой язык вы используете. Надеюсь, у вас есть хорошие реализации Date и Calendar. Я просто назову это значение `days`.
- Рассчитать интервал между тиками по формуле `interval = days / (ticks - 1)`.
- Определите, какие дни попадают в интервалы между тиками, добавляя `interval` к вашей минимальной дате, пока вы не достигнете своей максимальной даты. Опять же, это будет зависеть от того, какой язык вы используете.