Нативные векторные диаграммы

THPDFChart объединяет серии данных, оси, темы, легенды, подписи и accessibility-текст в переиспользуемую модель диаграммы, которую отрисовывает THPDFPage.DrawChart

Renderer выдаёт операторы PDF path и text напрямую, поэтому диаграммы остаются чёткими на любом масштабе и не создают Image XObject

Модель диаграммы

THPDFChart владеет своими экземплярами THPDFChartSeries и двумя объектами THPDFChartAxis, при этом каждая серия наращивает хранилище точек геометрически, давая append с амортизированным постоянным временем

Вызовите THPDFChart.AddSeries со значением THPDFChartKind, затем добавляйте конечные координаты через THPDFChartSeries.AddPoint

THPDFChart.ClearSeries освобождает все принадлежащие серии, а THPDFChartSeries.Clear сохраняет конфигурацию серии и удаляет только её точки

Свойства SeriesCount, Series, Count и Points дают индексированный доступ на чтение к модели

Серии и оси

Серии line, bar, area и scatter могут делить одну декартову область построения, а круговая диаграмма обязана содержать ровно одну серию hckPie

THPDFChartAxis.AutomaticMinimum и AutomaticMaximum выбирают границы по данным; отключение любого из свойств активирует соответствующее значение Minimum или Maximum

TickCount при рендеринге ограничивается диапазоном от 2 до 20, ShowGrid управляет линиями сетки осей, а NumberFormat задаёт числовой формат для делений и сгенерированных подписей

Внешний вид и подписи

THPDFChartTheme выбирает палитры hctLight, hctDark или hctMonochrome

THPDFChartLegendPosition выбирает отсутствие легенды, легенду справа или снизу через hclNone, hclRight и hclBottom

Каждая серия открывает Name, Kind, Color, LineWidth, ShowMarkers, ShowLabels и данные THPDFChartPoint с подписями

Задайте в Color настоящий TColor для явного цвета серии или оставьте значение по умолчанию, чтобы использовать активную палитру

Accessibility

THPDFChart.BuildAccessibleText возвращает явный AlternativeText, если он задан, либо строит ограниченную сводку из заголовка, серий, подписей, X и Y, с независимыми лимитами на точки и байты

Передайте structure parent в расширенную перегрузку DrawChart, чтобы обернуть всю диаграмму в тегированный Figure с записью Alt и bounding box layout

Structure parent обычно должен быть Document, Sect или элементом layout с figure, созданным для текущей страницы

Бюджеты и статистика

THPDFChartRenderOptions.Default разрешает 64 серии, 100 000 точек на серию, 1 000 000 суммарных точек, 512 видимых подписей, 64 точки в сгенерированном accessibility-тексте и 8 192 байта accessibility-текста

Некорректная геометрия, не конечные координаты, смешанное содержимое pie и превышение бюджетов по сериям или точкам вызывают исключение ещё до начала отрисовки

THPDFChartRenderStatistics сообщает отрисованные серии, точки, подписи, сегменты путей, тегирование figure и усечение подписей

Проходы валидации и рендеринга линейны по числу серий и точек, с ограниченной работой по подписям и accessibility-тексту

Поддерживающие типы

Публичная поверхность состоит из THPDFChartKind, THPDFChartTheme, THPDFChartLegendPosition, THPDFChartPoint, THPDFChartSeries, THPDFChartAxis, THPDFChart, THPDFChartRenderOptions и THPDFChartRenderStatistics

Пример

Chart := THPDFChart.Create;
try
  Chart.Title := 'Quarterly revenue';
  Chart.XAxis.Title := 'Quarter';
  Chart.YAxis.Title := 'Revenue';
  Chart.Theme := hctLight;

  SeriesItem := Chart.AddSeries(hckBar, 'North');
  SeriesItem.ShowLabels := True;
  SeriesItem.AddPoint(1, 120, 'Q1');
  SeriesItem.AddPoint(2, 175, 'Q2');
  SeriesItem.AddPoint(3, 164, 'Q3');

  Options := THPDFChartRenderOptions.Default;
  Document.CurrentPage.DrawChart(
    Chart, 48, 72, 500, 320, Options, Statistics
  );
finally
  Chart.Free;
end;

См. также: THPDFPage.DrawChart, Обзор векторной графики, Автоматическая структура PDF/UA