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:

Resultat

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);
}

Produktion:

Linjediagram



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow