颜色形状表示的LineChart节点可调整大小

时间:2019-07-04 12:11:47

标签: java javafx charts

我需要创建一个图表,其中每个节点都由一种颜色表示。这就是我所做的:

final StackPane chartContainer = new StackPane();
    Tube tube = tubeTest();
    Random r = new Random();
    XYChart.Series<Number,Number> serie = new     XYChart.Series<Number,Number>();

    for(int numSequence = 1; numSequence < 21; numSequence++)
    {
        for(int distance = 0; distance < 200; ++distance)
        {
            Color color = Color.hsb(r.nextInt(255), 1, 1);

            Data<Number, Number> data = new XYChart.Data<Number,Number>(distance, numSequence);
            Rectangle rectangle = new Rectangle(2,15, color);
            data.setNode(new Rectangle(2,15, color));

            serie.getData().add(data);
        }
    }



    final NumberAxis xAxis = new NumberAxis();
    final NumberAxis yAxis = new NumberAxis();
    xAxis.setLabel("Balayage (mm)");
    yAxis.setLabel("Numéro de séquence");

    LineChart<Number, Number> chart = new LineChart<Number, Number>(xAxis, yAxis);
    chart.setData(FXCollections.observableArrayList(Collections.singleton(serie)));
    Set<Node> node = chart.lookupAll(".chart-series-line");
        node.forEach((element) ->  {
            element.setStyle("-fx-stroke-width : 0px;");
        });


    chart.prefHeightProperty().bind(chartContainer.heightProperty());
    chart.prefWidthProperty().bind(chartContainer.widthProperty());


    chartContainer.getChildren().add(chart);
    //chartContainer.getChildren().add(rectanglePixel);

    final BorderPane root = new BorderPane();
    root.setCenter(chartContainer);

    final Scene scene = new Scene(root, 600, 400);
    primaryStage.setScene(scene);
    primaryStage.show();
}

//Convertit la valeur d'un point en sa couleur hsv
    private Color hsvColorValue(double value) {
        double AMPLITUDE_MAX = 50;
        //h = (valeur / max)*255
        double h = (value/AMPLITUDE_MAX)*255;
        //On s'assure que h est entre 0 et 255 - sinon erreur
        h = Math.max(0, Math.min(255, h));
        //On obtient la couleur hsv du point sur le scan
        return Color.hsb(h, 1, 1);
    }

尽管如此,当图表具有其创建比例时,它可以很好地工作,但是当我想要扩展框架时,由矩形表示的节点也不会扩展,因此它在节点之间创建了空白。我是否应该以其他方式(例如通过创建图像)进行操作?还是有办法做到?

0 个答案:

没有答案