Диаграммы и графики в Delphi с помощью TeeChart
TeeChart — один из наиболее удобных компонентов для визуализации данных в приложениях Delphi. С его помощью можно строить линейные и столбчатые диаграммы, круговые графики, области, финансовые представления и специальные типы визуализаций. Компонент подходит для проектов на VCL и FireMonkey, поэтому его можно использовать в настольных программах для Windows, macOS и Linux, а также в мобильных приложениях.
Основная идея TeeChart проста: на форму помещается объект TChart, после чего к нему добавляются серии данных. Серия определяет способ отображения значений, а сам график отвечает за оси, легенду, заголовок, сетку, масштабирование и взаимодействие с пользователем.
Подготовка проекта И Выбор Компонента
В стандартной установке Delphi TeeChart обычно доступен через палитру компонентов. Для приложения VCL используется компонент TChart, размещаемый на форме Windows. В проекте FireMonkey применяется совместимый вариант визуального компонента, который позволяет сохранять общую логику построения графиков между платформами.
После размещения диаграммы на форме стоит сразу настроить её основные свойства. Размер компонента должен позволять подписям осей и легенде отображаться без наложений. Свойство View3D можно отключить для деловых графиков: плоское представление чаще воспринимается точнее, особенно при сравнении близких значений.
Chart1.View3D := False;
Chart1.Title.Text.Clear;
Chart1.Title.Text.Add('Продажи по месяцам');
Chart1.Legend.Visible := True;
Для масштабирования в окне полезно установить Align := alClient в VCL или соответствующее выравнивание в FireMonkey. Если график является частью сложной формы, его можно поместить на отдельную панель, вкладку или в контейнер с прокруткой.
Добавление Серий И Заполнение Данными
Каждая серия TeeChart хранит набор точек и правила их отображения. Например, TLineSeries соединяет значения линиями, TBarSeries показывает вертикальные столбцы, а TPieSeries распределяет общий итог между секторами. Серии можно создавать во время проектирования через редактор диаграммы или программно.
Пример построения линейного графика:
uses
VclTee.Chart, VclTee.Series;
procedure TForm1.FormCreate(Sender: TObject);
var
Series: TLineSeries;
begin
Series := TLineSeries.Create(Chart1);
Chart1.AddSeries(Series);
Series.Title := 'Температура';
Series.Add(12, 'Пн');
Series.Add(15, 'Вт');
Series.Add(14, 'Ср');
Series.Add(18, 'Чт');
Series.Add(20, 'Пт');
end;
Метод Add подходит для последовательных значений. Когда по горизонтальной оси требуется числовая координата, лучше использовать AddXY. Такой вариант удобен для временных рядов, измерений и математических функций:
Series.AddXY(0, 10);
Series.AddXY(1, 14);
Series.AddXY(2, 13);
В реальном проекте данные часто поступают из базы данных, файла CSV, REST-сервиса или SQL-запроса. В этом случае серию следует очищать перед повторным заполнением через Clear, а обновление экрана временно отключать свойством Chart1.AutoRepaint := False, возвращая его в True после загрузки всех точек.
Форматирование Линий, Столбцов И Маркеров
Внешний вид серии настраивается через её свойства. Для линии можно задать цвет, толщину, стиль и отображение маркеров. Маркеры полезны на небольших наборах данных, где важно видеть каждое измерение, но на тысячах точек они создают визуальный шум.
Series.Color := TAlphaColorRec.Cornflowerblue;
Series.LinePen.Width := 2;
Series.Pointer.Visible := True;
Series.Pointer.Brush.Color := TAlphaColorRec.White;
Series.Pointer.Pen.Color := TAlphaColorRec.Cornflowerblue;
У столбчатых серий настраиваются ширина колонок, цвет, прозрачность и положение относительно соседних рядов. Несколько серий можно показывать группами или в накопительном виде. Для этого применяются разные варианты TBarSeries, а также параметры MultiBar, определяющие способ размещения столбцов.
Круговая диаграмма требует особого подхода к данным. В её серии каждая точка представляет долю общего значения, поэтому подписи категорий и процентные значения должны быть достаточно короткими. Цвета секторов желательно выбирать контрастные, а количество категорий ограничивать: при большом числе сегментов круговая форма быстро теряет информативность.
Оси, Подписи И Легенда
Настройка осей определяет, насколько легко читать график. В TChart доступны нижняя, левая, верхняя и правая оси. Для каждой можно установить заголовок, формат чисел, минимальное и максимальное значение, шаг делений и вид сетки.
Chart1.BottomAxis.Title.Caption := 'Месяц';
Chart1.LeftAxis.Title.Caption := 'Количество заказов';
Chart1.LeftAxis.AxisValuesFormat := '#,##0';
Chart1.LeftAxis.Grid.Visible := True;
Если ось показывает даты, формат нужно выбирать с учётом плотности точек. Для дневных значений подходит формат dd.mm, для длинного периода — название месяца или год. Принудительно заданные границы полезны для сопоставления нескольких графиков, однако слишком жёсткий диапазон может скрыть выбросы.
Легенда должна объяснять цвет и назначение каждой серии. Если название уже указано на оси или в заголовке, дублировать его в легенде не стоит. Для длинных названий можно изменить положение легенды, размер шрифта и ширину области, чтобы она не занимала основное пространство диаграммы.
Подсказки И Интерактивное Управление
TeeChart поддерживает интерактивные возможности: увеличение фрагмента, прокрутку, выделение точек и отображение всплывающих подсказок. Эти функции особенно полезны в аналитических программах, где пользователь исследует данные, а не просто просматривает готовый отчёт.
Для обработки наведения мыши можно использовать события диаграммы и определить ближайшую точку серии. На практике часто применяются обработчики OnMouseMove, OnClickSeries и события самих серий. В подсказку можно выводить название ряда, исходное значение, дату и дополнительные сведения из связанного набора данных.
Масштабирование удобно включать для длинных временных рядов. При этом следует предоставить понятный способ возврата к исходному виду, например кнопку «Сбросить масштаб». Для мобильного интерфейса важны размеры областей касания, плавность прокрутки и отсутствие слишком мелких элементов управления.
Сравнение Основных Типов Диаграмм
Выбор серии зависит от смысла данных, а не от декоративного оформления. Линия хорошо показывает изменение показателя во времени, столбцы подходят для сравнения отдельных категорий, а круговая диаграмма предназначена для демонстрации структуры общего значения.
В TeeChart есть специализированные классы для финансовых котировок, областей, пузырьков, точечных графиков и других задач. Несколько типов можно сочетать в одном TChart: например, столбцами показывать объём продаж, а линией — средний чек. Для этого серии добавляются к одной диаграмме и при необходимости связываются с разными вертикальными осями.
| Тип серии | Подходящие данные | Сильная сторона | Что учитывать |
|---|---|---|---|
TLineSeries |
Временные ряды, измерения | Наглядно показывает динамику | При большом числе точек нужна оптимизация |
TBarSeries |
Сравнение категорий | Хорошо видны различия между значениями | Длинные подписи требуют поворота или сокращения |
TPieSeries |
Доли и структура итога | Быстро показывает состав общего значения | Не подходит для большого количества сегментов |
TAreaSeries |
Накопленные показатели | Подчёркивает объём и изменение области | Перекрывающиеся области могут затруднить чтение |
TPointSeries |
Точечные измерения и корреляции | Показывает распределение значений | Без подписей смысл точек может быть неочевиден |
TOHLCSeries |
Биржевые и финансовые данные | Отображает открытие, максимум, минимум и закрытие | Требует корректно подготовленных котировок |
Производительность И Экспорт Результата
При нескольких десятках или сотнях точек TeeChart обычно работает без дополнительной оптимизации. Для больших наборов данных полезно уменьшать детализацию на экране, группировать значения по интервалам и не добавлять маркеры к каждой точке. При пакетной загрузке рекомендуется отключать автоматическую перерисовку, чтобы компонент не обновлялся после каждого вызова Add.
Если диаграмма строится по данным базы, лучше передавать в неё уже отфильтрованный набор. SQL-запрос может сразу выполнять группировку по дате, месяцу или категории. Такой подход сокращает объём памяти и делает визуализацию быстрее, особенно в FireMonkey-приложениях на мобильных устройствах.
Готовый график можно сохранить в изображение, PDF или другой поддерживаемый формат через встроенные возможности TeeChart и экспортные классы. Это удобно для отчётов, печати и отправки результатов. Перед экспортом стоит проверить размер шрифта, контраст цветов и наличие подписей: вид диаграммы на форме и в файле может отличаться из-за другого разрешения.
Благодаря разделению данных, серий и оформления TeeChart хорошо вписывается в архитектуру Delphi-проектов. Один и тот же модуль подготовки данных можно использовать в VCL- и FireMonkey-интерфейсах, меняя только визуальные детали. Такой подход упрощает сопровождение приложения и позволяет создавать понятные графики для аналитики, мониторинга и отчётности.