Ранее людям приходилось полагаться на скриптлеты для сбора данных диаграммы и визуализации диаграммы с использованием элемента изображения в шаблоне отчета. JasperReports упрощает задачу, поскольку в него встроена поддержка диаграмм с использованием нового компонента диаграммы.
Используя новый компонент диаграммы, пользователь должен применять только визуальные параметры и определять выражения, которые помогут построить набор данных диаграммы. JasperReports использует JFreeChart в качестве базовой библиотеки диаграмм. При настройке нового компонента диаграммы участвуют следующие три компонента:
-
Общий компонент диаграммы.
-
Набор данных диаграммы (который группирует настройки, связанные с данными диаграммы).
-
График диаграммы (который группирует визуальные настройки, связанные с отображением элементов диаграммы).
Общий компонент диаграммы.
Набор данных диаграммы (который группирует настройки, связанные с данными диаграммы).
График диаграммы (который группирует визуальные настройки, связанные с отображением элементов диаграммы).
JasperReports в настоящее время поддерживает следующие типы диаграмм: круговая диаграмма, круговая диаграмма 3D, линейка, линейчатая 3D, линейка XY, линейчатая диаграмма с накоплением, линейчатая трехмерная диаграмма, линия, линейная ось XY, площадь, область XY, многоуровневая область, разброс, пузырь, временные ряды, высокая -Низкое-открытое-закрытое, подсвечник, несколько осей, метр, термометр и гантт.
Свойства диаграммы
Диаграммы являются обычными элементами отчета, поэтому некоторые свойства их разделяют со всеми остальными элементами отчета. Существует элемент JRXML с именем < chart >, используемый для создания всех типов диаграмм. Этот элемент группирует специальные специфичные для диаграммы настройки, которые применяются ко всем типам диаграмм.
Подэлементы диаграммы
Подэлементами элемента <chart> являются —
-
<reportElement> — это отображаемые объекты, такие как статические тексты, текстовые поля, изображения, линии и прямоугольники, которые вы помещаете в разделы шаблона отчета.
-
<Box> — этот элемент используется для окружения диаграмм границей, настраиваемой с каждой стороны.
-
<chartTitle> — этот элемент используется для размещения заголовка диаграммы. Атрибут position определяет положение заголовка диаграммы в отчете. Этот элемент имеет атрибуты — Position (значения могут быть Top , Bottom , Left , Right . Значение по умолчанию — Top ), color . <chartTitle> имеет шрифт и titleExpression в качестве подэлементов.
-
<chartSubtitle> — этот элемент используется для размещения субтитров диаграммы. Этот элемент имеет атрибут — цвет . <chartSubtitle> содержит шрифт и выражение subtitleExpression в качестве подэлементов.
-
<chartLegend> — элемент может управлять связанными со шрифтом свойствами, а также цветом текста и цветом фона легенды диаграммы, используя этот элемент. Этот элемент имеет атрибуты — textColor и backgroundColor .
-
<anchorNameExpression> — этот элемент создает цель для привязки.
-
<hyperlinkReferenceExpression> — этот элемент содержит выражение отчета, указывающее имя внешнего ресурса (обычно URL).
-
<hyperlinkAnchorExpression> — гиперссылка указывает на привязку во внешнем ресурсе.
-
<hyperlinkPageExpression> — гиперссылка указывает на страницу в текущем отчете.
-
<hyperlinkTooltipExpression> — этот элемент управляет всплывающей подсказкой гиперссылки. Тип выражения должен быть java.lang.String .
-
<hyperlinkParameter> — этот элемент, если он присутствует, генерирует окончательную гиперссылку в зависимости от значений параметра.
<reportElement> — это отображаемые объекты, такие как статические тексты, текстовые поля, изображения, линии и прямоугольники, которые вы помещаете в разделы шаблона отчета.
<Box> — этот элемент используется для окружения диаграмм границей, настраиваемой с каждой стороны.
<chartTitle> — этот элемент используется для размещения заголовка диаграммы. Атрибут position определяет положение заголовка диаграммы в отчете. Этот элемент имеет атрибуты — Position (значения могут быть Top , Bottom , Left , Right . Значение по умолчанию — Top ), color . <chartTitle> имеет шрифт и titleExpression в качестве подэлементов.
<chartSubtitle> — этот элемент используется для размещения субтитров диаграммы. Этот элемент имеет атрибут — цвет . <chartSubtitle> содержит шрифт и выражение subtitleExpression в качестве подэлементов.
<chartLegend> — элемент может управлять связанными со шрифтом свойствами, а также цветом текста и цветом фона легенды диаграммы, используя этот элемент. Этот элемент имеет атрибуты — textColor и backgroundColor .
<anchorNameExpression> — этот элемент создает цель для привязки.
<hyperlinkReferenceExpression> — этот элемент содержит выражение отчета, указывающее имя внешнего ресурса (обычно URL).
<hyperlinkAnchorExpression> — гиперссылка указывает на привязку во внешнем ресурсе.
<hyperlinkPageExpression> — гиперссылка указывает на страницу в текущем отчете.
<hyperlinkTooltipExpression> — этот элемент управляет всплывающей подсказкой гиперссылки. Тип выражения должен быть java.lang.String .
<hyperlinkParameter> — этот элемент, если он присутствует, генерирует окончательную гиперссылку в зависимости от значений параметра.
Атрибуты диаграммы
Атрибуты в элементе <chart>, доступные для всех типов диаграмм:
-
isShowLegend — этот атрибут используется для определения того, будет ли отображаться легенда диаграммы в отчете. Значения могут быть истинными или ложными . По умолчанию установлено значение true .
-
valuationTime — Определяет, когда выражение диаграммы будет оценено. Значения могут быть сейчас , отчет , страница , столбец , группа , группа . Значение по умолчанию сейчас .
-
valuationGroup — этот атрибут определяет имя группы, которая будет использоваться для оценки выражений диаграммы. Значение этого атрибута должно соответствовать названию группы, которое мы хотели бы использовать в качестве группы оценки диаграммы.
-
hyperlinkType — этот атрибут может содержать любое текстовое значение. Значением по умолчанию является None . Это означает, что ни текстовые поля, ни изображения не представляют гиперссылки, даже если присутствуют специальные выражения гиперссылки.
-
hyperlinkTarget — этот атрибут помогает настроить поведение указанной ссылки при ее нажатии в средстве просмотра. Значения могут быть Self или Blank . Значением по умолчанию является Self .
-
bookmarkLevel — этот атрибут, если задано положительное целое число, создает закладки в отчетах, экспортируемых в PDF. Значение по умолчанию 0 .
-
customizerClass — это имя класса (необязательно), которое можно использовать для настройки диаграммы. Значением этого элемента должна быть строка, содержащая имя класса настройщика.
isShowLegend — этот атрибут используется для определения того, будет ли отображаться легенда диаграммы в отчете. Значения могут быть истинными или ложными . По умолчанию установлено значение true .
valuationTime — Определяет, когда выражение диаграммы будет оценено. Значения могут быть сейчас , отчет , страница , столбец , группа , группа . Значение по умолчанию сейчас .
valuationGroup — этот атрибут определяет имя группы, которая будет использоваться для оценки выражений диаграммы. Значение этого атрибута должно соответствовать названию группы, которое мы хотели бы использовать в качестве группы оценки диаграммы.
hyperlinkType — этот атрибут может содержать любое текстовое значение. Значением по умолчанию является None . Это означает, что ни текстовые поля, ни изображения не представляют гиперссылки, даже если присутствуют специальные выражения гиперссылки.
hyperlinkTarget — этот атрибут помогает настроить поведение указанной ссылки при ее нажатии в средстве просмотра. Значения могут быть Self или Blank . Значением по умолчанию является Self .
bookmarkLevel — этот атрибут, если задано положительное целое число, создает закладки в отчетах, экспортируемых в PDF. Значение по умолчанию 0 .
customizerClass — это имя класса (необязательно), которое можно использовать для настройки диаграммы. Значением этого элемента должна быть строка, содержащая имя класса настройщика.
Настройка диаграммы
Как упоминалось выше, JasperReports использует JFreeChart в качестве базовой библиотеки диаграмм. JFreeChart содержит функции, которые напрямую не поддерживаются JasperReports. Мы можем воспользоваться этими функциями, предоставив класс настройщика через атрибут customizerClass в элементе <chart>. Класс настройщика — это ничто иное, как реализация интерфейса net.sf.jasperreports.engine.JRChartCustomizer . Самый простой способ реализовать этот интерфейс — расширить класс net.sf.jasperreports.engine.JRAbstractChartCustomizer и, таким образом, получить доступ к параметрам, полям и переменным для более гибкой настройки диаграммы на основе данных отчета.
Наборы диаграмм
Одним из общих свойств для всех типов диаграмм является элемент < dataset >. Наборы данных диаграммы помогают отображать данные отчета и получать данные диаграммы во время выполнения. Каждый тип диаграммы содержит различные подэлементы для определения выражений диаграммы. Эти выражения определяют данные, используемые для создания диаграммы. Все эти подэлементы содержат элемент <dataset>, который определяет, когда выражения диаграммы вычисляются и сбрасываются.
В JasperReports доступно несколько типов наборов данных диаграмм, поскольку каждый тип диаграмм работает с определенными наборами данных: круговая диаграмма, категория, XY, временной ряд, период времени, XYZ и High-Low. Каждый из этих типов наборов данных реализует интерфейс net.sf.jasperreports.engine.JRChartDataset, который определяет наборы данных диаграммы. Все наборы данных диаграммы инициализируются и увеличиваются одинаково; однако они отличаются только типом данных или сериями данных, которые они отображают.
Свойства набора данных
В приведенной ниже таблице обобщены атрибуты элемента <dataset> —
атрибут | Описание | Ценности |
---|---|---|
resetType | Этот атрибут определяет, когда значение выражения диаграммы должно быть сброшено. | Нет, Отчет, Страница, Колонка, Группа. Значением по умолчанию является Отчет . |
resetGroup | Этот атрибут определяет имя группы, в которой значение выражения диаграммы сбрасывается. | Значение этого атрибута должно совпадать с именем любой группы, объявленной в шаблоне отчета JRXML. |
incrementType | Этот атрибут определяет, когда следует пересчитать значение выражения диаграммы. | Нет, Отчет, Страница, Колонка, Группа. Значением по умолчанию является «Нет» . |
incrementGroup | Этот атрибут определяет имя группы, в которой выражение диаграммы пересчитывается. | Значение этого атрибута должно совпадать с именем группы, объявленной в шаблоне отчета JRXML. |
В следующей таблице приведены подэлементы элемента <dataset> —
Подэлемент | Описание |
---|---|
<IncrementWhenExpression> | Способ увеличения набора данных диаграммы может быть настроен путем фильтрации нежелательных данных с помощью этого подэлемента. |
<DatasetRun> | Он содержит информацию, необходимую для создания экземпляра поднабора отчетов. |
Типы наборов данных
Конкретные типы наборов данных описаны ниже —
Набор данных пирога
Круговой набор данных характеризуется следующими выражениями —
-
<keyExpression> — представляет категории, которые будут составлять срезы на круговой диаграмме. Это выражение может возвращать любой объект java.lang.Comparable.
-
<valueExpression> — создает значения, которые соответствуют каждой категории / ключу в наборе данных. Значения всегда являются объектами java.lang.Number.
-
<labelExpression> — если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого среза на круговой диаграмме. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для круговой диаграммы.
-
<sectionHyperlink> — устанавливает гиперссылки, связанные с круговыми секциями.
<keyExpression> — представляет категории, которые будут составлять срезы на круговой диаграмме. Это выражение может возвращать любой объект java.lang.Comparable.
<valueExpression> — создает значения, которые соответствуют каждой категории / ключу в наборе данных. Значения всегда являются объектами java.lang.Number.
<labelExpression> — если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого среза на круговой диаграмме. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для круговой диаграммы.
<sectionHyperlink> — устанавливает гиперссылки, связанные с круговыми секциями.
Набор данных категории
Набор данных категории характеризуется элементом <categorySeries>, который содержит —
-
<seriesExpression> — указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.
-
<categoryExpression> — возвращает имя категории для каждого значения в серии, указанной в выражении серии. Категории являются java.lang. Сопоставимые объекты.
-
<valueExpression> — создает значения, которые соответствуют каждой категории в наборе данных. Значения всегда являются объектами java.lang.Number.
-
<labelExpression> — если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента на диаграмме. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.
-
<itemHyperlink> — устанавливает гиперссылки, связанные с элементами диаграммы.
<seriesExpression> — указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.
<categoryExpression> — возвращает имя категории для каждого значения в серии, указанной в выражении серии. Категории являются java.lang. Сопоставимые объекты.
<valueExpression> — создает значения, которые соответствуют каждой категории в наборе данных. Значения всегда являются объектами java.lang.Number.
<labelExpression> — если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента на диаграмме. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.
<itemHyperlink> — устанавливает гиперссылки, связанные с элементами диаграммы.
Набор данных XY
Набор данных XY характеризуется элементом <xySeries>, который содержит —
-
<seriesExpression> — указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.
-
<xValueExpression> — возвращает значение java.lang.Number, представляющее значение X из пары (x, y), которая будет добавлена в текущий ряд данных.
-
<yValueExpression> — возвращает значение java.lang.Number, представляющее значение Y из пары (x, y), которая будет добавлена в текущий ряд данных.
-
<labelExpression> — если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента на диаграмме. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.
-
<itemHyperlink> — устанавливает гиперссылки, связанные с элементами диаграммы.
<seriesExpression> — указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.
<xValueExpression> — возвращает значение java.lang.Number, представляющее значение X из пары (x, y), которая будет добавлена в текущий ряд данных.
<yValueExpression> — возвращает значение java.lang.Number, представляющее значение Y из пары (x, y), которая будет добавлена в текущий ряд данных.
<labelExpression> — если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента на диаграмме. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.
<itemHyperlink> — устанавливает гиперссылки, связанные с элементами диаграммы.
Набор данных XYZ
Набор данных XYZ характеризуется элементом <xyzSeries>, который содержит —
-
<seriesExpression> — указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.
-
<xValueExpression> — возвращает значение java.lang.Number, представляющее значение X из элемента (x, y, z), который будет добавлен в текущий ряд данных.
-
<yValueExpression> — возвращает значение java.lang.Number, представляющее значение Y из элемента (x, y, z), который будет добавлен в текущий ряд данных.
-
<zValueExpression> — возвращает значение java.lang.Number, представляющее значение Z из элемента (x, y, z), который будет добавлен в текущий ряд данных.
-
<labelExpression> — если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента на диаграмме. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.
-
<itemHyperlink> — устанавливает гиперссылки, связанные с элементами диаграммы.
<seriesExpression> — указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.
<xValueExpression> — возвращает значение java.lang.Number, представляющее значение X из элемента (x, y, z), который будет добавлен в текущий ряд данных.
<yValueExpression> — возвращает значение java.lang.Number, представляющее значение Y из элемента (x, y, z), который будет добавлен в текущий ряд данных.
<zValueExpression> — возвращает значение java.lang.Number, представляющее значение Z из элемента (x, y, z), который будет добавлен в текущий ряд данных.
<labelExpression> — если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента на диаграмме. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.
<itemHyperlink> — устанавливает гиперссылки, связанные с элементами диаграммы.
Набор данных временного ряда
Набор данных временного ряда характеризуется атрибутом timePeriod и элементом <timeSeries>. Атрибут timePeriod указывает тип ряда данных в наборе данных. Временные ряды могут содержать числовые значения, связанные с днями, месяцами, годами или другими предварительно определенными периодами времени. Возможные значения: год, квартал, месяц, неделя, день — это значение по умолчанию, час, минута, секунда, миллисекунда.
Элемент <timeSeries> содержит —
-
<seriesExpression> — указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.
-
<timePeriodExpression> — возвращает значение java.util.Date, из которого механизм извлекает соответствующий период времени в зависимости от значения, установленного для атрибута timePeriod, упомянутого выше.
-
<valueExpression> — возвращает значение java.lang.Number, которое связывается с соответствующим значением периода времени при увеличении текущей серии набора данных.
-
<labelExpression> — если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента на диаграмме. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.
-
<itemHyperlink> — устанавливает гиперссылки, связанные с элементами диаграммы.
<seriesExpression> — указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.
<timePeriodExpression> — возвращает значение java.util.Date, из которого механизм извлекает соответствующий период времени в зависимости от значения, установленного для атрибута timePeriod, упомянутого выше.
<valueExpression> — возвращает значение java.lang.Number, которое связывается с соответствующим значением периода времени при увеличении текущей серии набора данных.
<labelExpression> — если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента на диаграмме. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.
<itemHyperlink> — устанавливает гиперссылки, связанные с элементами диаграммы.
Набор данных периода времени
Набор данных периода времени характеризуется элементом <timePeriodSeries>, который содержит —
-
<seriesExpression> — указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.
-
<startDateExpression> — указывает начало интервала даты, с которым будет связано числовое значение при его добавлении в ряд периода времени.
-
<endDateExpression> — указывает конец интервала даты, с которым будет связано числовое значение при его добавлении в ряд периода времени.
-
<valueExpression> — возвращает значение java.lang.Number, связанное с текущим интервалом дат, указанным в выражениях даты начала и окончания.
-
<labelExpression> — если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента на диаграмме. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.
-
<itemHyperlink> — устанавливает гиперссылки, связанные с элементами диаграммы.
<seriesExpression> — указывает название серии. Это выражение может возвращать любой объект java.lang.Comparable.
<startDateExpression> — указывает начало интервала даты, с которым будет связано числовое значение при его добавлении в ряд периода времени.
<endDateExpression> — указывает конец интервала даты, с которым будет связано числовое значение при его добавлении в ряд периода времени.
<valueExpression> — возвращает значение java.lang.Number, связанное с текущим интервалом дат, указанным в выражениях даты начала и окончания.
<labelExpression> — если это выражение отсутствует, на диаграмме будут отображаться метки по умолчанию для каждого элемента на диаграмме. Используйте это выражение, которое возвращает значения java.lang.String, чтобы настроить метки элементов для диаграммы.
<itemHyperlink> — устанавливает гиперссылки, связанные с элементами диаграммы.
Высокий низкий набор данных
Высокий низкий набор данных характеризуется следующими выражениями —
-
<seriesExpression> — в настоящее время поддерживается только одна серия на графике High-Low или Candlestick. Однако этот отдельный ряд должен быть идентифицирован значением java.lang.Comparable, возвращаемым этим выражением, и его также следует использовать в качестве имени ряда в легенде диаграммы.
-
<dateExpression> — возвращает дату, к которой относится текущий элемент (максимум, минимум, открытие, закрытие, объем).
-
<highExpression> — возвращает значение java.lang.Number, которое будет частью элемента данных, добавляемого в серию при увеличении набора данных.
-
<lowExpression> — возвращает значение java.lang.Number, которое будет частью элемента данных, добавляемого в серию при увеличении набора данных.
-
<openExpression> — возвращает значение java.lang.Number, которое будет частью элемента данных, добавляемого в серию при увеличении набора данных.
-
<closeExpression> — возвращает значение java.lang.Number, которое будет частью элемента данных, добавляемого в серию при увеличении набора данных.
-
<volumeExpression> — числовое выражение, которое возвращает значение тома, используемое для текущего элемента данных. Используется только для свечных графиков.
-
<itemHyperlink> — устанавливает гиперссылки, связанные с элементами диаграммы.
<seriesExpression> — в настоящее время поддерживается только одна серия на графике High-Low или Candlestick. Однако этот отдельный ряд должен быть идентифицирован значением java.lang.Comparable, возвращаемым этим выражением, и его также следует использовать в качестве имени ряда в легенде диаграммы.
<dateExpression> — возвращает дату, к которой относится текущий элемент (максимум, минимум, открытие, закрытие, объем).
<highExpression> — возвращает значение java.lang.Number, которое будет частью элемента данных, добавляемого в серию при увеличении набора данных.
<lowExpression> — возвращает значение java.lang.Number, которое будет частью элемента данных, добавляемого в серию при увеличении набора данных.
<openExpression> — возвращает значение java.lang.Number, которое будет частью элемента данных, добавляемого в серию при увеличении набора данных.
<closeExpression> — возвращает значение java.lang.Number, которое будет частью элемента данных, добавляемого в серию при увеличении набора данных.
<volumeExpression> — числовое выражение, которое возвращает значение тома, используемое для текущего элемента данных. Используется только для свечных графиков.
<itemHyperlink> — устанавливает гиперссылки, связанные с элементами диаграммы.
Набор данных значения
Это специальная реализация набора данных диаграмм, которая содержит одно значение и используется для визуализации диаграмм «Метр» и «Термометр». Значение собирается с использованием выражения <valueExpression>.
Графики
Другим распространенным элементом JRXML для всех типов диаграмм является элемент < plot >. Это позволяет нам определить некоторые характеристики диаграммы, такие как ориентация и цвет фона. Графики различаются в зависимости от типа диаграммы.
Атрибут Участка
В приведенной ниже таблице обобщены атрибуты элемента <plot> —
атрибут | Описание | Ценности |
---|---|---|
BackColor | Этот атрибут определяет цвет фона диаграммы. | Любое шестизначное шестнадцатеричное значение является допустимым значением для этого атрибута. Шестнадцатеричное значение должно предшествовать #. |
ориентация | Этот атрибут определяет ориентацию диаграммы. | Горизонтальный, вертикальный Значение по умолчанию «Вертикальный» |
backgroundAlpha | Этот атрибут определяет прозрачность цвета фона диаграммы. | Допустимые значения для этого атрибута включают любое десятичное число от 0 до 1 включительно. Чем выше число, тем менее прозрачным будет фон. Значением по умолчанию является «1». |
foregroundAlpha | Этот атрибут определяет прозрачность цветов переднего плана диаграммы. | Допустимые значения для этого атрибута включают любое десятичное число от 0 до 1 включительно. Чем выше число, тем менее прозрачным будет фон. Значением по умолчанию является «1». |
labelRotation | Этот атрибут позволяет вращать текстовые метки на оси X, чтобы вращать по часовой стрелке или против часовой стрелки. Этот атрибут применяется только к диаграммам, для которых ось x не является числовой или не отображает даты. | Значением по умолчанию является «0,0». |
Элемент <plot> имеет подэлемент <seriesColor>, атрибутами которого являются: seriesOrder и color . Этот элемент настраивает цвета для серии и их положение в последовательности цветов.
Специальные настройки для графиков
-
piePlot — не имеет особых настроек
-
pie3DPlot — Содержит атрибут deepFactor , числовое значение в диапазоне от 0 до 1, которое представляет глубину круговой диаграммы в процентах от высоты области графика.
-
barPlot — можно отображать или скрывать метки, метки или метки элементов, а также предоставляет настройки для обеих осей.
-
bar3DPlot — обеспечивает те же настройки, что и barPlot, и генерирует 3D-эффект с использованием атрибутов xOffset и yOffset.
-
linePlot — можно показать или скрыть линии, соединяющие точки элемента, можно показать или скрыть фигуры, связанные с точками элемента, и предоставляет настройки для обеих осей.
-
scatterPlot — Подобно linePlot, он может отображать или скрывать линии, соединяющие точки элемента, может отображать или скрывать фигуры, связанные с точками элемента, и предоставляет настройки для обеих осей.
-
areaPlot — предоставляет настройки для обеих осей.
-
bubblePlot — можно установить размеры пузырьков, задав атрибут scaleType и предоставив настройки для обеих осей.
-
timeSeriesPlot — можно показать или скрыть линии, соединяющие точки элемента, можно показать или скрыть фигуры, связанные с точками элемента, и предоставляет параметры настройки для обеих осей.
-
highLowPlot — можно показать или скрыть открытые отметки, можно показать или скрыть закрывающие отметки и предоставляет настройки для обеих осей.
-
CandlePlot — можно показать или скрыть громкость, и предоставляет настройки для обеих осей.
-
meterPlot — содержит специальные настройки для формы циферблата, угла шкалы, единиц измерения, интервала тиков, цвета циферблата, цвета иглы, цвета тика, шрифта отображения цвета, шаблона цвета и формата, диапазона данных и интервалов измерителя.
-
thermometerPlot — содержит специальные настройки для местоположения значения, цвета ртути, отображения / скрытия линий значений, шрифта отображения значения, шаблона цвета и формата, диапазона данных, низкого диапазона, среднего диапазона и верхнего диапазона.
-
multiAxisChart — содержит специальные настройки для оси, включенной в график.
piePlot — не имеет особых настроек
pie3DPlot — Содержит атрибут deepFactor , числовое значение в диапазоне от 0 до 1, которое представляет глубину круговой диаграммы в процентах от высоты области графика.
barPlot — можно отображать или скрывать метки, метки или метки элементов, а также предоставляет настройки для обеих осей.
bar3DPlot — обеспечивает те же настройки, что и barPlot, и генерирует 3D-эффект с использованием атрибутов xOffset и yOffset.
linePlot — можно показать или скрыть линии, соединяющие точки элемента, можно показать или скрыть фигуры, связанные с точками элемента, и предоставляет настройки для обеих осей.
scatterPlot — Подобно linePlot, он может отображать или скрывать линии, соединяющие точки элемента, может отображать или скрывать фигуры, связанные с точками элемента, и предоставляет настройки для обеих осей.
areaPlot — предоставляет настройки для обеих осей.
bubblePlot — можно установить размеры пузырьков, задав атрибут scaleType и предоставив настройки для обеих осей.
timeSeriesPlot — можно показать или скрыть линии, соединяющие точки элемента, можно показать или скрыть фигуры, связанные с точками элемента, и предоставляет параметры настройки для обеих осей.
highLowPlot — можно показать или скрыть открытые отметки, можно показать или скрыть закрывающие отметки и предоставляет настройки для обеих осей.
CandlePlot — можно показать или скрыть громкость, и предоставляет настройки для обеих осей.
meterPlot — содержит специальные настройки для формы циферблата, угла шкалы, единиц измерения, интервала тиков, цвета циферблата, цвета иглы, цвета тика, шрифта отображения цвета, шаблона цвета и формата, диапазона данных и интервалов измерителя.
thermometerPlot — содержит специальные настройки для местоположения значения, цвета ртути, отображения / скрытия линий значений, шрифта отображения значения, шаблона цвета и формата, диапазона данных, низкого диапазона, среднего диапазона и верхнего диапазона.
multiAxisChart — содержит специальные настройки для оси, включенной в график.
Типы графиков
JasperReports предлагает встроенную поддержку для нескольких типов диаграмм. Они перечислены ниже:
-
pieChart — комбинация набора данных Pie и графика Pie.
-
pie3DChart — Группирует набор данных Pie и 3D-график Pie.
-
barChart — базовая комбинация набора данных категории и гистограммы.
-
bar3DChart — обертывает набор данных категории и трехмерный график Bar.
-
xyBarChart — поддерживает наборы данных периода времени, наборы данных временного ряда и наборы данных XY, а также использует гистограмму для визуализации оси и элементов.
-
stackedBarChart — использует данные из набора данных категории и отображает их содержимое с использованием гистограммы.
-
stackedBar3DChart — использует данные из набора данных «Категория» и отображает их содержимое, используя трехмерный график Bar.
-
lineChart — группирует набор данных категории и линейный график.
-
xyLineChart — группирует набор данных XY и линейный график.
-
areaChart — элементы из набора данных категории отображаются с использованием графика площади.
-
stackedAreaChart — элементы из набора данных категории отображаются с использованием графика площади.
-
xyAreaChart — использует данные из набора данных XY и отображает их на графике площади.
-
scatterChart — оборачивает набор данных XY в график рассеяния.
-
bubbleChart — объединяет набор данных XYZ с графиком Bubble.
-
timeSeriesChart — группирует набор данных временного ряда и график временного ряда.
-
highLowChart — комбинация набора данных High-Low и графика High-Low.
-
CandlestickChart — использует данные из набора данных High-Low, но со специальным графиком Candlestick.
-
meterChart — отображает одно значение из набора данных Value на циферблате, используя параметры рендеринга из графика Meter.
-
thermometerChart — отображает одно значение в наборе данных Value с использованием параметров рендеринга из графика термометра.
-
multiAxisChart — содержит несколько осей диапазона, все из которых имеют общую ось домена.
pieChart — комбинация набора данных Pie и графика Pie.
pie3DChart — Группирует набор данных Pie и 3D-график Pie.
barChart — базовая комбинация набора данных категории и гистограммы.
bar3DChart — обертывает набор данных категории и трехмерный график Bar.
xyBarChart — поддерживает наборы данных периода времени, наборы данных временного ряда и наборы данных XY, а также использует гистограмму для визуализации оси и элементов.
stackedBarChart — использует данные из набора данных категории и отображает их содержимое с использованием гистограммы.
stackedBar3DChart — использует данные из набора данных «Категория» и отображает их содержимое, используя трехмерный график Bar.
lineChart — группирует набор данных категории и линейный график.
xyLineChart — группирует набор данных XY и линейный график.
areaChart — элементы из набора данных категории отображаются с использованием графика площади.
stackedAreaChart — элементы из набора данных категории отображаются с использованием графика площади.
xyAreaChart — использует данные из набора данных XY и отображает их на графике площади.
scatterChart — оборачивает набор данных XY в график рассеяния.
bubbleChart — объединяет набор данных XYZ с графиком Bubble.
timeSeriesChart — группирует набор данных временного ряда и график временного ряда.
highLowChart — комбинация набора данных High-Low и графика High-Low.
CandlestickChart — использует данные из набора данных High-Low, но со специальным графиком Candlestick.
meterChart — отображает одно значение из набора данных Value на циферблате, используя параметры рендеринга из графика Meter.
thermometerChart — отображает одно значение в наборе данных Value с использованием параметров рендеринга из графика термометра.
multiAxisChart — содержит несколько осей диапазона, все из которых имеют общую ось домена.
пример
Чтобы продемонстрировать графики, напишем новый шаблон отчета (jasper_report_template.jrxml). Здесь мы добавим элемент <barChart> в раздел <pageHeader> и раздел < pieChart > в <summary>. Мы будем отображать в диаграммах оценки, полученные для каждого предмета. Сохраните его в каталоге C: \ tools \ jasperreports-5.0.1 \ test . Содержимое файла приведено ниже.
<?xml version = "1.0" encoding = "UTF-8"?> <jasperReport xmlns = "http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name = "jasper_report_template" pageWidth = "595" pageHeight = "860" columnWidth = "515" leftMargin = "40" rightMargin = "40" topMargin = "50" bottomMargin = "50"> <field name = "subjectName" class = "java.lang.String"/> <field name = "marks" class = "java.lang.Integer"/> <variable name = "countNumber" class = "java.lang.Integer" calculation = "Count"> <variableExpression> <![CDATA[Boolean.TRUE]]> </variableExpression> </variable> <background> <band splitType = "Stretch"/> </background> <title> <band height = "79" splitType = "Stretch"/> </title> <pageHeader> <band height = "200"> <barChart> <chart evaluationTime = "Report"> <reportElement x = "0" y = "0" width = "555" height = "200"/> <chartTitle> <titleExpression> <![CDATA["My First JR Bar Chart"]]> </titleExpression> </chartTitle> </chart> <categoryDataset> <dataset incrementType = "None"/> <categorySeries> <seriesExpression> <![CDATA[$F{subjectName}]]> </seriesExpression> <categoryExpression> <![CDATA[$F{subjectName}]]> </categoryExpression> <valueExpression> <![CDATA[$F{marks}]]> </valueExpression> </categorySeries> </categoryDataset> <barPlot isShowTickMarks = "false"> <plot/> </barPlot> </barChart> </band> </pageHeader> <columnHeader> <band height = "20" splitType = "Stretch"/> </columnHeader> <detail> <band height = "20" splitType = "Stretch"/> </detail> <columnFooter> <band height = "20" splitType = "Stretch"/> </columnFooter> <pageFooter> <band height = "20" splitType = "Stretch"/> </pageFooter> <summary> <band height = "400" splitType = "Stretch"> <pieChart> <chart evaluationTime = "Report"> <reportElement x = "135" y = "0" width = "270" height = "300"/> <chartTitle> <titleExpression> <![CDATA["My First JR Pie Chart"]]> </titleExpression> </chartTitle> </chart> <pieDataset> <dataset incrementType = "None"/> <keyExpression> <![CDATA[$F{subjectName}]]> </keyExpression> <valueExpression> <![CDATA[$F{marks}]]> </valueExpression> </pieDataset> <piePlot> <plot/> <itemLabel/> </piePlot> </pieChart> </band> </summary> </jasperReport>
Детали вышеупомянутого файла как даны ниже —
-
Элементом JRXML, используемым для создания гистограммы, является </ barChart> в <pageHeader>. Он содержит подэлемент </ chart>, который содержит подэлемент <reportElement>, определяющий размеры и положение диаграммы.
-
Элемент <dataset> в линейчатой диаграмме должен быть заключен между элементами <categoryDataset> и </ categoryDataset> JRXML.
-
<categoryDataset> должен содержать элемент <categorySeries>. Этот элемент определяет, какой элемент данных будут представлять столбцы (в данном примере имена субъектов).
-
<categoryDataset> также должен содержать элемент, который определяет, как данные будут разделены на категории для сравнения. Здесь данные разделены именами субъектов.
-
Элемент <valueExpression> определяет, какое выражение используется для определения значения каждого столбца на графике. Здесь мы используем «знаки».
-
Для круговой диаграммы мы использовали элемент <pieChart> в разделе <summary>. Он содержит подэлемент </ chart>.
-
Подэлемент содержит выражение отчета, указывающее, что использовать в качестве ключа на диаграмме. Здесь мы использовали subjectName.
-
Подэлемент содержит выражение, используемое для вычисления значения для ключа. Здесь мы использовали знаки.
Элементом JRXML, используемым для создания гистограммы, является </ barChart> в <pageHeader>. Он содержит подэлемент </ chart>, который содержит подэлемент <reportElement>, определяющий размеры и положение диаграммы.
Элемент <dataset> в линейчатой диаграмме должен быть заключен между элементами <categoryDataset> и </ categoryDataset> JRXML.
<categoryDataset> должен содержать элемент <categorySeries>. Этот элемент определяет, какой элемент данных будут представлять столбцы (в данном примере имена субъектов).
<categoryDataset> также должен содержать элемент, который определяет, как данные будут разделены на категории для сравнения. Здесь данные разделены именами субъектов.
Элемент <valueExpression> определяет, какое выражение используется для определения значения каждого столбца на графике. Здесь мы используем «знаки».
Для круговой диаграммы мы использовали элемент <pieChart> в разделе <summary>. Он содержит подэлемент </ chart>.
Подэлемент содержит выражение отчета, указывающее, что использовать в качестве ключа на диаграмме. Здесь мы использовали subjectName.
Подэлемент содержит выражение, используемое для вычисления значения для ключа. Здесь мы использовали знаки.
Java-коды для заполнения отчетов остаются без изменений. Содержимое файла C: \ tools \ jasperreports-5.0.1 \ test \ src \ com \ tutorialspoint \ JasperReportFill.java указано ниже —
package com.tutorialspoint; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; public class JasperReportFill { @SuppressWarnings("unchecked") public static void main(String[] args) { String sourceFileName = "C://tools/jasperreports-5.0.1/test/jasper_report_template.jasper"; DataBeanList DataBeanList = new DataBeanList(); ArrayList<DataBean> dataList = DataBeanList.getDataBeanList(); JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataList); Map parameters = new HashMap(); try { JasperFillManager.fillReportToFile( sourceFileName, parameters, beanColDataSource); } catch (JRException e) { e.printStackTrace(); } } }
Поскольку мы будем отображать оценки, полученные по каждому предмету, POJO необходимо изменить. Содержимое файла C: \ tools \ jasperreports-5.0.1 \ test \ src \ com \ tutorialspoint \ DataBean.java приведено ниже —
package com.tutorialspoint; public class DataBean { private String subjectName; private Integer marks; public String getSubjectName() { return subjectName; } public void setSubjectName(String subjectName) { this.subjectName = subjectName; } public Integer getMarks() { return marks; } public void setMarks(Integer marks) { this.marks = marks; } }
Даже содержимое файла C: \ tools \ jasperreports-5.0.1 \ test \ src \ com \ tutorialspoint \ DataBeanList.java необходимо обновить, как указано ниже —
package com.tutorialspoint; import java.util.ArrayList; public class DataBeanList { public ArrayList<DataBean> getDataBeanList() { ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>(); dataBeanList.add(produce("English", 58)); dataBeanList.add(produce("SocialStudies", 68)); dataBeanList.add(produce("Maths", 38)); dataBeanList.add(produce("Hindi", 88)); dataBeanList.add(produce("Scince", 78)); return dataBeanList; } /* * This method returns a DataBean object, with subjectName , * and marks set in it. */ private DataBean produce(String subjectName, Integer marks) { DataBean dataBean = new DataBean(); dataBean.setSubjectName(subjectName); dataBean.setMarks(marks); return dataBean; } }
Генерация отчетов
Далее, давайте скомпилируем и выполним вышеуказанные файлы, используя наш обычный процесс сборки ANT. Содержимое файла build.xml (сохраненного в каталоге C: \ tools \ jasperreports-5.0.1 \ test) приведено ниже.
Файл импорта — baseBuild.xml взят из главы « Настройка среды» и должен быть расположен в том же каталоге, что и build.xml.
<?xml version = "1.0" encoding = "UTF-8"?> <project name = "JasperReportTest" default = "viewFillReport" basedir = "."> <import file = "baseBuild.xml" /> <target name = "viewFillReport" depends = "compile,compilereportdesing,run" description = "Launches the report viewer to preview the report stored in the .JRprint file."> <java classname = "net.sf.jasperreports.view.JasperViewer" fork = "true"> <arg value = "-F${file.name}.JRprint" /> <classpath refid = "classpath" /> </java> </target> <target name = "compilereportdesing" description = "Compiles the JXML file and produces the .jasper file."> <taskdef name = "jrc" classname = "net.sf.jasperreports.ant.JRAntCompileTask"> <classpath refid = "classpath" /> </taskdef> <jrc destdir = "."> <src> <fileset dir = "."> <include name = "*.jrxml" /> </fileset> </src> <classpath refid = "classpath" /> </jrc> </target> </project>
Далее, давайте откроем окно командной строки и перейдем в каталог, где находится build.xml. Наконец, выполните команду ant -Dmain-class = com.tutorialspoint.JasperReportFill (viewFullReport является целью по умолчанию) следующим образом:
C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.tutorialspoint.JasperReportFill Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml clean-sample: [delete] Deleting directory C:\tools\jasperreports-5.0.1\test\classes [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jasper [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrprint compile: [mkdir] Created dir: C:\tools\jasperreports-5.0.1\test\classes [javac] C:\tools\jasperreports-5.0.1\test\baseBuild.xml:28: warning: 'includeantruntime' was not set, defaulting to bu [javac] Compiling 3 source files to C:\tools\jasperreports-5.0.1\test\classes compilereportdesing: [jrc] Compiling 1 report design files. [jrc] log4j:WARN No appenders could be found for logger (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory). [jrc] log4j:WARN Please initialize the log4j system properly. [jrc] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. [jrc] File : C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml ... OK. run: [echo] Runnin class : com.tutorialspoint.JasperReportFill [java] log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment). [java] log4j:WARN Please initialize the log4j system properly. viewFillReport: [java] log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment). [java] log4j:WARN Please initialize the log4j system properly. BUILD SUCCESSFUL Total time: 19 minutes 45 seconds
В результате вышеупомянутой компиляции открывается окно JasperViewer, как на экране ниже —
Здесь мы видим, что гистограмма создается в верхнем колонтитуле, а круговая диаграмма — в разделах сводки.