JavaFx StackedBar Chart Issue
У меня есть диаграмма с данными, сложенными по (-, +) оси Y.
С JfreeChart все это идет своим чередом, и данные отображаются на каждом столбце без потерь.
Но при использовании javafx StackedBar Chart, когда ряд баров имеет (положительный отрицательно) данные сложены бар поврежден и потери данных.
if (plusValue > 0) {
series.getData().add(new XYChart.Data(xPoint, plusValue));
}
if (minusValue > 0) {
series.getData().add(new XYChart.Data(xPoint, -minusValue));
}
Обновить :-
Образец Oracle StackedBarChart - "Я изменяю значение Серии "}
import java.util.Arrays;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.StackedBarChart;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;
public class StackedBarChartSample extends Application {
final static String austria = "Austria";
final static String brazil = "Brazil";
final static String france = "France";
final static String italy = "Italy";
final static String usa = "USA";
final CategoryAxis xAxis = new CategoryAxis();
final NumberAxis yAxis = new NumberAxis();
final StackedBarChart sbc =
new StackedBarChart(xAxis, yAxis);
final XYChart.Series series1 =
new XYChart.Series();
final XYChart.Series series2 =
new XYChart.Series();
final XYChart.Series series3 =
new XYChart.Series();
@Override
public void start(Stage stage) {
stage.setTitle("Bar Chart Sample");
sbc.setTitle("Country Summary");
xAxis.setLabel("Country");
xAxis.setCategories(FXCollections.observableArrayList(
Arrays.asList(austria, brazil, france, italy, usa)));
yAxis.setLabel("Value");
series1.setName("2003");
// plus value
series1.getData().add(new XYChart.Data(austria, 200));
series1.getData().add(new XYChart.Data(brazil, 300));
series1.getData().add(new XYChart.Data(france, 400));
series1.getData().add(new XYChart.Data(italy, 500));
series1.getData().add(new XYChart.Data(usa, 600));
// minus value
series1.getData().add(new XYChart.Data(austria, -200));
series1.getData().add(new XYChart.Data(brazil, -300));
series1.getData().add(new XYChart.Data(france, -400));
series1.getData().add(new XYChart.Data(italy, -500));
series1.getData().add(new XYChart.Data(usa, -600));
series2.setName("2004");
series2.getData().add(new XYChart.Data(austria, 200));
series2.getData().add(new XYChart.Data(brazil, 300));
series2.getData().add(new XYChart.Data(france, 400));
series2.getData().add(new XYChart.Data(italy, 500));
series2.getData().add(new XYChart.Data(usa, 600));
// minus value
series2.getData().add(new XYChart.Data(austria, -200));
series2.getData().add(new XYChart.Data(brazil, -300));
series2.getData().add(new XYChart.Data(france, -400));
series2.getData().add(new XYChart.Data(italy, -500));
series2.getData().add(new XYChart.Data(usa, -600));
series3.setName("2005");
series3.getData().add(new XYChart.Data(austria, 200));
series3.getData().add(new XYChart.Data(brazil, 300));
series3.getData().add(new XYChart.Data(france, 400));
series3.getData().add(new XYChart.Data(italy, 500));
series3.getData().add(new XYChart.Data(usa, 600));
// minus value
series3.getData().add(new XYChart.Data(austria, -200));
series3.getData().add(new XYChart.Data(brazil, -300));
series3.getData().add(new XYChart.Data(france, -400));
series3.getData().add(new XYChart.Data(italy, -500));
series3.getData().add(new XYChart.Data(usa, -600));
Scene scene = new Scene(sbc, 800, 600);
sbc.getData().addAll(series1, series2, series3);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
Без минус значения.При отрицательном значении данные повреждены.