Javafx 2 JavaFx堆叠条形图问题
我有一张图表,数据堆积在(-,+)Y轴上Javafx 2 JavaFx堆叠条形图问题,javafx-2,Javafx 2,我有一张图表,数据堆积在(-,+)Y轴上 有了JfreeChart,所有这些都会正确无误地显示在每个栏上,数据也不会丢失 但是,当使用javafx StackedBar图表时,当条形图系列具有(正和负)数据堆叠时,条形图损坏并丢失数据。 if(加值>0){ series.getData().add(新的XYChart.Data(xPoint,plusValue)); } 如果(最小值>0){ series.getData().add(新的XYChart.Data(xPoint,-minusV
- 有了JfreeChart,所有这些都会正确无误地显示在每个栏上,数据也不会丢失
- 但是,当使用javafx StackedBar图表时,当条形图系列具有(正和负)数据堆叠时,条形图损坏并丢失数据。
if(加值>0){ series.getData().add(新的XYChart.Data(xPoint,plusValue)); } 如果(最小值>0){ series.getData().add(新的XYChart.Data(xPoint,-minusValue)); }
导入java.util.array;
导入javafx.application.application;
导入javafx.collections.FXCollections;
导入javafx.scene.scene;
导入javafx.scene.chart.CategoryAxis;
导入javafx.scene.chart.NumberAxis;
导入javafx.scene.chart.StackedBarChart;
导入javafx.scene.chart.XYChart;
导入javafx.stage.stage;
公共类StackedBarChartSample扩展应用程序{
最终静态字符串austria=“austria”;
最终静态字符串巴西=“巴西”;
最终静态字符串france=“france”;
最终静态字符串意大利=“意大利”;
最终静态字符串usa=“usa”;
最终CategoryAxis xAxis=新CategoryAxis();
最终数字axis yAxis=新数字axis();
最终堆叠条形图sbc=
新堆叠条形图(xAxis、yAxis);
最终XYChart.系列1=
新的XYChart.Series();
最终XYChart.系列2=
新的XYChart.Series();
最终XYChart.系列3=
新的XYChart.Series();
@凌驾
公众假期开始(阶段){
阶段。设置标题(“条形图样本”);
sbc.设置标题(“国家总结”);
xAxis.setLabel(“国家”);
xAxis.setCategories(FXCollections.observableArrayList(
asList(奥地利、巴西、法国、意大利、美国);
yAxis.setLabel(“值”);
系列1.集合名称(“2003”);
//附加值
series1.getData().add(新的XYChart.Data(奥地利,200));
series1.getData().add(新的XYChart.Data(巴西,300));
series1.getData().add(新的XYChart.Data(法国,400));
series1.getData().add(新的XYChart.Data(意大利,500));
series1.getData().add(新的XYChart.Data(usa,600));
//负值
series1.getData().add(新的XYChart.Data(austria,-200));
series1.getData().add(新的XYChart.Data(巴西,-300));
series1.getData().add(新的XYChart.Data(france,-400));
series1.getData().add(新的XYChart.Data(意大利,-500));
series1.getData().add(新的XYChart.Data(美国,-600));
序列2.集合名称(“2004”);
series2.getData().add(新的XYChart.Data(奥地利,200));
series2.getData().add(新的XYChart.Data(巴西,300));
series2.getData().add(新的XYChart.Data(法国,400));
series2.getData().add(新的XYChart.Data(意大利,500));
series2.getData().add(新的XYChart.Data(usa,600));
//负值
series2.getData().add(新的XYChart.Data(austria,-200));
series2.getData().add(新的XYChart.Data(巴西,-300));
series2.getData().add(新的XYChart.Data(france,-400));
series2.getData().add(新的XYChart.Data(意大利,-500));
series2.getData().add(新的XYChart.Data(美国,-600));
系列3.集合名称(“2005”);
series3.getData().add(新的XYChart.Data(奥地利,200));
series3.getData().add(新的XYChart.Data(巴西,300));
series3.getData().add(新的XYChart.Data(法国,400));
series3.getData().add(新的XYChart.Data(意大利,500));
series3.getData().add(新的XYChart.Data(usa,600));
//负值
series3.getData().add(新的XYChart.Data(austria,-200));
series3.getData().add(新的XYChart.Data(巴西,-300));
series3.getData().add(新的XYChart.Data(法国,-400));
series3.getData().add(新的XYChart.Data(意大利,-500));
series3.getData().add(新的XYChart.Data(美国,-600));
场景=新场景(sbc,800600);
sbc.getData().addAll(系列1、系列2、系列3);
舞台场景;
stage.show();
}
公共静态void main(字符串[]args){
发射(args);
}
}
- 没有负值。
- 负值数据已损坏。
- 使用
或
我在StackedBarChart代码中发现了错误:
private Map<Series, Map<String,Data<X, Y>>> seriesCategoryMap = new HashMap<Series, Map<String, Data<X, Y>>>();
,以便每个categoryPoint都是List
列表条列表,列表条列表有正负条
private Map<Series, Map<String, List<Data<X, Y>>>> seriesCategoryMap = new HashMap<Series, Map<String, List<Data<X, Y>>>>();
private Map seriesCategoryMap=new HashMap();
// list to hold more that one bar "positive and negative"
List<Data<X, Y>> itemList = categoryMap.get(category) != null ? categoryMap.get(category) : new ArrayList<Data<X, Y>>();
itemList.add(item);
categoryMap.put(category, itemList);
private List<Data<X, Y>> getDataItem(Series<X, Y> series, int seriesIndex, int itemIndex, String category) {
Map<String, List<Data<X, Y>>> catmap = seriesCategoryMap.get(series);
return catmap != null ? catmap.get(category) != null ? catmap.get(category) : new ArrayList<Data<X, Y>>() : new ArrayList<Data<X, Y>>();
}
//列表可容纳多个“正负”条
List itemList=categoryMap.get(category)!=无效的get(category):新建ArrayList();
项目列表。添加(项目);
类别映射放置(类别、项目列表);
2-getDataItem方法。
// list to hold more that one bar "positive and negative"
List<Data<X, Y>> itemList = categoryMap.get(category) != null ? categoryMap.get(category) : new ArrayList<Data<X, Y>>();
itemList.add(item);
categoryMap.put(category, itemList);
private List<Data<X, Y>> getDataItem(Series<X, Y> series, int seriesIndex, int itemIndex, String category) {
Map<String, List<Data<X, Y>>> catmap = seriesCategoryMap.get(series);
return catmap != null ? catmap.get(category) != null ? catmap.get(category) : new ArrayList<Data<X, Y>>() : new ArrayList<Data<X, Y>>();
}
private List getDataItem(系列、int系列索引、int项目索引、字符串类别){
Map catmap=seriesCategoryMap.get(series);
返回catmap!=null?catmap.get(category)!=null?catmap.get(category):新建ArrayList():新建ArrayList();
}
3-updateAxisRange和layoutPlotChildren更新这两种方法,以管理正负轴上的条形长度。
// list to hold more that one bar "positive and negative"
List<Data<X, Y>> itemList = categoryMap.get(category) != null ? categoryMap.get(category) : new ArrayList<Data<X, Y>>();
itemList.add(item);
categoryMap.put(category, itemList);
private List<Data<X, Y>> getDataItem(Series<X, Y> series, int seriesIndex, int itemIndex, String category) {
Map<String, List<Data<X, Y>>> catmap = seriesCategoryMap.get(series);
return catmap != null ? catmap.get(category) != null ? catmap.get(category) : new ArrayList<Data<X, Y>>() : new ArrayList<Data<X, Y>>();
}
- 堆叠条形图完美显示条形图,无任何数据损坏