Столбчатые диаграммы Bar Charts

Столбчатые диаграммы Bar Charts

Библиотека JFreeChart позволяет создавать и настраивать интерфейс столбчатых диаграмм Bar Chart, иначе называемых гистограммами. Чтобы понять, как создавать диаграммы Bar Chart рассмотрим создание составных элементов и диаграммы в целом :

Диаграмма Bar Chart имеет две оси : ось категорий объектов и ось их числовых значений. CategoryAxis определяет объекты набора данных, а NumberAxis используется для определения числовых значений объектов. Визуализатор отвечает за прорисовку (отображение) каждого объекта (столбца) на диаграмме. Набор данных dataset, осевые объекты и визуализатор используются для создания объекта CategoryPlot. Его метод setOrientation позволяет определить ориентацию столбцов. Заголовок title, plot и объект легенды необходимы для создания диаграммы JFreeChart.

Процесс создания диаграммы Bar Chart можно упростить, используя методы утилиты ChartFactory.

Методы создания Bar Chart

Утилита ChartFactory включает несколько статических методов создания круговых диаграмм Bar Chart :

Можно сказать, что статические перегруженные методы создания столбчатых диаграмм включают либо минимальный набор параметров (заголовок title, метка оси domainAxisLabel, метка оси rangeAxisLabel и набор данных dataset), либо полный (к минимальному набору добавляются ориентация столбцов orientation, флаг отображения легенды legend, флаг вывода подсказки tooltips и флаг отображения urls).

Полосковая диаграмма (Stacked Bar Chart) позволяет отображать с помощью полос значения нескольких параметров и является разновидностью обычной Bar Chart. Ниже представлен пример создания полосковой диаграммы BarChartStacked.java

Настройка цвета

Фоновй цвет диаграммы и plot'a можно изменить используя метод setBackgroundPaint(Color). Для определения цвета сетки используются методы setDomainGridlinePaint(Color) и setRangeGridlinePaint (Color).

Настройка визуализатора, BarRenderer

Визуализатор BarRenderer можно получить из диаграммы JFreeChart или создать.

Ниже в примерах можно увидеть использование нескольких типов визуализаторов (LayeredBarRenderer, GroupedStackedBarRenderer), наследующих свойства класса AbstractRenderer.

Определение цвета столбцов

Метод setSeriesPaint(index, Color) определен в абстрактом класса AbstractRenderer, и его можно использовать для всех типов renderer.

Определение расстояния между столбцами

Расстояние между столбцами определяется методом setItemMargin().

Примеры диаграмм Bar Chart

Рассмотрим 6 примеров создания столбчатых диаграмм Bar Chart с настройкой различных параметров :

ПримерПримечание BarChart.java настройка цвета фона plot'a и цвета линий сетки, поворот меток на 45° BarChart3D.java 3d диаграмма, настройка цвета фона plot'a и цвета линий сетки, поворот меток на 30° BarChartVertical.java настройка цвета фона диаграммы, plot'а и цвета линий сетки, удалена осевая линия с метками BarChartHorizontal.java диаграмма с горизонтальным расположением, настройка цвета столбцов, перенос оси RangeAxis вниз BarChartLayered.java слоеная диаграмма, настройка осевой шкалы BarChartStacked.java полосковая диаграмма с градиентной заливкой, создание легенды

Исходные коды примеров желающие могут скачать в конце страницы.

Методы формирования наборов данных для диаграмм вынесены в отдельный модуль Dataset.java. Таким образом, исходные данные отделены от интерфейса диаграмм для облегчения восприятия кодов.

Листинг Dataset.java

Диаграммы Bar Chart используют наборы данных типа CategoryDataset. Модуль Dataset.java включает 3 метода формирования различных наборов данных. Методы createDataset1 и createDataset3 представлены в сокращенном виде.

Пример BarChart.java

В примере BarChart.java изменим цвет фона plot'а и цвет линий сетки, повернем значения меток на 45° Интерфейс примера представлен на следующем скриншоте.

