我会从地图填写条形图。 我尝试这种方式,但它不起作用:
xAxisAuthor.setLabel(titleX);
yAxisAuthor.setLabel(titleY);
ReadJson jsonRead = new ReadJson();
TypeToken<List<Book>> bookToken = new TypeToken<List<Book>>() {
};
Map<String, Long> map = jsonRead.groupJson(new File(UrlAndPath.JSON_LIBRI), bookToken);
XYChart.Series<String, Number> series1 = new XYChart.Series<>();
series1.setName(title);
for (Map.Entry<String, Long> entry : map.entrySet()) {
String tmpString = entry.getKey();
Number tmpValue = entry.getValue();
XYChart.Data<String, Number> d = new XYChart.Data<>(tmpString, tmpValue);
System.out.println(d);
series1.getData().add(d);
}
barChart.setTitle(title);
barChart.getData().addAll(series1);
在练习中你拿钥匙,而不是价值。 但在我看来,XYChart.Data很有价值:
Data[thomas mann,1,null]
Data[giorgio zarelli,1,null]
在图表中,值始终为零。 你能给我一个小费吗?
答案 0 :(得分:0)
好吧,我在没有json的情况下尝试了这个代码,似乎可以工作:
Map<String, Long> map = new HashMap<>();
map.put("thomas mann", 1L);
map.put("clive cussler", 3L);
map.put("stephen king", 6L);
XYChart.Series<String, Number> series1 = new XYChart.Series<>();
series1.setName(title);
for (Map.Entry<String, Long> entry : mapOld.entrySet()) {
String tmpString = entry.getKey();
Number tmpValue = entry.getValue();
XYChart.Data<String, Number> d = new XYChart.Data<>(tmpString, tmpValue);
System.out.println(d);
series1.getData().add(d);
}
barChart.setTitle(title);
barChart.getData().addAll(series1);
也许问题是json中的值很长?
答案 1 :(得分:0)
问题在于价值太多了。 这有效:
for (Map.Entry<String, Long> entry : map.entrySet()) {
String tmpString = entry.getKey();
Long tmpValue = entry.getValue();
XYChart.Data<String, Number> d = new XYChart.Data<>(tmpString, tmpValue);
//System.out.println(tmpString + ": " + tmpValue);
//System.out.println(d);
series1.getData().add(d);
count++;
if (count == 10) {
break;
}
}
谢谢!