Учебники

JFreeChart — Краткое руководство

JFreeChart — Обзор

Диаграмма — это графическое представление информации. Доступны различные инструменты, которые можно использовать для создания диаграмм разных типов. Проект JFreeChart был основан в феврале 2000 года Дэвидом Гилбертом. На сегодняшний день это наиболее широко используемая библиотека диаграмм среди разработчиков Java.

Этот учебник поможет вам понять, что такое JFreeChart, почему он требуется, и различные способы создания различных типов диаграмм в приложении на основе Java или независимо.

Что такое JFreeChart?

JfreeChart — это библиотека с открытым исходным кодом, разработанная на Java. Его можно использовать в приложениях на основе Java для создания широкого спектра диаграмм. Используя JFreeChart, мы можем создавать все основные типы 2D и 3D-диаграмм, такие как круговая диаграмма, гистограмма, линейная диаграмма, XY-диаграмма и 3D-диаграммы.

Почему JFreeChart?

JFreeChart является открытым исходным кодом и на 100% бесплатен, что позволяет использовать его в коммерческих приложениях без каких-либо затрат. Мы перечислили здесь еще несколько моментов в пользу того, почему вы должны использовать JFreeChart —

  • Он поставляется с хорошо документированными API, что делает его довольно простым для понимания.

  • Он поддерживает широкий спектр типов диаграмм, таких как круговая диаграмма, линейная диаграмма, линейчатая диаграмма, диаграмма площади и трехмерные диаграммы.

  • JFreeChart легко расширяется и может использоваться как на стороне клиента, так и в приложениях на стороне сервера.

  • Он поддерживает несколько форматов вывода, таких как PNG, JPEG, PDF, SVG и т. Д.

  • Это позволяет обширные настройки графиков.

Он поставляется с хорошо документированными API, что делает его довольно простым для понимания.

Он поддерживает широкий спектр типов диаграмм, таких как круговая диаграмма, линейная диаграмма, линейчатая диаграмма, диаграмма площади и трехмерные диаграммы.

JFreeChart легко расширяется и может использоваться как на стороне клиента, так и в приложениях на стороне сервера.

Он поддерживает несколько форматов вывода, таких как PNG, JPEG, PDF, SVG и т. Д.

Это позволяет обширные настройки графиков.

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

JFreeChart — Установка

JFreeChart популярен благодаря эффективному созданию диаграмм и удобной установке. В этой главе описывается процесс настройки JFreeChart в Windows и Linux. При установке JFreeChart необходимо администрирование пользователей.

Системные Требования

JDK 1,5 или выше
объем памяти 2 ГБ ОЗУ
Дисковое пространство Нет минимальных требований
Версия операционной системы Linux или Windows

Установка JFreeChart

Чтобы установить JFreeChart, есть три следующих шага:

JFreeChart Steps

Шаг 1. Проверка установки Java

Чтобы проверить установку Java, откройте консоль и выполните следующую команду Java —

Операционные системы задача команда
Windows Открыть командную консоль C:> Java-версия
Linux Открыть командный терминал $ java-версия

После правильной установки Java вы должны получить следующий вывод для обеих операционных систем:

S.No ОС и описание
1

Windows

Версия Java «1.7.0_60» Java (TM) Среда выполнения SE (сборка 1.7.0_60-b19) 64-разрядная серверная виртуальная машина Java HotSpot (TM) (сборка 24.60-b09, смешанный режим)

2

Linux

Java-версия «1.7.0_25» Среда выполнения OpenJDK (rhel2.3.10.4.el6_4-x86_64) Виртуальная 64-битная серверная OpenJDK (сборка 23.7-b01, смешанный режим)

Windows

Версия Java «1.7.0_60» Java (TM) Среда выполнения SE (сборка 1.7.0_60-b19) 64-разрядная серверная виртуальная машина Java HotSpot (TM) (сборка 24.60-b09, смешанный режим)

Linux

Java-версия «1.7.0_25» Среда выполнения OpenJDK (rhel2.3.10.4.el6_4-x86_64) Виртуальная 64-битная серверная OpenJDK (сборка 23.7-b01, смешанный режим)

Если у вас не установлена ​​Java, установите Java Software Development Kit (SDK) по ссылке:

https://www.oracle.com/technetwork/java/javase/downloads/index.html

Мы предполагаем, что вы установили версию Java 1.7.0_60, прежде чем приступить к этому учебному пособию.

Шаг 2: Настройка среды JAVA

Установите переменную среды JAVA_HOME, чтобы она указывала на местоположение базовой директории, где установлена ​​Java на вашем компьютере. Например,

S.No О & Описание
1

Windows

Установите переменную среды JAVA_HOME в C: \ ProgramFiles \ java \ jdk1.7.0_60

2

Linux

экспорт JAVA_HOME = / usr / local / java-current

Windows

Установите переменную среды JAVA_HOME в C: \ ProgramFiles \ java \ jdk1.7.0_60

Linux

экспорт JAVA_HOME = / usr / local / java-current

Добавьте расположение компилятора Java в системный путь.

S.No ОС и описание
1

Windows

Добавить строку; C: \ Program Files \ Java \ jdk1.7.0_60 \ bin до конца системной переменной PATH.

2

Linux

экспорт PATH = $ PATH: $ JAVA_HOME / bin /

Windows

Добавить строку; C: \ Program Files \ Java \ jdk1.7.0_60 \ bin до конца системной переменной PATH.

Linux

экспорт PATH = $ PATH: $ JAVA_HOME / bin /

Проверьте команду java -version из командной строки, как описано выше.

Шаг 3: Установка JFreeChart

Загрузите последнюю версию JFreeChart.zip по ссылке http://www.jfree.org/jfreechart/download/ Распакуйте загруженный файл в любое место, откуда необходимые библиотеки могут быть связаны с вашей программой Java. На следующем изображении показана структура каталогов и файлов —

JFreeChart

Добавьте полный путь к файлам jfreechart-1.0.18.jar и jcommon-1.0.22.jar в CLASSPATH, как показано ниже —

S.No ОС и описание
1

Windows

Добавьте строки «C: \ jfreechart-1.0.18 \ lib \ jfreechart-1.0.18.jar» и «C: \ jfreechart-1.0.18 \ lib \ jcommon-1.0.22.jar» до конца пользователя переменная CLASSPATH

2

Linux

Экспорт CLASSPATH = $ CLASSPATH: /usr/share/jfreechart1.0.18/lib/jfreechart-1.0.18.jar: /usr/share/jfreechart-1.0.18/lib/jcommon1.0.22.jar

Windows

Добавьте строки «C: \ jfreechart-1.0.18 \ lib \ jfreechart-1.0.18.jar» и «C: \ jfreechart-1.0.18 \ lib \ jcommon-1.0.22.jar» до конца пользователя переменная CLASSPATH

Linux

Экспорт CLASSPATH = $ CLASSPATH: /usr/share/jfreechart1.0.18/lib/jfreechart-1.0.18.jar: /usr/share/jfreechart-1.0.18/lib/jcommon1.0.22.jar

Примечание. Чтобы связываться с базой данных MySql, необходимо также указать classpath для mysql-connector-java-5.0.8-bin.jar .

JFreeChart — Архитектура

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

Архитектура уровня класса

Архитектура уровня классов объясняет, как различные классы из библиотеки взаимодействуют друг с другом, создавая различные типы диаграмм.

Архитектура уровня классов JFreeChart

Ниже приводится подробная информация о единицах, используемых в приведенной выше блок-схеме —

S.No Единицы и описание
1

файл

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

2

База данных

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

3

Создать набор данных

Принимает набор данных и сохраняет набор данных в объекте набора данных.

4

Общий набор данных

Этот тип набора данных в основном используется для круговых диаграмм.

5

Набор данных категории

Этот тип набора данных используется для гистограммы, линейного графика и т. Д.

6

Набор данных серии

Этот тип набора данных используется для хранения серий данных и построения линейных диаграмм.

7

Набор данных серии Series

Различные категории наборов данных серии добавляются в набор данных коллекции серий. Этот тип набора данных используется для диаграмм XYLine.

8

Создать диаграмму

Это метод, который выполняется для создания окончательного графика.

9

Рама / Image

Диаграмма отображается на Swing Frame или создается изображение.

файл

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

База данных

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

Создать набор данных

Принимает набор данных и сохраняет набор данных в объекте набора данных.

Общий набор данных

Этот тип набора данных в основном используется для круговых диаграмм.

Набор данных категории

Этот тип набора данных используется для гистограммы, линейного графика и т. Д.

Набор данных серии

Этот тип набора данных используется для хранения серий данных и построения линейных диаграмм.

Набор данных серии Series

Различные категории наборов данных серии добавляются в набор данных коллекции серий. Этот тип набора данных используется для диаграмм XYLine.

Создать диаграмму

Это метод, который выполняется для создания окончательного графика.

Рама / Image

Диаграмма отображается на Swing Frame или создается изображение.

Архитектура уровня приложения

Архитектура уровня приложения объясняет, где библиотека JFreeChart находится внутри Java-приложения.

Архитектура уровня приложения JFreeChart

Клиентская программа получает пользовательские данные, а затем использует стандартные API-интерфейсы Java и JFreeChart на основе требований для создания выходных данных в форме либо фрейма, который может отображаться непосредственно внутри приложения или независимо в таких форматах изображений, как JPEG или PNG.

JFreeChart — ссылочные API

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

Класс ChartFactory

ChartFactory — это абстрактный класс в пакете org.jfree.chart . Он предоставляет набор служебных методов для генерации стандартных диаграмм.

Ниже приведен список нескольких важных методов —

Конструктор классов

S.No Описание
1

ChartFactory ()

Конструктор по умолчанию класса ChartFactory.

ChartFactory ()

Конструктор по умолчанию класса ChartFactory.

Методы класса

S.No Методы и описание
1

createPieChart (заголовок java.lang.String, набор данных PieDataset, логическая легенда, логические всплывающие подсказки, логические URL-адреса)

Этот метод создает круговую диаграмму с настройками по умолчанию. Возвращает объект типа JfreeChart.

2

