Я пытаюсь реализовать гистограмму, используя Javafx.Диаграмма работает нормально, если я строю данные только один раз.Но когда я обновляю данные и заново строю диаграмму, масштаб оси X остается прежним, а все данные обновляются правильно.Пожалуйста, проверьте следующие изображения.
Это правильный график, который отображает данные по неделям
данные по неделям
Когда я обновляю данные,диаграмма превращается в
данные по месяцам
Вы можете видеть, что данные были обновлены, но ось X не масштабируется правильно.Интересно, что когда я снова строю график без изменения данных, ось X становится нормальной, как это.
данные по месяцам2
Коды следующие:
private static void drawChart(int timeMode)
{
stayAvg = new XYChart.Series<String, Number>();
stayAvg.setName("Avg.Stay (mins)");
// add data to the dataset
if (timeMode == 1)
{
for (int i = firstWeek; i <= lastWeek; i++)
{
stayAvg.getData().add(new XYChart.Data<String, Number>(weeks[i], weeksTotalCount[i]));
}
}
else if (timeMode == 2)
{
for (int i = firstMonth; i <= lastMonth; i++)
{
stayAvg.getData().add(new XYChart.Data<String, Number>(months[i], monthsTotalCount[i]));
}
}
// display chart
Platform.runLater(new Runnable() {
@Override
public void run() {
// plot data sets to the chart
// Update UI here.
// set up tooltips when cursor hovers on bars
sbc.setData(FXCollections.observableArrayList(stayAvg));
stayAvg.getData().forEach(d -> {
Tooltip tip = new Tooltip();
tip.setText(d.getYValue() + "\n" + d.getXValue());
Tooltip.install(d.getNode(), tip);
});
// sbc is a StackedBarChart
sbc.setTitle("Average Stay");
chart.setScene(scene);
}
});
}