【问题标题】:Update BarChart Series dynamically动态更新条形图系列
【发布时间】:2015-03-05 12:12:45
【问题描述】:

我想从 HashMap 值创建动态条形图。就我而言,我有HashMap<String, Integer>。我希望 String 是列的名称,而 Integer 是列的值。我试过这个例子:

StackedBarChart<String, Number> sbc;
    CategoryAxis xAxis;

    public StackedBarChart<String, Number> initBarChart()
    {
        xAxis = new CategoryAxis();
        NumberAxis yAxis = new NumberAxis();
        sbc = new StackedBarChart<>(xAxis, yAxis);
        sbc.setAnimated(false);

        sbc.setTitle("Data Summary");
        sbc.setCategoryGap(55);

        yAxis.setLabel("Value");
        testData();

        return sbc;
    }

    public void testData()
    {
        HashMap<String, Integer> map = new HashMap<>();

        for (int i = 0; i < (int) (Math.random() * 10); i++)
        {
            map.put("house" + i, (int) (Math.random() * 100));
        }

        createBarChartData(map);
    }

    public void createBarChartData(HashMap<String, Integer> map)
    {
        for (int i = 0; i < map.size(); i++)
        {
            XYChart.Series<String, Number> series1 = new XYChart.Series<>();
            XYChart.Data<String, Number> dataS1 = new XYChart.Data<>();

            Integer get = map.get("house" + i);
            series1.setName(tcp);
            dataS1.setXValue(tcp);
            dataS1.setYValue(get);
            series1.getData().add(dataS1);
            xAxis.setCategories(FXCollections.<String>observableArrayList(Arrays.asList(tcp)));
            sbc.getData().clear();
            sbc.setData(FXCollections.<XYChart.Series<String, Number>>observableArrayList(Arrays.asList(series1)));
        }        
    }

但我得到空图表。就我而言,我想用动态数据系列每秒刷新图表值。用最少的资源做到这一点的最佳方法是什么?

【问题讨论】:

  • 什么是tcp?不管它是什么,您在每次迭代中都将类别轴重置为它(当您可能打算添加一个类别时)
  • 这是列的名称。只是简单的例子。
  • 简单是不够的 - 它必须是一个 SSCCE 证明问题有任何价值

标签: javafx javafx-8


【解决方案1】:

我希望你解决了你的问题,但如果没有,你可以关注这个小tutorial,它对我有很大帮助。

我遇到了同样的问题。我所做的只是:

  1. 使用HashMap 作为我手动填充的数据源。
  2. 然后我将其中的所有数据传递给XYChart.Series series
  3. 通过这个我获得了XYChart.Series 对象,然后我根据我的程序逻辑动态更改了它。
  4. 所有通过 Timeline 进行的更改,如教程中所示。

祝你好运;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 2020-08-23
    • 1970-01-01
    相关资源
    最近更新 更多