Spec-Zone.ru › OpenJavaFX 24

Пакет javafx.scene.chart

package javafx.scene.chart

Интерфейс JavaFX предоставляет набор компонентов диаграмм, которые являются очень удобным способом визуализации данных. Разработчики приложений могут использовать эти готовые графические диаграммы, предоставляемые JavaFX runtime, для визуализации широкого спектра данных.

Предоставляются общие типы диаграмм, такие как Bar, Line, Area, Pie, Scatter и Bubble диаграммы. Эти диаграммы легко создавать и настраивать. API JavaFX Charts ориентирован на визуализацию, а не на модель.

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

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

Таблица типов диаграмм

Диаграмма

Описание

LineChart

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

AreaChart

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

BarChart

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

PieChart

Строит круговую диаграмму, разделённую на сектора, где каждый сектор представляет значение как долю от общего значения. Она напоминает пирог, поэтому и название.

BubbleChart

Строит пузырьки для точек данных в ряду. Каждый отображаемый элемент изображает три параметра на 2D диаграмме, и, следовательно, это уникальный тип диаграммы.

ScatterChart

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

Класс Chart является базовым классом для всех диаграмм. Он отвечает за отрисовку фона, рамки, заголовка и легенды. Его можно расширить для создания пользовательских типов диаграмм. Класс XYChart является базовым классом для всех диаграмм с двумя осями и расширяет класс Chart. Он в основном отвечает за отрисовку двух осей и фона области диаграммы. Большинство диаграмм расширяют класс XYChart, за исключением PieChart, который расширяет Chart, так как это не диаграмма с двумя осями.

Пакет javafx.scene.chart содержит классы осей, которые можно использовать при создании диаграмм с двумя осями. Класс Axis является абстрактным базовым классом всех осей диаграммы. CategoryAxis строит строковые категории, где каждое значение является уникальной категорией на оси. NumberAxis строит диапазон чисел с основными метками через каждый интервал tickUnit.

Например, BarChart строит данные из последовательности объектов XYChart.Series. Каждый ряд содержит объекты XYChart.Data.


     // add data
     XYChart.Series<String,Number> series1 = new XYChart.Series<String,Number>();
     series1.setName("Data Series 1");
     series1.getData().add(new XYChart.Data<String,Number>("2007", 567));
 

Мы можем определить больше подобных объектов серии. Следующий фрагмент кода демонстрирует, как создать BarChart с 3 категориями и осями X и Y:


     static String[] years = {"2007", "2008", "2009"};
     final CategoryAxis xAxis = new CategoryAxis();
     final NumberAxis yAxis = new NumberAxis();
     final BarChart<String,Number> bc = new BarChart<String,Number>(xAxis, yAxis);
     xAxis.setCategories(FXCollections.<String>observableArrayList(Arrays.asList(years)));
     bc.getData().addAll(series1, series2, series3);
 

Диаграммы JavaFX хорошо подходят для реального времени или динамической визуализации диаграмм (например, онлайн-акций, трафика веб-сайтов и т. д.) из наборов данных в реальном времени. Вот пример динамической диаграммы, созданной с использованием смоделированных данных. Используется Timeline для моделирования динамических данных для изменения стоимости акций во времени (часы).


     private XYChart.Series<Number,Number> hourDataSeries;
     private NumberAxis xAxis;
     private Timeline animation;
     private double hours = 0;
     private double timeInHours = 0;
     private double prevY = 10;
     private double y = 10;

     // timeline to add new data every 60th of a second
     animation = new Timeline();
     animation.getKeyFrames().add(new KeyFrame(Duration.millis(1000 / 60), new EventHandler<ActionEvent>() {
         @Override public void handle(ActionEvent actionEvent) {
             // 6 minutes data per frame
             for(int count = 0; count < 6; count++) {
                 nextTime();
                 plotTime();
             }
         }
     }));
     animation.setCycleCount(Animation.INDEFINITE);
     xAxis = new NumberAxis(0, 24, 3);
     final NumberAxis yAxis = new NumberAxis(0, 100, 10);
     final LineChart<Number,Number> lc = new LineChart<Number,Number>(xAxis, yAxis);

     lc.setCreateSymbols(false);
     lc.setAnimated(false);
     lc.setLegendVisible(false);
     lc.setTitle("ACME Company Stock");

     xAxis.setLabel("Time");
     xAxis.setForceZeroInRange(false);
     yAxis.setLabel("Share Price");
     yAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(yAxis, "$", null));

     hourDataSeries = new XYChart.Series<Number,Number>();
     hourDataSeries.setName("Hourly Data");
     hourDataSeries.getData().add(new XYChart.Data<Number,Number>(timeInHours, prevY));
     lc.getData().add(hourDataSeries);

     private void nextTime() {
         if (minutes == 59) {
             hours++;
             minutes = 0;
         } else {
             minutes++;
         }
         timeInHours = hours + ((1d/60d) * minutes);
     }

     private void plotTime() {
         if ((timeInHours % 1) == 0) {
             // change of hour
             double oldY = y;
             y = prevY - 10 + (Math.random() * 20);
             prevY = oldY;
             while (y < 10 || y > 90) y = y - 10 + (Math.random() * 20);
             hourDataSeries.getData().add(new XYChart.Data<Number, Number>(timeInHours, prevY));
             // after 25hours delete old data
             if (timeInHours > 25) hourDataSeries.getData().remove(0);
             // every hour after 24 move range 1 hour
             if (timeInHours > 24) {
                 xAxis.setLowerBound(xAxis.getLowerBound() + 1);
                 xAxis.setUpperBound(xAxis.getUpperBound() + 1);
             }
         }
     }
 

Метод start должен вызвать animation.play(), чтобы запустить смоделированную динамическую диаграмму.

Обратитесь к документации пакета javafx.scene.control по стилизации CSS. Пример стилизации диаграммы с помощью CSS выглядит следующим образом: для установки фона содержимого диаграммы в определенный цвет:

.chart-content { -fx-background-color: cyan;}

Цвет линии на линейной диаграмме можно стилизовать следующим образом:

.chart-series-line { -fx-stroke: green; -fx-stroke-width: 4px;}


javafx.graphics
Модуль Пакет Описание
javafx.scene
Предоставляет основной набор базовых классов для API графа сцены JavaFX.
Класс Описание
AreaChart<X,Y>
AreaChart - Строит область между линией, соединяющей точки данных, и линией 0 на оси Y.
Axis<T>
Базовый класс для всех осей в JavaFX, представляющий ось, нарисованную на области диаграммы.
Axis.TickMark<T>
TickMark представляет текст метки и его связанные свойства для каждой метки вдоль оси.
BarChart<X,Y>
Диаграмма, которая строит столбцы, указывающие значения данных для категории.
BubbleChart<X,Y>
Тип диаграммы, который строит пузырьки для точек данных в ряду.
CategoryAxis
Реализация оси, которая будет работать со строковыми категориями, где каждое значение является уникальной категорией (меткой) вдоль оси.
Chart
Базовый класс для всех диаграмм.
LineChart<X,Y>
Линейная диаграмма строит линию, соединяющую точки данных в ряду.
LineChart.SortingPolicy
Этот перечисление определяет политику для LineChart.axisSortingPolicyProperty().
NumberAxis
Класс оси, который строит диапазон чисел с основными метками через каждый интервал tickUnit.
NumberAxis.DefaultFormatter
По умолчанию форматирование чисел для NumberAxis, оно синхронизируется с автоматическим масштабированием и форматирует значения соответствующим образом.
PieChart
Отображает круговую диаграмму.
PieChart.Data
Элемент данных PieChart, представляет один сектор на круговой диаграмме
ScatterChart<X,Y>
Тип диаграммы, который строит символы для точек данных в ряду.
StackedAreaChart<X,Y>
StackedAreaChart - это вариация AreaChart, который отображает тенденции вклада каждого значения.
StackedBarChart<X,Y>
StackedBarChart - это вариация BarChart, который строит столбцы, указывающие значения данных для категории.
ValueAxis<T extends Number>
Ось, данные которой определены как числа.
XYChart<X,Y>
Базовый класс диаграммы для всех диаграмм с 2 осями.
XYChart.Data<X,Y>
Один элемент данных с данными для диаграмм с двумя осями
XYChart.Series<X,Y>
Названный ряд элементов данных

Отправить отчет об ошибке или предложить улучшение
Copyright © 2008, 2025, Oracle и/или его аффилированные лица. Все права защищены.

© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API