来自Map的JavaFX条形图

时间:2017-06-22 15:33:51

标签: java javafx charts

我会从地图填写条形图。 我尝试这种方式,但它不起作用:

    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]

在图表中,值始终为零。 你能给我一个小费吗?

2 个答案:

答案 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;
      }
  }

谢谢!