Листинг BarChart.java

Цвет фона диаграммы и plot'а настраивается методом setBackgroundPaint. Чтобы изменить цвет линий сетки используются методы setDomainGridlinePaint и setRangeGridlinePaint.

Для поворота меток значений используется метод setCategoryLabelPositions с параметром CategoryLabelPositions.UP_45. Чтобы повернуть метки на 90° необходимо использовать значение UP_90.

Пример BarChart3d.java

В примере BarChart3d.java изменим цвет фона plot'а и цвет линиц сетки, повернем значения меток на 30°. Интерфейс примера представлен на следующем скриншоте. Отличия от предыдущего примера связаны с эффектом 3d, углом поворота меток значений и скрытием осевых линий и меток делений DomainAxis.

Листинг BarChart3d.java

Чтобы повернуть метки значений на произвольный угол необходимо использовать метод createUpRotationLabelPositions(angle). Угол angle (измеряемый в радианах), на который можно повернуть метки, должен быть меньше 90° (< Math.PI / 2.0).

Пример BarChartVertical.java

В примере BarChartVertical.java изменим цвет диаграммы и фона plot'а, цвет линиц сетки и удалим осевые линии и метки делений DomainAxis. Интерфейс примера представлен на следующем скриншоте.

Листинг BarChartVertical.java

Для изменения цвета диаграммы и фонового цвета plot'a используется метод setBackgroundPaint. Цвет сетки определяется методом setRangeGridlinePaint. Осевая линия и метки делений удаляются методами setAxisLineVisible и setTickMarksVisible.

Вертикальное расположение столбцов определяется параметров PlotOrientation.VERTICAL.

Пример BarChartHorizontal.java

В примере BarChartHorizontal.java изменим цвет диаграммы и фона plot'а, определим цвет линиц сетки и удалим осевые линии. Интерфейс примера представлен на следующем скриншоте.

Листинг BarChartHorizontal.java

Для изменения цвета диаграммы и фонового цвета plot'a используется метод setBackgroundPaint. Цвет сетки определяется методом setRangeGridlinePaint. Осевые линии удаляются методом setAxisLineVisible. Смещение осевых меток определяется методом setAxisOffset.

Горизонтальное расположение столбцов определяется параметров PlotOrientation.HORIZONTAL.

Пример BarChartLayered.java

В примере BarChartLayered.java совместим представление значений разных объектов в одном столбце и удалим осевые линии. Интерфейс примера представлен на следующем скриншоте.

Листинг BarChartLayered.java

Для создания слоеной диаграммы используется объект типа LayeredBarRenderer, у которого необходимо настроить ширину столбцов. Для этого вызывается метод setSeriesBarWidth с идентификатором столбца (отсчет от 0) и шириной столбца (1 соответствует 100%).

Для настройки параметров осевой линии domainAxis используются методы setCategoryMargin, setUpperMargin и setLowerMargin, позволяющие сжимать и разжимать столбцы, а также смещать их вправо и влево.

Пример BarChartStacked.java

В примере создания полосковой диаграммы BarChartStacked.java используем градиентную заливку столбцов и создадим легенду. Интерфейс примера представлен на следующем скриншоте.

Листинг BarChartStacked.java

В качестве градиентной заливки используется класс GradientPaint (float x1, float y1, Color color1, float x2, float y2, Color color2). Цвета заливки вынесены в отдельные массивы, чтобы можно было их согласовать с легендой.

Легенда диаграммы представляет собой коллекцию типа LegendItemCollection. При создании легенды в методе createLegendItems() необходимо согласовать наименование объекта и цвет представления его значения на диаграмме.

Скачать примеры

Исходные коды примеров создания диаграмм Bar Chart с использованием библиотеки JFreeChart в виде maven-проекта можно скачать здесь (30.0 Кб).

📎📎📎📎📎📎📎📎📎📎