javafx
tabel
Zoeken…
Cirkeldiagram
De klasse PieChart
tekent gegevens in de vorm van een cirkel die is verdeeld in segmenten. Elk segment vertegenwoordigt een percentage (deel) voor een bepaalde waarde. De cirkeldiagramgegevens zijn verpakt in PieChart.Data
objecten. Elk PieChart.Data
object heeft twee velden: de naam van het taartpunt en de bijbehorende waarde.
constructors
Om een cirkeldiagram te maken, moeten we het object van de klasse PieChart
. Twee constructeurs worden ons ter beschikking gesteld. Een van hen maakt een lege grafiek die niets weergeeft, tenzij de gegevens zijn ingesteld met de methode setData
:
PieChart pieChart = new PieChart(); // Creates an empty pie chart
En de tweede vereist een ObservableList
van PieChart.Data
worden doorgegeven als een parameter.
ObservableList<PieChart.Data> valueList = FXCollections.observableArrayList(
new PieChart.Data("Cats", 50),
new PieChart.Data("Dogs", 50));
PieChart pieChart(valueList); // Creates a chart with the given data
Gegevens
De waarden van de taartpunten hoeven niet noodzakelijkerwijs maximaal 100 te zijn, omdat de schijfgrootte wordt berekend in verhouding tot de som van alle waarden.
De volgorde waarin de gegevensinvoer aan de lijst wordt toegevoegd, bepaalt hun positie op de kaart. Standaard worden ze met de klok mee gelegd, maar dit gedrag kan worden omgekeerd:
pieChart.setClockwise(false);
Voorbeeld
In het volgende voorbeeld wordt een eenvoudig cirkeldiagram gemaakt:
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
Pane root = new Pane();
ObservableList<PieChart.Data> valueList = FXCollections.observableArrayList(
new PieChart.Data("Android", 55),
new PieChart.Data("IOS", 33),
new PieChart.Data("Windows", 12));
// create a pieChart with valueList data.
PieChart pieChart = new PieChart(valueList);
pieChart.setTitle("Popularity of Mobile OS");
//adding pieChart to the root.
root.getChildren().addAll(pieChart);
Scene scene = new Scene(root, 450, 450);
primaryStage.setTitle("Pie Chart Demo");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Output:
Interactief cirkeldiagram
PieChart
verwerkt standaard geen gebeurtenissen, maar dit gedrag kan worden gewijzigd omdat elk segment een JavaFX- Node
.
In het onderstaande voorbeeld initialiseren we de gegevens, wijzen deze toe aan de grafiek en herhalen we de gegevensset door tooltips toe te voegen aan elk segment, zodat de normaal verborgen waarden aan de gebruiker kunnen worden gepresenteerd.
ObservableList<PieChart.Data> valueList = FXCollections.observableArrayList(
new PieChart.Data("Nitrogen", 7809),
new PieChart.Data("Oxygen", 2195),
new PieChart.Data("Other", 93));
PieChart pieChart = new PieChart(valueList);
pieChart.setTitle("Air composition");
pieChart.getData().forEach(data -> {
String percentage = String.format("%.2f%%", (data.getPieValue() / 100));
Tooltip toolTip = new Tooltip(percentage);
Tooltip.install(data.getNode(), toolTip);
});
Lijngrafiek
De klasse LineChart
presenteert de gegevens als een reeks gegevenspunten verbonden met rechte lijnen. Elk gegevenspunt is verpakt in XYChart.Data
object en de gegevenspunten zijn gegroepeerd in XYChart.Series
.
Elk XYChart.Data
object heeft twee velden die toegankelijk zijn met getXValue
en getYValue
, die overeenkomen met een x- en ay-waarde in een grafiek.
XYChart.Data data = new XYChart.Data(1,3);
System.out.println(data.getXValue()); // Will print 1
System.out.println(data.getYValue()); // Will print 3
as
Voordat we een LineChart
, moeten we de assen ervan definiëren. De standaardconstructor zonder argument van een klasse NumberAxis
maakt bijvoorbeeld een automatisch bereikende as die klaar is voor gebruik en geen verdere configuratie vereist.
Axis xAxis = new NumberAxis();
Voorbeeld
In het volledige voorbeeld hieronder maken we twee reeksen gegevens die op dezelfde grafiek worden weergegeven. De labels, bereiken en tikwaarden van de assen worden expliciet gedefinieerd.
@Override
public void start(Stage primaryStage) {
Pane root = new Pane();
// Create empty series
ObservableList<XYChart.Series> seriesList = FXCollections.observableArrayList();
// Create data set for the first employee and add it to the series
ObservableList<XYChart.Data> aList = FXCollections.observableArrayList(
new XYChart.Data(0, 0),
new XYChart.Data(2, 6),
new XYChart.Data(4, 37),
new XYChart.Data(6, 82),
new XYChart.Data(8, 115)
);
seriesList.add(new XYChart.Series("Employee A", aList));
// Create data set for the second employee and add it to the series
ObservableList<XYChart.Data> bList = FXCollections.observableArrayList(
new XYChart.Data(0, 0),
new XYChart.Data(2, 43),
new XYChart.Data(4, 51),
new XYChart.Data(6, 64),
new XYChart.Data(8, 92)
);
seriesList.add(new XYChart.Series("Employee B", bList));
// Create axes
Axis xAxis = new NumberAxis("Hours worked", 0, 8, 1);
Axis yAxis = new NumberAxis("Lines written", 0, 150, 10);
LineChart chart = new LineChart(xAxis, yAxis, seriesList);
root.getChildren().add(chart);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}