createPieChart3D (java.lang.String title, набор данных PieDataset, логическая легенда, логические всплывающие подсказки, логические URL-адреса

Этот метод создает трехмерную круговую диаграмму с использованием указанного набора данных.

3

createBarChart (заголовок java.lang.String, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, набор данных CategoryDataset, ориентация PlotOrientation, логическая легенда, логические всплывающие подсказки, логические URL-адреса)

Аргумент java.lang.String categoryAxisLabel — это метка для значений, размещенных на оси X. Аргумент java.lang.String valueAxisLabel — это метка для значений, размещенных на оси Y.

Этот метод создает гистограмму.

4

createBarChart3D (заголовок java.lang.String, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, набор данных CategoryDataset, ориентация PlotOrientation, логическая легенда, логические всплывающие подсказки, логические URL-адреса)

Этот метод создает гистограмму с 3D-эффектом. Возвращает объект типа JfreeChart.

5

createLineChart (java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, набор данных CategoryDataset, ориентация PlotOrientation, логическая легенда, логические всплывающие подсказки, логические URL-адреса)

Этот метод создает линейную диаграмму с настройками по умолчанию.

6

createLineChart3D (заголовок java.lang.String, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, набор данных CategoryDataset, ориентация PlotOrientation, логическая легенда, логические всплывающие подсказки, логические URL-адреса)

Этот метод создает линейную диаграмму с 3D-эффектом.

7

createXYLineChart (заголовок java.lang.String, java.lang.String xAxisLabel, java.lang.String yAxisLabel, набор данных XYDataset, ориентация PlotOrientation, логическая легенда, логические всплывающие подсказки, логические URL-адреса)

Этот метод создает линейную диаграмму на основе XYDataset с настройками по умолчанию.

createPieChart (заголовок java.lang.String, набор данных PieDataset, логическая легенда, логические всплывающие подсказки, логические URL-адреса)

Этот метод создает круговую диаграмму с настройками по умолчанию. Возвращает объект типа JfreeChart.

createPieChart3D (java.lang.String title, набор данных PieDataset, логическая легенда, логические всплывающие подсказки, логические URL-адреса

Этот метод создает трехмерную круговую диаграмму с использованием указанного набора данных.

createBarChart (заголовок java.lang.String, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, набор данных CategoryDataset, ориентация PlotOrientation, логическая легенда, логические всплывающие подсказки, логические URL-адреса)

Аргумент java.lang.String categoryAxisLabel — это метка для значений, размещенных на оси X. Аргумент java.lang.String valueAxisLabel — это метка для значений, размещенных на оси Y.

Этот метод создает гистограмму.

createBarChart3D (заголовок java.lang.String, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, набор данных CategoryDataset, ориентация PlotOrientation, логическая легенда, логические всплывающие подсказки, логические URL-адреса)

Этот метод создает гистограмму с 3D-эффектом. Возвращает объект типа JfreeChart.

createLineChart (java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, набор данных CategoryDataset, ориентация PlotOrientation, логическая легенда, логические всплывающие подсказки, логические URL-адреса)

Этот метод создает линейную диаграмму с настройками по умолчанию.

createLineChart3D (заголовок java.lang.String, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, набор данных CategoryDataset, ориентация PlotOrientation, логическая легенда, логические всплывающие подсказки, логические URL-адреса)

Этот метод создает линейную диаграмму с 3D-эффектом.

createXYLineChart (заголовок java.lang.String, java.lang.String xAxisLabel, java.lang.String yAxisLabel, набор данных XYDataset, ориентация PlotOrientation, логическая легенда, логические всплывающие подсказки, логические URL-адреса)

Этот метод создает линейную диаграмму на основе XYDataset с настройками по умолчанию.

Класс ChartFrame

Класс ChartFrame в пакете org.jfree.chart предоставляет все функции и утилиты, связанные с кадрами. Класс ChartFrame наследует функциональные возможности от родительских классов, таких как классы Frame, Window, Container и Component.

Конструктор классов

S.No Конструктор и описание
1

ChartFrame (строка java.lang.Frame, диаграмма JfreeChart)

Он строит раму.

2

Рамка диаграммы (строка java.lang.Frame, диаграмма JfreeChart, логическая полоса прокрутки)

Он строит раму.

ChartFrame (строка java.lang.Frame, диаграмма JfreeChart)

Он строит раму.

Рамка диаграммы (строка java.lang.Frame, диаграмма JfreeChart, логическая полоса прокрутки)

Он строит раму.

Метод класса

S.No Метод и описание
1

getChartPanel ()

Этот метод возвращает панель диаграммы для кадра.

getChartPanel ()

Этот метод возвращает панель диаграммы для кадра.

Класс ChartPanel

Класс ChartPanel из пакета org.jfree.chart используется в качестве компонента графического интерфейса для отображения объекта JfreeChart.

Конструктор классов

S.No Конструктор и описание
1

ChartPanel (диаграмма JFreeChart)

Этот конструктор создает панель, которая отображает указанную диаграмму.

2

ChartPanel (диаграмма JFreeChart, логическое значение useBuffer)

Этот конструктор создает панель, содержащую диаграмму.

3

ChartPanel (диаграмма JFreeChart, логические свойства, логическое сохранение, логическая печать, логическое масштабирование, всплывающие подсказки)

Этот конструктор создает панель JFreeChart.

ChartPanel (диаграмма JFreeChart)

Этот конструктор создает панель, которая отображает указанную диаграмму.

ChartPanel (диаграмма JFreeChart, логическое значение useBuffer)

Этот конструктор создает панель, содержащую диаграмму.

ChartPanel (диаграмма JFreeChart, логические свойства, логическое сохранение, логическая печать, логическое масштабирование, всплывающие подсказки)

Этот конструктор создает панель JFreeChart.

Метод класса

S.No Метод и описание
1

setPreferredSize (java.awt.Dimension)

Этот метод используется для установки размера кадра с помощью java.awt. Объект класса измерения в качестве аргумента. Этот метод взят из javax.swing.JComponent.

setPreferredSize (java.awt.Dimension)

Этот метод используется для установки размера кадра с помощью java.awt. Объект класса измерения в качестве аргумента. Этот метод взят из javax.swing.JComponent.

Класс ChartUtilities

Класс CharUtilites из пакета org.jfree.chart предоставляет набор служебных методов JFreeCharts, включая методы для преобразования диаграмм в формат файла изображения, таких как PNG, JPEG, и создания карт изображений HTML.

Конструктор классов

S.No Конструктор и описание
1

ChartUtilities ()

Это конструктор по умолчанию для класса

ChartUtilities ()

Это конструктор по умолчанию для класса

Метод класса

S.No Метод и описание
1

saveChartAsPNG (файл java.io.File, диаграмма JfreeChart, ширина int, высота int)

Этот метод преобразует и сохраняет диаграмму в указанном файле в формате PNG.

2

saveChartAsJPEG (файл java.io.File, диаграмма JfreeChart, int width, int height)

Этот метод преобразует и сохраняет диаграмму в указанном файле в формате JPEG.

saveChartAsPNG (файл java.io.File, диаграмма JfreeChart, ширина int, высота int)

Этот метод преобразует и сохраняет диаграмму в указанном файле в формате PNG.

saveChartAsJPEG (файл java.io.File, диаграмма JfreeChart, int width, int height)

Этот метод преобразует и сохраняет диаграмму в указанном файле в формате JPEG.

Класс JFreeChart

Класс JFreeChart является базовым классом в пакете org.jfree.chart . Этот класс предоставляет метод JFreeChart для создания гистограмм, линейных диаграмм, круговых диаграмм и графиков xy, включая данные временных рядов.

Конструктор классов

S.No Конструктор и описание
1

JfreeChart (сюжет)

Этот конструктор создает новую диаграмму на основе предоставленного графика.

2

JfreeChart (заголовок java.lang.String, java.awt. Шрифт titleFont, сюжет, логическое createLegend)

Этот конструктор создает новую диаграмму с заданным заголовком и графиком.

3

JfreeChart (java.lang.String title, Plot plot)

Этот конструктор создает новую диаграмму с заданным заголовком и графиком.

JfreeChart (сюжет)

Этот конструктор создает новую диаграмму на основе предоставленного графика.

JfreeChart (заголовок java.lang.String, java.awt. Шрифт titleFont, сюжет, логическое createLegend)

Этот конструктор создает новую диаграмму с заданным заголовком и графиком.

JfreeChart (java.lang.String title, Plot plot)

Этот конструктор создает новую диаграмму с заданным заголовком и графиком.

Метод класса

S.No Метод и описание
1

getXYPlot ()

Этот метод возвращает диаграмму в виде XYPlot . Используя XYPolt, мы можем выполнять некоторые служебные операции на графиках XY.

getXYPlot ()

Этот метод возвращает диаграмму в виде XYPlot . Используя XYPolt, мы можем выполнять некоторые служебные операции на графиках XY.

PiePlot Class

Этот класс является частью пакета org.jfree.chart.plot и расширяет класс Plot из того же пакета. Этот класс предоставляет методы для создания круговых диаграмм.

Конструктор классов

S.No Конструктор и описание
1

PiePlot ()

Это создает новый сюжет.

2

PiePlot (набор данных PieDataset)

Он создает график, который рисует круговую диаграмму для указанного набора данных.

PiePlot ()

Это создает новый сюжет.

PiePlot (набор данных PieDataset)

Он создает график, который рисует круговую диаграмму для указанного набора данных.

Метод класса

S.No Метод и описание
1

setStartAngle (двойной угол)

Этот метод устанавливает начальный угол и отправляет PlotChangeEvent всем зарегистрированным слушателям.

setStartAngle (двойной угол)

Этот метод устанавливает начальный угол и отправляет PlotChangeEvent всем зарегистрированным слушателям.

Класс PiePlot3D

Класс PiePlot3D является подклассом класса PiePlot в том же пакете. Следовательно, этот класс имеет те же функции, что и класс PiePlot, за исключением того, что он используется для создания 3D-графиков.

Конструктор классов

S.No Конструктор и описание
1

PiePlot3D ()

Этот конструктор создает новый экземпляр без набора данных.

2

PiePlot3D (набор данных PieDataset)

Этот конструктор создает круговую диаграмму с трехмерным эффектом, используя указанный набор данных.

PiePlot3D ()

Этот конструктор создает новый экземпляр без набора данных.

PiePlot3D (набор данных PieDataset)

Этот конструктор создает круговую диаграмму с трехмерным эффектом, используя указанный набор данных.

Метод класса

S.No Метод и описание
1

setForegroundAlpha (плавающая альфа)

Он устанавливает альфа-прозрачность для графика и отправляет PlotChangeEvent всем зарегистрированным слушателям. Это взято из одного из родительских классов Plot.

2

setInteriorGap (двойной процент)

Он устанавливает внутренний зазор и отправляет PlotChangeEvent всем зарегистрированным слушателям. Это управляет пространством между краями круговой диаграммы и самой областью графика (т. Е. Областью, где появляются метки раздела). Этот метод взят из родительского класса PiePlot.

setForegroundAlpha (плавающая альфа)

Он устанавливает альфа-прозрачность для графика и отправляет PlotChangeEvent всем зарегистрированным слушателям. Это взято из одного из родительских классов Plot.

setInteriorGap (двойной процент)

Он устанавливает внутренний зазор и отправляет PlotChangeEvent всем зарегистрированным слушателям. Это управляет пространством между краями круговой диаграммы и самой областью графика (т. Е. Областью, где появляются метки раздела). Этот метод взят из родительского класса PiePlot.

Класс PlotOrientation

Это сериализованный класс, доступный в пакете org.jfree.chart.plot, который используется для отображения ориентации 2D-графика. Ориентация может быть вертикальной или горизонтальной . Устанавливает ориентацию оси Y. Обычный график имеет вертикальную ось Y.

Сводка по полю

S.No Тип Поле и описание
1 PlotOrientation ГОРИЗОНТАЛЬНО Для графика, где ось диапазона (ось Y) горизонтальна.
2 PlotOrientation ВЕРТИКАЛЬНЫЙ Для графика, где ось диапазона (ось Y) является вертикальной. Это ориентация по умолчанию.

Метод класса

S.No Метод и описание
1

isHorizontal ()

Этот метод возвращает true, если эта ориентация HORIZONTAL, и false в противном случае.

2

isVertical ()

Этот метод возвращает истину, если эта ориентация является вертикальной, и ложь в противном случае.

isHorizontal ()

Этот метод возвращает true, если эта ориентация HORIZONTAL, и false в противном случае.

isVertical ()

Этот метод возвращает истину, если эта ориентация является вертикальной, и ложь в противном случае.

Класс XYPlot

Это общий класс, доступный в пакете org.jfree.chart.plot , и он используется для построения данных в виде пар (x, y). Этот график может использовать данные из любого другого класса, который реализует интерфейс XYDataSet. XYPlot использует XYItemRenderer для рисования каждой точки на графике.

Конструктор классов

S.No Конструктор и описание
1

Графика XY ()

Этот подрядчик создает новый экземпляр XYPlot без набора данных, без осей и без средства визуализации.

2

XYPlot (набор данных XYDataset, ValueAxis domainAxis, ValueAxis rangeAxis, XYItemRenderer рендерер)

Этот конструктор создает новый график с указанным набором данных, осью и средством визуализации.

Графика XY ()

Этот подрядчик создает новый экземпляр XYPlot без набора данных, без осей и без средства визуализации.

XYPlot (набор данных XYDataset, ValueAxis domainAxis, ValueAxis rangeAxis, XYItemRenderer рендерер)

Этот конструктор создает новый график с указанным набором данных, осью и средством визуализации.

Метод класса

S.No Метод и описание
1

setRenderer (средство визуализации XYItemRenderer )

Этот метод устанавливает средство визуализации для основного набора данных и отправляет событие изменения всем зарегистрированным слушателям.

setRenderer (средство визуализации XYItemRenderer )

Этот метод устанавливает средство визуализации для основного набора данных и отправляет событие изменения всем зарегистрированным слушателям.

NumberAxis Class

Этот класс доступен в пакете org.jfree.chart.axis и может иметь доступ к числовым данным любой оси. Когда мы устанавливаем диапазон любой оси по умолчанию, он подходит в соответствии с диапазоном данных. Но используя NumberAxis, класс, мы можем установить нижнее поле и верхнее поле оси домена и диапазона.

Конструктор классов

S.No Конструктор и описание
1

NumberAxis ()

Это конструктор по умолчанию для NumberAxis.

2

NumberAxis (метка java.lang.String)

Конструктор NumberAxis использует значения по умолчанию, где это необходимо.

NumberAxis ()

Это конструктор по умолчанию для NumberAxis.

NumberAxis (метка java.lang.String)

Конструктор NumberAxis использует значения по умолчанию, где это необходимо.

Метод класса

S.No Метод и описание
1

setLowerMargin (двойное поле)

Он устанавливает нижнее поле для оси (в процентах от диапазона оси) и отправляет AxisChangeEvent всем зарегистрированным слушателям. Этот метод взят из родительского класса класса ValueAxis.

2

setUpperMargin (двойное поле)

Он устанавливает верхнее поле для оси (в процентах от диапазона оси) и отправляет AxisChangeEvent всем зарегистрированным слушателям. Этот метод также присутствует в классе ValueAxis.

setLowerMargin (двойное поле)

Он устанавливает нижнее поле для оси (в процентах от диапазона оси) и отправляет AxisChangeEvent всем зарегистрированным слушателям. Этот метод взят из родительского класса класса ValueAxis.

setUpperMargin (двойное поле)

Он устанавливает верхнее поле для оси (в процентах от диапазона оси) и отправляет AxisChangeEvent всем зарегистрированным слушателям. Этот метод также присутствует в классе ValueAxis.

Класс XYLineAndShapeRenderer

Это класс, доступный в пакете org.jfree.chart.renderer.xy , который заботится о соединении точек данных линиями и рисует фигуры в каждой точке данных. Этот класс рендерера предназначен для использования с классом XYPlot .

Конструктор классов

S.No Конструктор и описание
1

XYLineAndShapeRenderer ()

Он создает новый рендер с видимыми линиями и формами.

2

XYLineAndShapeRenderer (логические линии, логические формы)

Создает новый рендер с определенным свойством.

XYLineAndShapeRenderer ()

Он создает новый рендер с видимыми линиями и формами.

XYLineAndShapeRenderer (логические линии, логические формы)

Создает новый рендер с определенным свойством.

Метод класса

S.No Метод и описание
1

setSeriesPaint (int series, java.awt.Paint paint)

Этот метод устанавливает рисование, используемое для серии, и отправляет RendererChangeEvent всем зарегистрированным слушателям. Этот метод взят из абстрактного класса AbstratRenderer из пакета рендерера в JFreeChart API.

2

setSeriesStroke (int series, java.awt.Stroke stroke)

Этот метод устанавливает удар, используемый для серии, и отправляет RendererChangeEvent всем зарегистрированным слушателям. Этот метод взят из абстрактного класса AbstratRenderer, который является суперклассом этого пакета.

setSeriesPaint (int series, java.awt.Paint paint)

Этот метод устанавливает рисование, используемое для серии, и отправляет RendererChangeEvent всем зарегистрированным слушателям. Этот метод взят из абстрактного класса AbstratRenderer из пакета рендерера в JFreeChart API.

setSeriesStroke (int series, java.awt.Stroke stroke)

Этот метод устанавливает удар, используемый для серии, и отправляет RendererChangeEvent всем зарегистрированным слушателям. Этот метод взят из абстрактного класса AbstratRenderer, который является суперклассом этого пакета.

Общие наборы данных XYItemRenderer

Это интерфейс для визуализации формата одного (x, y) элемента на XYPlot. Пакет org.Jfree.data.general , который имеет классы и интерфейсы для определения различных типов наборов данных для построения диаграмм.

PieDataset

Это интерфейс, используемый в качестве набора данных общего назначения, где значения связаны с ключами. Как следует из названия, вы можете использовать этот набор данных для предоставления данных для круговых диаграмм. Этот интерфейс расширяет интерфейсы KeyedValues ​​и DataSet. Все методы, используемые для этого интерфейса, взяты из интерфейсов KeyedValues, Values ​​и Dataset.

Класс DefaultPieDataset

Это класс реализации по умолчанию для интерфейса PieDataset.

Конструктор классов

S.No Конструктор и описание
1

DefaultPieDataset ()

Этот конструктор создает новый набор данных, изначально пустой.

2

DefaultPieDataset (данные KeyedValues)

Он создает новый набор данных путем копирования данных из экземпляра KeyedValues .

DefaultPieDataset ()

Этот конструктор создает новый набор данных, изначально пустой.

DefaultPieDataset (данные KeyedValues)

Он создает новый набор данных путем копирования данных из экземпляра KeyedValues .

Метод класса

S.No Метод и описание
1

setValue (java.lang.Comparable key, double value)

Он устанавливает значение данных для ключа и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

2

setValue (java.lang.Comparable key, значение java.lang.Number)

Он устанавливает значение данных для ключа и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

setValue (java.lang.Comparable key, double value)

Он устанавливает значение данных для ключа и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

setValue (java.lang.Comparable key, значение java.lang.Number)

Он устанавливает значение данных для ключа и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

SeriesException Class

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

DefaultCategoryDataset

Это класс реализации по умолчанию интерфейса CategoryDataset.

Конструктор классов

S.No Конструктор и описание
1

DefaultCategoryDataset ()

Этот конструктор создает новый пустой набор данных.

DefaultCategoryDataset ()

Этот конструктор создает новый пустой набор данных.

Метод класса

S.No Метод и описание
1

addValue (двойное значение, java.lang.Comparable rowKey, java.lang.Comparable columnKey)

Этот метод добавляет значение в таблицу, используя сопоставимые ключи.

2

addValue (значение java.lang.Number, java.lang.Comparable rowKey, java.lang.Comparable columnKey)

Этот метод добавляет значение в таблицу.

3

setValue (двойное значение, java.lang.Comparable rowKey, java.lang.Comparable columnKey)

Этот метод добавляет или обновляет значение в таблице и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

4

setValue (значение java.lang.Number, java.lang.Comparable rowKey, java.lang.Comparable columnKey)

Этот метод добавляет или обновляет значение в таблице и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

addValue (двойное значение, java.lang.Comparable rowKey, java.lang.Comparable columnKey)

Этот метод добавляет значение в таблицу, используя сопоставимые ключи.

addValue (значение java.lang.Number, java.lang.Comparable rowKey, java.lang.Comparable columnKey)

Этот метод добавляет значение в таблицу.

setValue (двойное значение, java.lang.Comparable rowKey, java.lang.Comparable columnKey)

Этот метод добавляет или обновляет значение в таблице и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

setValue (значение java.lang.Number, java.lang.Comparable rowKey, java.lang.Comparable columnKey)

Этот метод добавляет или обновляет значение в таблице и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

Обратитесь к JFreeChart API для получения дополнительной информации о различных других методах и полях.

Наборы данных серии

Набор данных серии используется XY-диаграммами. Пакет org.Jfree.data.xy , который содержит классы и интерфейсы, принадлежащие диаграммам xy. Основным интерфейсом является XYDataset.

XYDataset

Это интерфейс, через который можно получить доступ к данным в виде (x, y) элементов. Как следует из названия, вы можете использовать этот набор данных для обслуживания XY-диаграммы. Некоторые из методов в этом интерфейсе взяты из интерфейса SeriesDateset.

XYZDataset

Это интерфейс, через который можно получить доступ к данным в виде элементов (x, y, z). Как следует из названия, вы можете использовать этот набор данных для обслуживания XYZ-диаграммы. Некоторые из методов в этом интерфейсе взяты из SeriesDateset.

XYSeries

Это класс, который представляет последовательность из нуля или более элементов данных в форме (x, y). По умолчанию элементы в серии сортируются в порядке возрастания по значению x, и допускается дублирование значений x. Сортировка и дубликаты по умолчанию могут быть изменены в конструкторе. Y-значения могут быть обозначены как нулевые для представления пропущенных значений.

Конструктор классов

S.No Конструктор и описание
1

XYSeries (java.lang.Comparable key)

Этот конструктор создает новую пустую серию.

2

XYSeries (java.lang.Comparable key, логическая автосортировка)

Он создает новую пустую серию с установленным в соответствии с запросом флагом автосортировки, и допускаются повторяющиеся значения.

3

XYSeries (java.lang.Comparable key, логическая автосортировка, логическая опция allowDuplicateXValues)

Он создает новую серию XY, которая не содержит данных.

XYSeries (java.lang.Comparable key)

Этот конструктор создает новую пустую серию.

XYSeries (java.lang.Comparable key, логическая автосортировка)

Он создает новую пустую серию с установленным в соответствии с запросом флагом автосортировки, и допускаются повторяющиеся значения.

XYSeries (java.lang.Comparable key, логическая автосортировка, логическая опция allowDuplicateXValues)

Он создает новую серию XY, которая не содержит данных.

Метод класса

S.No Метод и описание
1

добавить (двойной х, двойной у)

Этот метод добавляет элемент данных в ряд.

добавить (двойной х, двойной у)

Этот метод добавляет элемент данных в ряд.

Вышеуказанный метод используется в учебном примере. Если вы хотите изучить остальные методы и поля, обратитесь к API JFreeChart.

XYSeriesCollection

Класс XYSeriesCollection имеет родительские классы, такие как AbstractIntervelDataset, AbstractXYDatset, AbstractSeriesDataset и AbstractDataset. Некоторые из методов в этом классе принадлежат родительским классам этого класса.

Конструктор классов

S.No Конструктор и описание
1

XYSeriesCollection ()

Создает пустой набор данных.

2

XYSeriesCollection (XYSeries xyseries)

Он создает набор данных и заполняет его одной серией.

XYSeriesCollection ()

Создает пустой набор данных.

XYSeriesCollection (XYSeries xyseries)

Он создает набор данных и заполняет его одной серией.

Метод класса

S.No Метод и описание
1

addSeries (серия XYSeries)

Этот метод добавляет серию в коллекцию и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

addSeries (серия XYSeries)

Этот метод добавляет серию в коллекцию и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

Обратитесь к JFreeChart API за оставшимися методами и полями.

По умолчанию XYZDataset

Класс DefaultXYZDataset имеет родительские классы, такие как AbstractIntervelDataset, AbstractXYDatset, AbstractSeriesDataset, AbstractDataset и AbstractXYZDataset. Некоторые из методов в этом классе принадлежат родительским классам этого класса.

конструктор класса

S.No Конструктор и описание
1

DefaultXYZDataset ()

Создает пустой набор данных.

DefaultXYZDataset ()

Создает пустой набор данных.

Метод класса

S.No Метод и описание
1

addSeries (java.lang.Comparable seriesKey, double [] [] data)

Этот метод добавляет серию в коллекцию и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

addSeries (java.lang.Comparable seriesKey, double [] [] data)

Этот метод добавляет серию в коллекцию и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

Пожалуйста, обратитесь к JFreeChart API за оставшимися методами и полями.

Временные ряды в JFreeCharts

Пакет org.jfree.data.time . Этот пакет содержит классы и интерфейсы, которые используются для данных, связанных со временем.

Временные ряды

Этот класс представляет последовательность элементов данных в форме значений периода, где period — это некоторый экземпляр абстрактного класса RegularTimePeriod, например, классы Time, Day, Hour, Minute и Second.

Конструктор классов

S.No Конструктор и описание
1

TimeSeries (java.lang. Сопоставимое имя)

Создает новые пустые серии.

2

TimeSeries (java.lang.Comarable имя, java.lang.String домен, java.lang.Strin диапазон)

Создает новый временной ряд, который не содержит данных.

TimeSeries (java.lang. Сопоставимое имя)

Создает новые пустые серии.

TimeSeries (java.lang.Comarable имя, java.lang.String домен, java.lang.Strin диапазон)

Создает новый временной ряд, который не содержит данных.

Метод класса

S.No Метод и описание
1

add (период RegularTimePeriod, двойное значение)

Этот метод добавляет новый элемент данных в ряд.

add (период RegularTimePeriod, двойное значение)

Этот метод добавляет новый элемент данных в ряд.

Обратитесь к JFreeChart API за оставшимися методами и полями.

TimeSeriesCollection

Этот класс используется в качестве коллекции объектов временных рядов. Этот класс реализует интерфейс XYDataset, а также расширяет интерфейс IntervelXYDataset. Это позволяет удобно собирать объекты серии данных.

Конструктор классов

S.No Конструктор и описание
1

TimeSeriesCollection ()

Он создает пустой набор данных, связанный с часовым поясом по умолчанию.

2

TimeSeriesCollection ( серия TimeSeries )

Он создает набор данных, содержащий одну серию (можно добавить больше), привязанную к часовому поясу по умолчанию.

3

TimeSeriesCollection ( ряд TimeSeries , зона java.util.TimeZone)

Он создает набор данных, содержащий одну серию (можно добавить больше), привязанную к определенному часовому поясу.

4

TimeSeriesCollection (зона java.util.TimeZone)

Он создает пустой набор данных, привязанный к определенному часовому поясу.

TimeSeriesCollection ()

Он создает пустой набор данных, связанный с часовым поясом по умолчанию.

TimeSeriesCollection ( серия TimeSeries )

Он создает набор данных, содержащий одну серию (можно добавить больше), привязанную к часовому поясу по умолчанию.

TimeSeriesCollection ( ряд TimeSeries , зона java.util.TimeZone)

Он создает набор данных, содержащий одну серию (можно добавить больше), привязанную к определенному часовому поясу.

TimeSeriesCollection (зона java.util.TimeZone)

Он создает пустой набор данных, привязанный к определенному часовому поясу.

Метод класса

S.No Метод и описание
1

addSeries ( серия TimeSeries )

Этот метод добавляет серию в коллекцию и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

addSeries ( серия TimeSeries )

Этот метод добавляет серию в коллекцию и отправляет DatasetChangeEvent всем зарегистрированным слушателям.

Пожалуйста, обратитесь к JFreeChart API за оставшимися методами и полями.

второй

Этот класс представляет секунду в определенный день. Этот класс является неизменным, что является обязательным требованием для всех подклассов RegularTimePeriod.

Конструктор классов

S.No Конструктор и описание
1

Во- вторых ()

Он создает новую секунду, основываясь на системной дате / времени.

2

Второй (java.util. Дата)

Он создает новый экземпляр из указанной даты / времени и часового пояса по умолчанию.

3

Секунда (java.util.Date, зона java.util.TimeZone, локаль java.util.Locale)

Он создает новую секунду на основе предоставленного времени и часового пояса.

4

Второе (int секунда, int минута, int час, int день, int месяц, int год

Это создает новую секунду.

5

Секунда (целая секунда, минутная минута)

Создает новый Второй.

Во- вторых ()

Он создает новую секунду, основываясь на системной дате / времени.

Второй (java.util. Дата)

Он создает новый экземпляр из указанной даты / времени и часового пояса по умолчанию.

Секунда (java.util.Date, зона java.util.TimeZone, локаль java.util.Locale)

Он создает новую секунду на основе предоставленного времени и часового пояса.

Второе (int секунда, int минута, int час, int день, int месяц, int год

Это создает новую секунду.

Секунда (целая секунда, минутная минута)

Создает новый Второй.

Метод класса

S.No Метод и описание
1

getSecond ()

Он возвращает второй в течение минуты.

2

следующий()

Возвращает второе после текущей секунды.

getSecond ()

Он возвращает второй в течение минуты.

следующий()

Возвращает второе после текущей секунды.

Пожалуйста, обратитесь к JFreeChart API за оставшимися методами и полями.

Рамки в JFreeCharts

Пакет org.jfree.ui . Этот пакет принадлежит JCommons API от JFreeChart. Он содержит служебные классы, используемые для создания фреймов для предварительно сконфигурированных диаграмм.

ApplicationFrame

Это базовый класс для создания основного фрейма для простых приложений. Кадр слушает события закрытия окна и отвечает, выключая JVM. Это хорошо для небольших демонстрационных приложений. Для корпоративных приложений вам нужно использовать что-то более надежное. Основные основные методы этого класса взяты из классов Component, Container, Window, Frame и Jframe.

Конструктор классов

S.No Конструктор и описание
1

ApplicationFrame (заголовок java.lang.String)

Создает фрейм приложения со строкой заголовка.

ApplicationFrame (заголовок java.lang.String)

Создает фрейм приложения со строкой заголовка.

Этот класс помогает создавать рамки AWT. Это причина того, почему мы используем этот класс в качестве суперкласса в примерах этого урока.

Методы, которые взяты из родительских классов, используются для открытия кадра, закрытия кадра, изменения размера, изменения цвета фона или переднего плана и слушателей.

RefineryUtilities

Это коллекция классов служебных методов, относящихся к пользовательскому интерфейсу.

Метод класса

S.No Метод и описание
1

centerFrameOnScreen (окно java.awt.Window)

Он размещает указанный кадр в середине экрана.

centerFrameOnScreen (окно java.awt.Window)

Он размещает указанный кадр в середине экрана.

Вышеуказанный метод используется в учебном примере. Обратитесь к JFreeChart API за оставшимися методами и полями.

JFreeChart — круговая диаграмма

На круговой диаграмме длина дуги каждого сектора пропорциональна величине, которую он представляет. Эта глава демонстрирует — как мы можем использовать JFreeChart для создания круговой диаграммы из заданного набора бизнес-данных.

Бизнес данные

В следующем примере показана мобильная продажа с помощью круговой диаграммы. Ниже приведен список различных мобильных брендов и их продажи (единиц в день).

S.No Мобильные бренды Продажи (ЕД. В день)
1 Айфон 5с 20
2 Samsung Grand 20
3 MOTO G 40
4 Нокиа Люмия 10

Приложение на основе AWT

Ниже приведен код для создания круговой диаграммы с использованием приведенной выше информации. Этот код помогает вам встроить круговую диаграмму в любое приложение на основе AWT.

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
 
public class PieChart_AWT extends ApplicationFrame {
   
   public PieChart_AWT( String title ) {
      super( title ); 
      setContentPane(createDemoPanel( ));
   }
   
   private static PieDataset createDataset( ) {
      DefaultPieDataset dataset = new DefaultPieDataset( );
      dataset.setValue( "IPhone 5s" , new Double( 20 ) );  
      dataset.setValue( "SamSung Grand" , new Double( 20 ) );   
      dataset.setValue( "MotoG" , new Double( 40 ) );    
      dataset.setValue( "Nokia Lumia" , new Double( 10 ) );  
      return dataset;         
   }
   
   private static JFreeChart createChart( PieDataset dataset ) {
      JFreeChart chart = ChartFactory.createPieChart(      
         "Mobile Sales",   // chart title 
         dataset,          // data    
         true,             // include legend   
         true, 
         false);

      return chart;
   }
   
   public static JPanel createDemoPanel( ) {
      JFreeChart chart = createChart(createDataset( ) );  
      return new ChartPanel( chart ); 
   }

   public static void main( String[ ] args ) {
      PieChart_AWT demo = new PieChart_AWT( "Mobile Sales" );  
      demo.setSize( 560 , 367 );    
      RefineryUtilities.centerFrameOnScreen( demo );    
      demo.setVisible( true ); 
   }
}

Давайте сохраним приведенный выше Java-код в файле PieChart_AWT.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac PieChart_AWT.java  
$java PieChart_AWT

Если все в порядке, он скомпилируется и запустится, чтобы сгенерировать следующий круговой график —

JFreeChart Круговая диаграмма

Если вам не нужно вставлять диаграмму в какое-либо приложение, вы можете создавать изображения диаграмм в командной строке. JFreeChart позволяет сохранять изображения диаграмм в форматах JPG или PNG.

Создание изображения JPEG

Давайте перепишем приведенный выше пример, чтобы сгенерировать изображение JPEG из командной строки. Ниже приведены два API-интерфейса, предоставляемые библиотекой JFreeChart, которые вы можете использовать для создания изображений PNG или JPEG в соответствии с вашими требованиями.

  • saveChartAsPNG () — API для сохранения изображения в формате PNG.

  • saveChartAsJPEG () — API для сохранения изображения в формате JPEG.

saveChartAsPNG () — API для сохранения изображения в формате PNG.

saveChartAsJPEG () — API для сохранения изображения в формате JPEG.

import java.io.*;

import org.jfree.chart.ChartUtilities;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;

public class PieChart {
   
   public static void main( String[ ] args ) throws Exception {
      DefaultPieDataset dataset = new DefaultPieDataset( );
      dataset.setValue("IPhone 5s", new Double( 20 ) );
      dataset.setValue("SamSung Grand", new Double( 20 ) );
      dataset.setValue("MotoG", new Double( 40 ) );
      dataset.setValue("Nokia Lumia", new Double( 10 ) );

      JFreeChart chart = ChartFactory.createPieChart(
         "Mobile Sales",   // chart title
         dataset,          // data
         true,             // include legend
         true,
         false);
         
      int width = 640;   /* Width of the image */
      int height = 480;  /* Height of the image */ 
      File pieChart = new File( "PieChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG( pieChart , chart , width , height );
   }
}

Давайте сохраним указанный выше Java-код в файле PieChart.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac PieChart.java  
$java PieChart

Если все в порядке, он скомпилируется и запустится для создания файла изображения JPEG с именем PieChart.jpeg в вашем текущем каталоге.

JFreeChart — Гистограмма

В этой главе показано, как вы можете использовать JFreeChart для создания гистограммы из заданного набора бизнес-данных.

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

Бизнес-данные

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

Автомобиль скорость Рейтинг пользователей Миледж безопасности
указ 1,0 3.0 5.0 5.0
Audi 5.0 6,0 10,0 4,0
брод 4,0 2,0 3.0 6,0

Приложение на основе AWT

Ниже приведен код для создания гистограммы из приведенной выше информации. Этот код помогает вам встроить гистограмму в любое приложение на основе AWT.

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset; 
import org.jfree.data.category.DefaultCategoryDataset; 
import org.jfree.ui.ApplicationFrame; 
import org.jfree.ui.RefineryUtilities; 

public class BarChart_AWT extends ApplicationFrame {
   
   public BarChart_AWT( String applicationTitle , String chartTitle ) {
      super( applicationTitle );        
      JFreeChart barChart = ChartFactory.createBarChart(
         chartTitle,           
         "Category",            
         "Score",            
         createDataset(),          
         PlotOrientation.VERTICAL,           
         true, true, false);
         
      ChartPanel chartPanel = new ChartPanel( barChart );        
      chartPanel.setPreferredSize(new java.awt.Dimension( 560 , 367 ) );        
      setContentPane( chartPanel ); 
   }
   
   private CategoryDataset createDataset( ) {
      final String fiat = "FIAT";        
      final String audi = "AUDI";        
      final String ford = "FORD";        
      final String speed = "Speed";        
      final String millage = "Millage";        
      final String userrating = "User Rating";        
      final String safety = "safety";        
      final DefaultCategoryDataset dataset = 
      new DefaultCategoryDataset( );  

      dataset.addValue( 1.0 , fiat , speed );        
      dataset.addValue( 3.0 , fiat , userrating );        
      dataset.addValue( 5.0 , fiat , millage ); 
      dataset.addValue( 5.0 , fiat , safety );           

      dataset.addValue( 5.0 , audi , speed );        
      dataset.addValue( 6.0 , audi , userrating );       
      dataset.addValue( 10.0 , audi , millage );        
      dataset.addValue( 4.0 , audi , safety );

      dataset.addValue( 4.0 , ford , speed );        
      dataset.addValue( 2.0 , ford , userrating );        
      dataset.addValue( 3.0 , ford , millage );        
      dataset.addValue( 6.0 , ford , safety );               

      return dataset; 
   }
   
   public static void main( String[ ] args ) {
      BarChart_AWT chart = new BarChart_AWT("Car Usage Statistics", 
         "Which car do you like?");
      chart.pack( );        
      RefineryUtilities.centerFrameOnScreen( chart );        
      chart.setVisible( true ); 
   }
}

Давайте сохраним приведенный выше Java-код в файле BarChart_AWT.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac BarChar_AWT.java  
$java BarChart_AWT

Если все в порядке, он скомпилируется и запустится, чтобы сгенерировать следующую гистограмму —

JFree Chart

Создание изображения JPEG

Давайте перепишем приведенный выше пример, чтобы сгенерировать изображение JPEG из командной строки.

import java.io.*;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.ChartUtilities;

public class BarChart {
   
   public static void main( String[ ] args )throws Exception {
      final String fiat = "FIAT";
      final String audi = "AUDI";
      final String ford = "FORD";
      final String speed = "Speed";
      final String millage = "Millage";
      final String userrating = "User Rating";
      final String safety = "safety";

      final DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
      dataset.addValue( 1.0 , fiat , speed );
      dataset.addValue( 3.0 , fiat , userrating );
      dataset.addValue( 5.0 , fiat , millage );
      dataset.addValue( 5.0 , fiat , safety );

      dataset.addValue( 5.0 , audi , speed );
      dataset.addValue( 6.0 , audi , userrating );
      dataset.addValue( 10.0 , audi , millage );
      dataset.addValue( 4.0 , audi , safety );

      dataset.addValue( 4.0 , ford , speed );
      dataset.addValue( 2.0 , ford , userrating );
      dataset.addValue( 3.0 , ford , millage );
      dataset.addValue( 6.0 , ford , safety );

      JFreeChart barChart = ChartFactory.createBarChart(
         "CAR USAGE STATIStICS", 
         "Category", "Score", 
         dataset,PlotOrientation.VERTICAL, 
         true, true, false);
         
      int width = 640;    /* Width of the image */
      int height = 480;   /* Height of the image */ 
      File BarChart = new File( "BarChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG( BarChart , barChart , width , height );
   }
}

Давайте сохраним указанный выше Java-код в файле BarChart.java, а затем скомпилируем и запустим его из команды, отображаемой как —

$javac BarChart.java  
$java BarChart 

Если все в порядке, он скомпилируется и запустится для создания файла изображения JPEG с именем BarChart.jpeg в вашем текущем каталоге.

JFreeChart — Линейная диаграмма

Линейный график или линейный график отображают информацию в виде серии точек данных (маркеров), соединенных отрезками прямых линий. Линейная диаграмма показывает, как данные изменяются с одинаковой частотой.

В этой главе показано, как мы можем использовать JFreeChart для создания линейной диаграммы из заданного набора бизнес-данных.

Бизнес-данные

В следующем примере показана линейная диаграмма, показывающая тенденцию количества школ, открытых в разные годы, начиная с 1970 года.

Данные даны следующим образом —

Год Количество школ
1970 15
1980 30
1990 60
2000 120
2013 240
2014 300

Приложение на основе AWT

Ниже приведен код для создания линейной диаграммы из приведенной выше информации. Этот код помогает вам встроить линейную диаграмму в любое приложение на основе AWT.

import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class LineChart_AWT extends ApplicationFrame {

   public LineChart_AWT( String applicationTitle , String chartTitle ) {
      super(applicationTitle);
      JFreeChart lineChart = ChartFactory.createLineChart(
         chartTitle,
         "Years","Number of Schools",
         createDataset(),
         PlotOrientation.VERTICAL,
         true,true,false);
         
      ChartPanel chartPanel = new ChartPanel( lineChart );
      chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
      setContentPane( chartPanel );
   }

   private DefaultCategoryDataset createDataset( ) {
      DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
      dataset.addValue( 15 , "schools" , "1970" );
      dataset.addValue( 30 , "schools" , "1980" );
      dataset.addValue( 60 , "schools" ,  "1990" );
      dataset.addValue( 120 , "schools" , "2000" );
      dataset.addValue( 240 , "schools" , "2010" );
      dataset.addValue( 300 , "schools" , "2014" );
      return dataset;
   }
   
   public static void main( String[ ] args ) {
      LineChart_AWT chart = new LineChart_AWT(
         "School Vs Years" ,
         "Numer of Schools vs years");

      chart.pack( );
      RefineryUtilities.centerFrameOnScreen( chart );
      chart.setVisible( true );
   }
}

Давайте сохраним указанный выше Java-код в файле LineChart_AWT.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac LineChart_AWT.java  
$java LineChart_AWT 

Если все в порядке, он скомпилируется и запустится, чтобы сгенерировать следующий линейный график —

Линейная диаграмма JFreeChart

Создание изображения JPEG

Давайте перепишем приведенный выше пример, чтобы сгенерировать изображение JPEG из командной строки.

import java.io.*;

import org.jfree.chart.JFreeChart; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartUtilities; 
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class LineChart {

   public static void main( String[ ] args ) throws Exception {
      DefaultCategoryDataset line_chart_dataset = new DefaultCategoryDataset();
      line_chart_dataset.addValue( 15 , "schools" , "1970" );
      line_chart_dataset.addValue( 30 , "schools" , "1980" );
      line_chart_dataset.addValue( 60 , "schools" , "1990" );
      line_chart_dataset.addValue( 120 , "schools" , "2000" );
      line_chart_dataset.addValue( 240 , "schools" , "2010" ); 
      line_chart_dataset.addValue( 300 , "schools" , "2014" );

      JFreeChart lineChartObject = ChartFactory.createLineChart(
         "Schools Vs Years","Year",
         "Schools Count",
         line_chart_dataset,PlotOrientation.VERTICAL,
         true,true,false);

      int width = 640;    /* Width of the image */
      int height = 480;   /* Height of the image */ 
      File lineChart = new File( "LineChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG(lineChart ,lineChartObject, width ,height);
   }
}

Давайте сохраним приведенный выше Java-код в файле LineChart.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac LineChart.java  
$java LineChart

Если все в порядке, он скомпилируется и выполнится для создания файла изображения JPEG с именем LineChart.jpeg в вашем текущем каталоге.

JFreeChart — XY Chart

Диаграмма XY (разброс) основана на одной серии данных, состоящей из списка значений X и Y. Каждая пара значений (X, Y) является точкой в ​​системе координат. Здесь одно значение определяет горизонтальное (X) положение, а другое — вертикальное (Y) положение. Эта глава демонстрирует — как мы можем использовать JFreeChart для создания XY-диаграммы из заданного набора бизнес-данных.

Бизнес-данные

Рассмотрим пример, в котором мы хотим создать XY-диаграмму для всех основных браузеров. Здесь, различные оценки производительности собираются от разных категорий людей, как показано ниже —

Fire Fox Категория (X) Оценка (Y)
1,0 1,0
2,0 4,0
3.0 3.0
Хром Категория (X) Оценка (Y)
1,0 4,0
2,0 5.0
3.0 6,0
IE Категория (X) Оценка (Y)
3.0 4,0
4,0 5.0
5.0 4,0

Приложение на основе AWT

Ниже приведен код для создания XY-диаграммы из приведенной выше информации. Этот код помогает вам встроить XY-диаграмму в любое приложение на основе AWT.

import java.awt.Color; 
import java.awt.BasicStroke; 

import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.data.xy.XYDataset; 
import org.jfree.data.xy.XYSeries; 
import org.jfree.ui.ApplicationFrame; 
import org.jfree.ui.RefineryUtilities; 
import org.jfree.chart.plot.XYPlot; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.data.xy.XYSeriesCollection; 
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;

public class XYLineChart_AWT extends ApplicationFrame {

   public XYLineChart_AWT( String applicationTitle, String chartTitle ) {
      super(applicationTitle);
      JFreeChart xylineChart = ChartFactory.createXYLineChart(
         chartTitle ,
         "Category" ,
         "Score" ,
         createDataset() ,
         PlotOrientation.VERTICAL ,
         true , true , false);
         
      ChartPanel chartPanel = new ChartPanel( xylineChart );
      chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
      final XYPlot plot = xylineChart.getXYPlot( );
      
      XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( );
      renderer.setSeriesPaint( 0 , Color.RED );
      renderer.setSeriesPaint( 1 , Color.GREEN );
      renderer.setSeriesPaint( 2 , Color.YELLOW );
      renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
      renderer.setSeriesStroke( 1 , new BasicStroke( 3.0f ) );
      renderer.setSeriesStroke( 2 , new BasicStroke( 2.0f ) );
      plot.setRenderer( renderer ); 
      setContentPane( chartPanel ); 
   }
   
   private XYDataset createDataset( ) {
      final XYSeries firefox = new XYSeries( "Firefox" );          
      firefox.add( 1.0 , 1.0 );          
      firefox.add( 2.0 , 4.0 );          
      firefox.add( 3.0 , 3.0 );          
      
      final XYSeries chrome = new XYSeries( "Chrome" );          
      chrome.add( 1.0 , 4.0 );          
      chrome.add( 2.0 , 5.0 );          
      chrome.add( 3.0 , 6.0 );          
      
      final XYSeries iexplorer = new XYSeries( "InternetExplorer" );          
      iexplorer.add( 3.0 , 4.0 );          
      iexplorer.add( 4.0 , 5.0 );          
      iexplorer.add( 5.0 , 4.0 );          
      
      final XYSeriesCollection dataset = new XYSeriesCollection( );          
      dataset.addSeries( firefox );          
      dataset.addSeries( chrome );          
      dataset.addSeries( iexplorer );
      return dataset;
   }

   public static void main( String[ ] args ) {
      XYLineChart_AWT chart = new XYLineChart_AWT("Browser Usage Statistics",
         "Which Browser are you using?");
      chart.pack( );          
      RefineryUtilities.centerFrameOnScreen( chart );          
      chart.setVisible( true ); 
   }
}

Давайте сохраним приведенный выше Java-код в файле XYLineChart_AWT.java , а затем скомпилируем и запустим его из команды, которая выглядит так:

$javac XYLineChart_AWT.java  
$java XYLineChart_AWT 

Если все в порядке, он скомпилируется и запустится для генерации следующего графика XY —

JFreeChart XY Chart

Создание изображения JPEG

Давайте перепишем приведенный выше пример, чтобы сгенерировать изображение JPEG из командной строки.

import java.io.*;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.ChartUtilities; 

public class XYLineChart_image {

   public static void main( String[ ] args )throws Exception {
      final XYSeries firefox = new XYSeries( "Firefox" );
      firefox.add( 1.0 , 1.0 );
      firefox.add( 2.0 , 4.0 );
      firefox.add( 3.0 , 3.0 );
      
      final XYSeries chrome = new XYSeries( "Chrome" );
      chrome.add( 1.0 , 4.0 );
      chrome.add( 2.0 , 5.0 );
      chrome.add( 3.0 , 6.0 );
      
      final XYSeries iexplorer = new XYSeries( "InternetExplorer" );
      iexplorer.add( 3.0 , 4.0 );
      iexplorer.add( 4.0 , 5.0 );
      iexplorer.add( 5.0 , 4.0 );
      
      final XYSeriesCollection dataset = new XYSeriesCollection( );
      dataset.addSeries( firefox );
      dataset.addSeries( chrome );
      dataset.addSeries( iexplorer );

      JFreeChart xylineChart = ChartFactory.createXYLineChart(
         "Browser usage statastics", 
         "Category",
         "Score", 
         dataset,
         PlotOrientation.VERTICAL, 
         true, true, false);
      
      int width = 640;   /* Width of the image */
      int height = 480;  /* Height of the image */ 
      File XYChart = new File( "XYLineChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG( XYChart, xylineChart, width, height);
   }
}

Давайте сохраним приведенный выше Java-код в файле XYLineChart_image.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac XYLineChart_image.java  
$java XYLineChart_image

Если все в порядке, он скомпилируется и запустится для создания файла изображения JPEG с именем XYLineChart.jpeg в вашем текущем каталоге.

JFreeChart — 3D Pie / Bar Chart

Это трехмерные диаграммы, которые отображаются в трехмерном формате. Вы можете использовать эти графики, чтобы обеспечить лучшее отображение и четкую информацию. Круговая диаграмма 3D такая же, как круговая диаграмма, с приятным трехмерным эффектом. Эффект 3D можно получить, добавив немного дополнительного кода, который позаботится о создании 3D-эффекта в круговой диаграмме.

3D круговая диаграмма

Рассмотрим следующий пример, чтобы проиллюстрировать мобильные продажи с помощью трехмерной круговой диаграммы. Ниже приведен список различных мобильных брендов и их продажи (единиц в день).

S.No Мобильные бренды Продажи (ЕД. В день)
1 Айфон 5с 20
2 Samsung Grand 20
3 MOTO G 40
4 Нокиа Люмия 10

Ниже приведен код для создания 3D круговой диаграммы из приведенной выше информации. Этот код помогает вам встроить круговую диаграмму в любое приложение на основе AWT.

import java.io.*; 

import org.jfree.chart.ChartFactory; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.plot.PiePlot3D; 
import org.jfree.data.general.DefaultPieDataset; 
import org.jfree.chart.ChartUtilities;

public class PieChart3D {

   public static void main( String[ ] args )throws Exception {
      DefaultPieDataset dataset = new DefaultPieDataset( );             
      dataset.setValue( "IPhone 5s" , new Double( 20 ) );             
      dataset.setValue( "SamSung Grand" , new Double( 20 ) );             
      dataset.setValue( "MotoG" , new Double( 40 ) );             
      dataset.setValue( "Nokia Lumia" , new Double( 10 ) ); 

      JFreeChart chart = ChartFactory.createPieChart3D( 
         "Mobile Sales" ,  // chart title                   
         dataset ,         // data 
         true ,            // include legend                   
         true, 
         false);

      final PiePlot3D plot = ( PiePlot3D ) chart.getPlot( );             
      plot.setStartAngle( 270 );             
      plot.setForegroundAlpha( 0.60f );             
      plot.setInteriorGap( 0.02 );             
      int width = 640;   /* Width of the image */             
      int height = 480;  /* Height of the image */                             
      File pieChart3D = new File( "pie_Chart3D.jpeg" );                           
      ChartUtilities.saveChartAsJPEG( pieChart3D , chart , width , height );   
   }
}

Давайте сохраним приведенный выше Java-код в файле PieChart3D.java, а затем скомпилируем и запустим его из команды, отображаемой как —

$javac PieChart3D.java  
$java PieChart3D 

Если все в порядке, он скомпилируется и запустится для создания файла изображения JPEG с именем PieChart3D.jpeg, имеющего следующую трехмерную круговую диаграмму —

JFreeChart PieChart3D

3D Гистограмма

Гистограмма 3D такая же, как гистограмма, с приятным 3D-эффектом. Эффект 3D можно получить, добавив немного дополнительного кода, который позаботится о создании 3D-эффекта в гистограмме. Рассмотрим следующий пример, который отображает различную статистику автомобилей с помощью трехмерной гистограммы. Ниже приведен список марок автомобилей с их различными характеристиками, которые мы покажем с помощью гистограммы.

Автомобиль скорость Рейтинг пользователей Миледж безопасности
FIAT 1,0 3.0 5.0 5.0
AUDI 5.0 6,0 10,0 4,0
FORD 4,0 2,0 3.0 6,0

Следующий код создает трехмерную гистограмму из приведенной выше информации. Этот код помогает вам встроить гистограмму в любое приложение на основе AWT.

import java.io.*; 

import org.jfree.chart.ChartFactory; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.data.category.DefaultCategoryDataset; 
import org.jfree.chart.ChartUtilities; 

public class BarChart3D {
   
   public static void main( String[ ] args )throws Exception {
      final String fait = "FAIT";              
      final String audi = "AUDI";              
      final String ford = "FORD";              
      final String speed = "Speed";              
      final String popular = "Popular";              
      final String mailage = "Mailage";              
      final String userrating = "User Rating";              
      final String safety = "safety";        
      final DefaultCategoryDataset dataset = new DefaultCategoryDataset( ); 

      dataset.addValue( 1.0 , fait , speed );              
      dataset.addValue( 4.0 , fait , popular );              
      dataset.addValue( 3.0 , fait , userrating );              
      dataset.addValue( 5.0 , fait , mailage );              
      dataset.addValue( 5.0 , fait , safety );              
      
      dataset.addValue( 5.0 , audi , speed );              
      dataset.addValue( 7.0 , audi , popular );              
      dataset.addValue( 6.0 , audi , userrating );              
      dataset.addValue( 10.0 , audi , mailage );              
      dataset.addValue( 4.0 , audi , safety ); 
      
      dataset.addValue( 4.0 , ford , speed );              
      dataset.addValue( 3.0 , ford , popular );              
      dataset.addValue( 2.0 , ford , userrating );              
      dataset.addValue( 3.0 , ford , mailage );              
      dataset.addValue( 6.0 , ford , safety );                 
      
      JFreeChart barChart = ChartFactory.createBarChart3D(
         "Car Usage Statistics",             
         "Category",             
         "Score",             
         dataset,            
         PlotOrientation.VERTICAL,             
         true, true, false);
         
      int width = 640; /* Width of the image */              
      int height = 480; /* Height of the image */                              
      File barChart3D = new File( "barChart3D.jpeg" );                            
      ChartUtilities.saveChartAsJPEG( barChart3D, barChart, width, height);
   }
}

Давайте сохраним приведенный выше Java-код в файле BarChart3D.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac BarChart3D.java  
$java BarChart3

Если с вашей средой все в порядке, она скомпилируется и запустится для создания файла изображения JPEG BarChart3D.jpeg, имеющего следующую трехмерную гистограмму —

JFreeChart 3D Гистограмма

JFreeChart — пузырьковая диаграмма

В этой главе показано, как вы можете использовать JFreeChart для создания пузырьковой диаграммы из заданного набора бизнес-данных. Пузырьковая диаграмма отображает информацию в трехмерном виде. Пузырь строится в месте пересечения координат (x, y). Размер пузырька рассматривается как диапазон или количество осей X и Y.

Бизнес-данные

Давайте рассмотрим разных людей, а также их возраст, вес и работоспособность. Объем работы в воке можно рассматривать как количество часов, которое на графике представлено в виде пузырьков.

ВЕС
ВОЗРАСТ 30 40 50 60 70 80
10 4 РАБОТА
20 5
30 10
40 8
50 9
60 6

Приложение на основе AWT

Ниже приведен код для создания Bubble Chart из приведенной выше информации. Этот код помогает вам встроить пузырьковую диаграмму в любое приложение на основе AWT.

import java.awt.Color; 
import java.awt.Dimension; 

import javax.swing.JPanel; 

import org.jfree.chart.*; 
import org.jfree.chart.axis.NumberAxis; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.chart.plot.XYPlot; 
import org.jfree.chart.renderer.xy.XYItemRenderer; 
import org.jfree.data.xy.DefaultXYZDataset; 
import org.jfree.data.xy.XYZDataset; 
import org.jfree.ui.ApplicationFrame; 
import org.jfree.ui.RefineryUtilities;
  
public class BubbleChart_AWT extends ApplicationFrame {

   public BubbleChart_AWT( String s ) {
      super( s );                 
      JPanel jpanel = createDemoPanel( );                 
      jpanel.setPreferredSize(new Dimension( 560 , 370 ) );                 
      setContentPane( jpanel ); 
   }

   private static JFreeChart createChart( XYZDataset xyzdataset ) {
      JFreeChart jfreechart = ChartFactory.createBubbleChart(
         "AGE vs WEIGHT vs WORK",                    
         "Weight",                    
         "AGE",                    
         xyzdataset,                    
         PlotOrientation.HORIZONTAL,                    
         true, true, false);
         
      XYPlot xyplot = ( XYPlot )jfreechart.getPlot( );                 
      xyplot.setForegroundAlpha( 0.65F );                 
      XYItemRenderer xyitemrenderer = xyplot.getRenderer( );
      xyitemrenderer.setSeriesPaint( 0 , Color.blue );                 
      NumberAxis numberaxis = ( NumberAxis )xyplot.getDomainAxis( );                 
      numberaxis.setLowerMargin( 0.2 );                 
      numberaxis.setUpperMargin( 0.5 );                 
      NumberAxis numberaxis1 = ( NumberAxis )xyplot.getRangeAxis( );                 
      numberaxis1.setLowerMargin( 0.8 );                 
      numberaxis1.setUpperMargin( 0.9 );
                     
      return jfreechart;
   }

   public static XYZDataset createDataset( ) {
      DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset(); 
      double ad[ ] = { 30 , 40 , 50 , 60 , 70 , 80 };                 
      double ad1[ ] = { 10 , 20 , 30 , 40 , 50 , 60 };                 
      double ad2[ ] = { 4 , 5 , 10 , 8 , 9 , 6 };                 
      double ad3[][] = { ad , ad1 , ad2 };                 
      defaultxyzdataset.addSeries( "Series 1" , ad3 );
                   
      return defaultxyzdataset; 
   }

   public static JPanel createDemoPanel( ) {
      JFreeChart jfreechart = createChart( createDataset( ) );                 
      ChartPanel chartpanel = new ChartPanel( jfreechart );
                       
      chartpanel.setDomainZoomable( true );                 
      chartpanel.setRangeZoomable( true );
                 
      return chartpanel;
   }

   public static void main( String args[ ] ) {
      BubbleChart_AWT bubblechart = new BubbleChart_AWT( "Bubble Chart_frame" );   
      bubblechart.pack( );                 
      RefineryUtilities.centerFrameOnScreen( bubblechart );                 
      bubblechart.setVisible( true ); 
   }
}

Давайте сохраним приведенный выше Java-код в файле BubbleChart_AWT.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac BubbleChart_AWT.java  
$java BubbleChart_AW 

Если все в порядке, он скомпилируется и запустится для генерации следующего Bubble Graph —

JFreeChart Bubble Chart

Создание изображения JPEG

Давайте перепишем приведенный выше пример, чтобы сгенерировать изображение JPEG из командной строки.

import java.io.*;

import java.awt.Color; 

import org.jfree.chart.*; 
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.DefaultXYZDataset;
import org.jfree.chart.ChartUtilities;

public class BubbleChart_image {
   
   public static void main( String args[ ] )throws Exception {
      DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset( );
      double ad[ ] = { 30 , 40 , 50 , 60 , 70 , 80 };
      double ad1[ ] = { 10 , 20 , 30 , 40 , 50 , 60 };
      double ad2[ ] = { 4 , 5 , 10 , 8 , 9 , 6 };
      double ad3[ ][ ] = { ad , ad1 , ad2 };
      defaultxyzdataset.addSeries( "Series 1" , ad3 );

      JFreeChart jfreechart = ChartFactory.createBubbleChart(
         "AGE vs WEIGHT vs WORK", 
         "Weight", 
         "AGE", 
         defaultxyzdataset, 
         PlotOrientation.HORIZONTAL, 
         true, true, false);

      XYPlot xyplot = ( XYPlot )jfreechart.getPlot( );
      xyplot.setForegroundAlpha( 0.65F );
      XYItemRenderer xyitemrenderer = xyplot.getRenderer( );
      xyitemrenderer.setSeriesPaint( 0 , Color.blue );
      NumberAxis numberaxis = ( NumberAxis )xyplot.getDomainAxis( );
      numberaxis.setLowerMargin( 0.2 );
      numberaxis.setUpperMargin( 0.5 );
      NumberAxis numberaxis1 = ( NumberAxis )xyplot.getRangeAxis( );
      numberaxis1.setLowerMargin( 0.8 );
      numberaxis1.setUpperMargin( 0.9 );

      int width = 560;   /* Width of the image */
      int height = 370;  /* Height of the image */ 
      File bubbleChart = new File("BubbleChart.jpeg"); 
      ChartUtilities.saveChartAsJPEG(bubbleChart,jfreechart,width,height);
   }
}

Давайте сохраним указанный выше Java-код в файле BubbleChart_image.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac BubbleChart_image.java  
$java BubbleChart_image

Если все в порядке, он скомпилируется и запустится для создания файла изображения JPEG с именем BubbleChart.jpeg в вашем текущем каталоге.

JFreeChart — диаграмма временного ряда

Диаграмма временного ряда отображает последовательность точек данных, которая изменяется через равные интервалы времени. Эта глава демонстрирует — как мы можем использовать JFreeChart для создания диаграммы временных рядов из заданного набора бизнес-данных.

Бизнес-данные

Давайте рассмотрим различные случайные числа, сгенерированные с использованием стандартного Java API Math.random () . Мы используем эти числа для создания диаграммы временного ряда. Вы можете создать аналогичную диаграмму для общего количества ошибок, происходящих на вашем сайте за определенный промежуток времени.

Приложение на основе AWT

Ниже приведен код для создания диаграммы временных рядов из чисел, сгенерированных Math.random () в заданное внутреннее время.

import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.data.general.SeriesException; 
import org.jfree.data.time.Second; 
import org.jfree.data.time.TimeSeries; 
import org.jfree.data.time.TimeSeriesCollection; 
import org.jfree.data.xy.XYDataset; 
import org.jfree.ui.ApplicationFrame; 
import org.jfree.ui.RefineryUtilities;

public class TimeSeries_AWT extends ApplicationFrame {

   public TimeSeries_AWT( final String title ) {
      super( title );         
      final XYDataset dataset = createDataset( );         
      final JFreeChart chart = createChart( dataset );         
      final ChartPanel chartPanel = new ChartPanel( chart );         
      chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 370 ) );         
      chartPanel.setMouseZoomable( true , false );         
      setContentPane( chartPanel );
   }

   private XYDataset createDataset( ) {
      final TimeSeries series = new TimeSeries( "Random Data" );         
      Second current = new Second( );         
      double value = 100.0;         
      
      for (int i = 0; i < 4000; i++) {
         
         try {
            value = value + Math.random( ) - 0.5;                 
            series.add(current, new Double( value ) );                 
            current = ( Second ) current.next( ); 
         } catch ( SeriesException e ) {
            System.err.println("Error adding to series");
         }
      }

      return new TimeSeriesCollection(series);
   }     

   private JFreeChart createChart( final XYDataset dataset ) {
      return ChartFactory.createTimeSeriesChart(             
         "Computing Test", 
         "Seconds",              
         "Value",              
         dataset,             
         false,              
         false,              
         false);
   }

   public static void main( final String[ ] args ) {
      final String title = "Time Series Management";         
      final TimeSeries_AWT demo = new TimeSeries_AWT( title );         
      demo.pack( );         
      RefineryUtilities.positionFrameRandomly( demo );         
      demo.setVisible( true );
   }
}   

Давайте сохраним приведенный выше Java-код в файле TimeSeries_AWT.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac TimeSeries_AWT.java  
$java TImeSeries_AWT 

Если все в порядке, он скомпилируется и запустится для генерации следующего графика временных рядов —

JFreeChart TimeSeries Chart

Создание изображения JPEG

Давайте перепишем приведенный выше пример, чтобы сгенерировать изображение JPEG из командной строки.

import java.io.*;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.SeriesException;
import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.chart.ChartUtilities;

public class TimeSeriesChart {
   
   public static void main( final String[ ] args )throws Exception {
      final TimeSeries series = new TimeSeries( "Random Data" );
      Second current = new Second();
      double value = 100.0;
      
      for ( int i = 0 ; i < 4000 ; i++ ) {
         
         try {
            value = value + Math.random( ) - 0.5;
            series.add( current , new Double( value ) );
            current = ( Second ) current.next( );
         } catch ( SeriesException e ) {
            System.err.println( "Error adding to series" );
         }
      }
      
      final XYDataset dataset=( XYDataset )new TimeSeriesCollection(series);
      JFreeChart timechart = ChartFactory.createTimeSeriesChart(
         "Computing Test", 
         "Seconds", 
         "Value", 
         dataset,
         false, 
         false, 
         false);
         
      int width = 560;   /* Width of the image */
      int height = 370;  /* Height of the image */ 
      File timeChart = new File( "TimeChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG( timeChart, timechart, width, height );
   }
}

Давайте сохраним приведенный выше Java-код в файле TimeSeriesChart.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac TimeSeriesChart.java  
$java TimeSeriesChart

Если с вашей средой все в порядке, она скомпилируется и запустится, чтобы создать файл изображения TimeChart.jpeg в формате JPEG в вашем текущем каталоге.

JFreeChart — Файловый интерфейс

До сих пор мы изучали, как создавать различные типы диаграмм, используя API JFreeChart, используя статические данные. Но в производственной среде данные предоставляются в виде текстового файла в предопределенном формате или поступают непосредственно из базы данных.

В этой главе будет объяснено — как мы можем прочитать простые данные из данного текстового файла из заданного местоположения, а затем использовать JFreeChart для создания диаграммы по вашему выбору.

Бизнес-данные

Предположим , у нас есть файл с именем mobile.txt , в котором указаны разные бренды мобильных устройств и их продажи (в день), разделенные простой запятой (,) —

Iphone 5S, 20   
Samsung Grand, 20   
MOTO G, 40  Nokia  
Lumia, 10 

Генерация диаграммы на основе файла

Ниже приведен код для создания круговой диаграммы на основе информации, представленной в mobile.txt.

import java.io.*; 

import java.util.StringTokenizer; 

import org.jfree.chart.ChartUtilities; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.JFreeChart; 
import org.jfree.data.general.DefaultPieDataset;

public class PieChart_File {
   
   public static void main( String[ ] args )throws Exception {
      
      String mobilebrands[ ] = {    
         "IPhone 5s" ,   
         "SamSung Grand" ,   
         "MotoG" ,    
         "Nokia Lumia" 
      };
      
      InputStream in = new FileInputStream( new File( "C:/temp/test.txt" ) );          
      BufferedReader reader = new BufferedReader(new InputStreamReader(in ) );          
      StringBuilder out = new StringBuilder();          
      String line;          
      DefaultPieDataset dataset = new DefaultPieDataset();          

      while (( line = reader.readLine() ) != null ) {
         out.append( line );
      }
      
      StringTokenizer s = new StringTokenizer( out.toString(), "," );
      int i = 0;      
      
      while( s.hasMoreTokens( ) && ( mobilebrands [i] != null ) ) {
         dataset.setValue(mobilebrands[i], Double.parseDouble( s.nextToken( ) ));
         i++;
      }
      
      JFreeChart chart = ChartFactory.createPieChart( 
         "Mobile Sales",    // chart title           
         dataset,           // data           
         true,              // include legend           
         true,           
         false);
      
      int width = 560;    /* Width of the image */          
      int height = 370;   /* Height of the image */                          
      File pieChart = new File( "pie_Chart.jpeg" );                        
      ChartUtilities.saveChartAsJPEG( pieChart, chart, width, height); 
   }
}

Давайте сохраним приведенный выше Java-код в файле PieChart_File.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac PieChart_File.java  
$java PieChart_File 

Если все в порядке, он скомпилируется и запустится для создания файла изображения JPEG с именем PieChart.jpeg, который содержит следующую диаграмму.

Файловый интерфейс JFreeChart

JFreeChart — интерфейс базы данных

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

Бизнес-данные

Предположим, у нас есть следующая таблица MySQL mobile_tbl (mobile_brand VARCHAR (100) NOT NULL, unit_sale INT NO NULL);

Считайте, что эта таблица имеет следующие записи —

Мобильные бренды Единица продаж
Айфон 5с 20
Samsung Grand 20
MotoG 40
Нокиа Люмия 10

Генерация диаграммы с использованием базы данных

Ниже приведен код для создания круговой диаграммы на основе информации, представленной в таблице mobile_tbl, доступной в test_db в базе данных MySQL. Исходя из ваших требований, вы можете использовать любую другую базу данных.

import java.io.*; 
import java.sql.*; 

import org.jfree.chart.ChartUtilities;
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.JFreeChart; 
import org.jfree.data.general.DefaultPieDataset;

public class PieChart_DB {
   
   public static void main( String[ ] args )throws Exception {
      
      String mobilebrands[] = {
         "IPhone 5s",   
         "SamSung Grand",   
         "MotoG",            
         "Nokia Lumia" 
      };
      
      /* Create MySQL Database Connection */
      Class.forName( "com.mysql.jdbc.Driver" );
      Connection connect = DriverManager.getConnection( 
         "jdbc:mysql://localhost:3306/jf_testdb" ,     
         "root",     
         "root123");
      
      Statement statement = connect.createStatement( );
      ResultSet resultSet = statement.executeQuery("select * from mobile_data" );
      DefaultPieDataset dataset = new DefaultPieDataset( );
      
      while( resultSet.next( ) ) {
         dataset.setValue( 
         resultSet.getString( "mobile_brand" ) ,
         Double.parseDouble( resultSet.getString( "unit_sale" )));
      }
      
      JFreeChart chart = ChartFactory.createPieChart(
         "Mobile Sales",   // chart title           
         dataset,          // data           
         true,             // include legend          
         true,           
         false );

      int width = 560;    /* Width of the image */
      int height = 370;   /* Height of the image */ 
      File pieChart = new File( "Pie_Chart.jpeg" );
      ChartUtilities.saveChartAsJPEG( pieChart , chart , width , height );
   }
}

Давайте сохраним указанный выше Java-код в файле PieChart_DB.java , а затем скомпилируем и запустим его из команды, отображаемой как —

$javac PieChart_DB.java  
$java PieChart_DB

Если все в порядке, он скомпилируется и запустится для создания файла изображения JPEG с именем Pie_Chart.jpeg, имеющего следующую диаграмму.