Я хочу создать динамический BarChart из значений HashMap. В моем случае у меня есть HashMap<String, Integer>
. Я хочу, чтобы String было именем столбца, а Integer - значением столбца. Я пробовал этот пример:Обновление BarChart Series динамически
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)));
}
}
Но я получаю пустой график. В моем случае я хочу обновлять значения диаграммы каждую секунду динамической серией данных. Каким будет лучший способ сделать это с минимальными ресурсами?
что ТСР? Независимо от того, что бы это ни было, вы перебрасываете ось категории на нее на каждой итерации (когда вы, вероятно, намеревались добавить категорию) – kleopatra
Это имя столбца. Просто простой пример. –
простой не достаточно - это должен быть SSCCE, который демонстрирует, что проблема имеет значение – kleopatra