Алгоритм маркировки оси дат для Excel
Я обычно рисую данные временных рядов в Excel, и я нахожу маркировку оси дат Excel по умолчанию на линейных графиках очень уродливой. В частности,
1) даты часто поворачиваются по горизонтали или вертикали, что сжимает площадь участка недвижимости и делает надписи дат более трудными для чтения. Это связано с тем, что существует два основных признака.
2) метки показывают слишком большую точность: базы данных временных рядов обычно сбрасывают что-то вроде ежемесячного временного ряда в электронную таблицу со значениями дат, такими как 1/1/2001, 2/1/2001 и т. д. Excel попытается показать полную строку даты mm/dd/yyyy по умолчанию, что может быть предпочтительно для короткого дневного временного ряда, но нежелательно для не дневного ряда или ряда, который выполняется в течение длительного периода времени. В этих случаях предпочтительнее форматирование типа мм/гггг или гггг.
Мой вопрос в том, есть ли у кого-нибудь уже написанный хороший алгоритм, который может сделать красивую ось метки даты? Горизонтальные метки только с галочками, расположенными достаточно далеко друг от друга чтобы учесть это, и интеллектуальное форматирование даты по мере того, как данные начинают охватывать все больший и больший промежуток времени (например, метки, которые преобразуются с 1/1/2001 по 1/2001 по 2001 год). В конечном счете мне придется написать это с помощью VBA, но я мог бы перевести алгоритм, написанный на другом языке.
Спасибо.
1 ответ:
Это не верный ответ, но, возможно, удобрение .... Я разделяю ваши опасения, поскольку часто сталкиваюсь с такими же проблемами.
Excel (2003) не поддерживает диаграммы с истинной осью дат (где расстояние от 01 февраля до 01 марта составляет 28 единиц, а от 01 марта до 01 апреля-31 единица). Лучшее приближение, которое я нашел (для графиков, охватывающих более 2-3 месяцев), - это
- Используйте диаграмму X/Y
- вручную установите минимум и максимум масштаба значения (X) в целое число представление первого числа месяца (например, 01-Feb-2010, представленное целым числом 40210)
- установите значение major unit равным 30,42 (средняя продолжительность месяца-Excel не может делать переменные major ticks)
- Установите минорную единицу на 7 (так что я получаю недели ясные, по крайней мере)
- Используйте пользовательский формат чисел (например, "МММ-гггг") на оси X
Иногда я настраиваю вышесказанное, временно отображая дату как "DD-MM-YYYY" и посмотрите, сколько первых дней месяца я ударил своей шкалой, и отрегулируйте минимум на получите оптимум. Чем длиннее диапазон дат, тем менее точным он становится.
Надеюсь, что поможет хоть немного ....