J'essaie d'implémenter un graphique à barres en utilisant Javafx. Le graphique fonctionne bien si je trace les données une seule fois. Mais lorsque je mets à jour les données et que je trace à nouveau le graphique, l'échelle de l'axe des X reste la même, alors que toutes les données sont correctement mises à jour. Veuillez consulter les images suivantes.
Voici le graphique correct qui représente les données par semaine.
Lorsque je mets à jour les données, le graphique se transforme en
Vous pouvez voir que les données ont été mises à jour, mais l'axe des X ne s'échelonne pas correctement. Ce qui est intéressant, c'est que lorsque je trace à nouveau le graphique sans modifier les données, l'axe des X devient normal comme ceci.
Les codes sont les suivants :
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);
}
});
}