J'essaie d'afficher des données sur un XYBarChart en utilisant JFreechart. Le graphique devrait afficher les points dans le temps avec un compte. Ainsi, si l'utilisateur choisit le 25 janvier et le 25 mars comme intervalle, le graphique devrait afficher les données entre ces dates dans certains intervalles:Comment puis-je dessiner un graphique avec un TimeSeries dans jfreecharts qui n'interpole pas les valeurs de date pour moi?
si l'utilisateur choisit HEURE, alors je crée une collection de toutes les heures du 25 jan au mars 10e, avec un nombre correspondant. Naturellement, c'est une assez grande collection. Si l'utilisateur choisit MONTH, l'utilisateur devrait voir 3 mois (et seulement 3 entrées dans la collection). Si l'utilisateur choisit DAY, l'utilisateur verra seulement environ 60 entrées. Tu vois? Lorsque je crée le graphique (en utilisant le code ci-dessous pour la génération de l'ensemble de données), il «interpole» les valeurs. Si je choisis des heures, il montre des données par jour avec beaucoup de barres entre chaque jour (c.-à-d., 24 petites barres pendant le jour). Si je choisis des mois, je reçois toujours les jours pendant 2 mois, mais je reçois un bloc géant qui couvre tous les jours du mois. Si je choisis le jour, ça a l'air bien.
Comment faire pour que jfreecharts arrête d'interpoler des valeurs et dessine simplement un graphique avec un mappage 1: 1 avec les données que je lui donne. Si je lui donne deux entrées pour 2 mois et lui donne une RegularTimePeriod de Month.class, montre seulement deux barres avec deux étiquettes et deux valeurs. Si je lui donne 1000 heures au cours de plusieurs mois, puis d'afficher toutes les heures avec une étiquette et un comte, et ainsi de suite ...
TimeSeries timeSeries = new TimeSeries(title, "Blah", "blah", clazz);
// clazz is one of Day.class, Month.class, Hour.class
for (final ReportRecord reportRecord : records) {
int count = reportRecord.getCount();
Date start = reportRecord.getDateRange().getStart();
RegularTimePeriod period = null;
switch (type) {
case DAY: period = new Day(start); break;
case MONTH: period = new Month(start); break;
case HOUR: period = new Hour(start); break;
}
timeSeries.add(new TimeSeriesDataItem(period, count));
}
return new TimeSeriesCollection(timeSeries);
Merci, Josh