如何在JavaFX中填充两个AreaCharts?

时间:2016-07-16 15:09:26

标签: java javafx charts

JavaFX中的Area Chart填充数据线和零y轴之间的区域。

我只想知道如何填写两张区域图表。

更多详情:

我正在产生一堆随机游走。然后,我为路径创建三个不同的XYCharts,平均值和平均值+/- std。偏差。最后,我使用StackPane将每个图表以透明背景放在彼此的顶部。

图表的顺序必须如下: 1.背面的模拟路径图(LineChart)。 2.标准偏差图(AreaChart)。 3.顶部的平均图表(LineChart)。

图片 - 突出显示问题。

enter image description here enter image description here

我怎样才能做到这一点? CSS是首选。

1 个答案:

答案 0 :(得分:1)

我设法使用-fx-blend-mode属性来实现结果。以下是两个面积图的示例:

public void start(Stage stage) throws Exception {

    stage.setTitle("Test");
    final NumberAxis xAxis = new NumberAxis();
    final NumberAxis yAxis = new NumberAxis();
    xAxis.setLabel("X");
    final AreaChart<Number,Number> lineChart =
            new AreaChart<>(xAxis,yAxis);

    lineChart.setTitle("Test");

    XYChart.Series series1 = new XYChart.Series();
    series1.setName("S1");
    series1.getData().add(new XYChart.Data(0, 0));
    series1.getData().add(new XYChart.Data(20, 20));

    XYChart.Series series2 = new XYChart.Series();
    series2.setName("S2");
    series2.getData().add(new XYChart.Data(0, 0));
    series2.getData().add(new XYChart.Data(20, 10));

    Scene scene  = new Scene(lineChart,800,600);
    lineChart.getData().addAll(series1,series2);

    stage.setScene(scene);
    scene.getStylesheets().add("/test.css");
    stage.show();
}

test.css中的css:

.default-color0.chart-series-area-fill {
    -fx-fill: #FF0000;
    -fx-blend-mode: difference;
}
.default-color1.chart-series-area-fill {
    -fx-fill: #FF0000;
    -fx-blend-mode: difference;
}

结果:
Result
修改
屏幕/乘法的CSS:

.default-color0.chart-series-area-fill {
    -fx-fill: rgb(0,178,0);
    -fx-blend-mode: screen;
}

.default-color1.chart-series-area-fill {
    -fx-fill: rgb(255,246,255);
    -fx-blend-mode: multiply;
}

结果:Screen/multiply