javafx
Diagram
Sök…
Tårtdiagram
PieChart
drar data i form av en cirkel som är uppdelad i skivor. Varje skiva representerar en procentandel (del) för ett visst värde. PieChart.Data
är inslagna i PieChart.Data
objekt. Varje PieChart.Data
objekt har två fält: namnet på pajskivan och dess motsvarande värde.
konstruktörer
För att skapa ett cirkeldiagram måste vi skapa objektet för klassen PieChart
. Två konstruktörer ges till vårt förfogande. En av dem skapar ett tomt diagram som inte kommer att visa någonting om inte data är inställda med metoden setData
:
PieChart pieChart = new PieChart(); // Creates an empty pie chart
Och den andra kräver att en ObservableList
av PieChart.Data
ska skickas som en 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
Data
Värdena på pajskivorna behöver inte nödvändigtvis summera upp till 100, eftersom skivstorleken beräknas i proportion till summan av alla värden.
Ordningen i vilken datainmatningarna läggs till i listan kommer att bestämma deras position på diagrammet. Som standard läggs de medsols, men detta beteende kan vändas:
pieChart.setClockwise(false);
Exempel
Följande exempel skapar ett enkelt cirkeldiagram:
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);
}
}
Produktion:
Interaktivt cirkeldiagram
Som standard PieChart
inga händelser, men detta beteende kan ändras eftersom varje kakskiva är en JavaFX- Node
.
I exemplet nedan initialiserar vi data, tilldelar dem till diagrammet och sedan uppdateras över datauppsättningen och lägger verktygstips till varje skiva, så att värdena, normalt dolda, kan presenteras för användaren.
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);
});
Linjediagram
LineChart
presenterar data som en serie datapunkter kopplade till raka linjer. Varje XYChart.Data
är lindad i XYChart.Data
objektet, och datapunkterna grupperas i XYChart.Series
.
Varje XYChart.Data
objekt har två fält, som kan nås med getXValue
och getYValue
, som motsvarar ett x- och ay-värde på ett diagram.
XYChart.Data data = new XYChart.Data(1,3);
System.out.println(data.getXValue()); // Will print 1
System.out.println(data.getYValue()); // Will print 3
axlar
Innan vi skapar en LineChart
måste vi definiera dess axlar. Till exempel skapar standardkonstruktören utan argument för en klass NumberAxis
en automatisk avståndsaxel som är klar att använda och kräver ingen ytterligare konfiguration.
Axis xAxis = new NumberAxis();
Exempel
I det kompletta exemplet nedan skapar vi två serier med data som kommer att visas i samma diagram. Axlarnas etiketter, intervall och kryssvärden definieras uttryckligen.
@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);
}