JasperReports: Как замаскировать или отфильтровать надписи на оси диаграммы - PullRequest
3 голосов
/ 17 февраля 2012

Я использую простую диаграмму области, основанную на простом наборе данных, например:

DateTime(sql.timestamp) |Value(Integer)
2012-02-17 00:02:02     |100
2012-02-17 00:02:08     |110
2012-02-17 00:02:20     |90
2012-02-17 00:02:35     |10
2012-02-17 00:02:40     |130
2012-02-17 00:04:22     |14
2012-02-17 00:04:33     |45
2012-02-17 00:05:02     |60
...

DateTime используется Осью категории, Значение используется Осью диапазона.
В наборе данных ~ 1000 записей
В метках оси категорий будет отображаться каждое значение DateTime.
Но это с 1000 записей слишком много, ярлыки категорий будут отображаться как черная линия.
И это моя проблема.
Я пытался (не) проверять все «Свойства диаграммы». Без результатов.
Нужно ли маскировать или фильтровать этикетки?
Я пытался изменить значения:
Категория Метка-маска для маски
Категория Оси Вертикальные метки
(этот флажок не вступает в силу)

Выражение метки оси категорий

Все несколькими способами. Но это не сработает. Каждый набор данных создаст собственную метку.

Другие механизмы отчетов, которые я использовал, вычислили Cat. Ось динамическая.
Но JasperReports?

Я использую iReport 4.5.0 с (фактическим) jfreechart 1.0.14

EDIT

Если я использую таблицу временных рядов, JasperReports сгруппирует данные по Intervall (год, месяц, ...), а не динамически

Но внешний вид диаграммы довольно хорош, так что это то, что я хочу. Только ярлыки должны быть расположены далеко друг от друга.

Вот прекрасный пример (advsoft phpChartdirector) that is OK

Вот пример JasperReports / IReport:

не в порядке. Посмотрите на кошку. Ось

not OK. Take a look to the cat. Axis

Итак ... Что делать?

Конец РЕДАКТИРОВАТЬ

С наилучшими пожеланиями Christian

1 Ответ

2 голосов
/ 17 февраля 2012

Используйте диаграмму временных рядов вместо линейной диаграммы. Вы должны получить именно то, что вы ищете таким образом.

РЕДАКТИРОВАТЬ: я проверил с вашими .jrxml и данных. Это работает хорошо: Nice Time Series Chart

Но ... похоже, в iReport есть ошибка. Вы не можете установить период времени в графическом интерфейсе iReport. Возможно, это то, что вызывает у вас проблемы. Это было очень странно для меня. iReport генерирует это независимо от того, какой период времени вы пытаетесь выбрать:

<timeSeriesDataset>

Но вам нужно вручную изменить JRXML на это:

<timeSeriesDataset timePeriod="Second">

Как только вы это сделаете, вы получите хороший график. По крайней мере, iReport не удаляет правильную информацию о timePeriod ... так что вам нужно сделать это только один раз.

Примечание. Если вас интересуют такие детали, как отображение информации о дате в 2 строках, это также возможно. Я ненавижу застрять в одной строке. Я написал статью об этом в прошлом году. Найдите раздел Ярлыки категории в несколько строк .

...