Hallo zusammen,
ich habe diverse Probleme mit JFreeChart, die ich trotz Doku und googeln nicht lösen kann. Ziel ist die Darstellung eines Schichtplans. Auf der x-Achse wird die Zeit dargestellt, auf der y-Achse werden bestimmte Gruppen dargestellt (Zahlenwerte), im (Gantt-)Diagramm soll für jeden Benutzer für jeden geplanten Einsatz ein waagerechter Balken angezeigt werden, siehe angehängtes Bild.
Grundsätzlich ließ sich das Diagramm relativ einfach mit JFreeChart erstellen, exemplarisch hier ein Code-Auszug (nicht übersetzbar):
Leider bekomme ich folgende Probleme nicht in den Griff:
(1) Da für einen Bediener (TaskSeries) beliebig viele Einsätze geplant sein können, musste ich mit SubTasks arbeiten, da ansonsten nur ein Task angezeigt würde. Ich kriege es aber nicht hin, dass für die Subtasks Labels innerhalb der Balken angezeigt werden. Wenn ich nur mit Tasks arbeite, funktioniert dies mit dem folgenden Codeschnipsel, mit Subtasks leider nicht:
(2) Ich kann die Gruppen (y-Achse, Tasks) nicht sortieren. Obwohl die Tasks in aufsteigender Reihenfolge erzeugt werden, sind die Gruppen in der Darstellung unsortiert.
(3) Die Balken werden vertikal verschoben dargestellt (siehe Bild). Der grüne Balken bei Gruppe 3 ist exakt vertikal zentriert, der rosa Balken bei Gruppe "alle" ist vertikal nach unten verschoben.
Kennt sich jemand mit JFreeChart aus und kann mir eventuell weiterhelfen? Oder gibt es andere Werkzeuge, mit denen solch ein Plan (einfacher) realisierbar ist?
Gruß,
AMiGA
ich habe diverse Probleme mit JFreeChart, die ich trotz Doku und googeln nicht lösen kann. Ziel ist die Darstellung eines Schichtplans. Auf der x-Achse wird die Zeit dargestellt, auf der y-Achse werden bestimmte Gruppen dargestellt (Zahlenwerte), im (Gantt-)Diagramm soll für jeden Benutzer für jeden geplanten Einsatz ein waagerechter Balken angezeigt werden, siehe angehängtes Bild.
Grundsätzlich ließ sich das Diagramm relativ einfach mit JFreeChart erstellen, exemplarisch hier ein Code-Auszug (nicht übersetzbar):
Code:
// Create dataset
TaskSeriesCollection collection = new TaskSeriesCollection();
for(UMap row : values)
{
String usrName = row.getString(SHIFTCAL.T_USRNAME);
TaskSeries series = collection.getSeries(usrName);
if(series == null)
{
series = new TaskSeries(usrName);
collection.add(series);
}
Integer alarmGrp = row.getInteger(SHIFTCAL.T_ALARMGRP);
String taskName = alarmGrp != null ? alarmGrp + "" : "alle";
Task task = new Task(taskName, new SimpleTimePeriod(dateFrom, dateTo));
Task parent = series.get(taskName);
if(parent == null)
{
parent = (Task)task.clone();
parent.addSubtask(task);
series.add(parent);
}
else
{
parent.addSubtask(task);
}
}
// Create chart
JFreeChart chart = ChartFactory.createGanttChart(
"Schichtplan", // chart title
"Alarmgruppe", // y-axis label
"Zeitachse", // x-axis label
collection, // data
true, // include legend
true, // tooltips
false // urls
);
Leider bekomme ich folgende Probleme nicht in den Griff:
(1) Da für einen Bediener (TaskSeries) beliebig viele Einsätze geplant sein können, musste ich mit SubTasks arbeiten, da ansonsten nur ein Task angezeigt würde. Ich kriege es aber nicht hin, dass für die Subtasks Labels innerhalb der Balken angezeigt werden. Wenn ich nur mit Tasks arbeite, funktioniert dies mit dem folgenden Codeschnipsel, mit Subtasks leider nicht:
Code:
GanttRenderer renderer = (GanttRenderer)plot.getRenderer();
renderer.setBasePositiveItemLabelPosition(
new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.BOTTOM_CENTER));
renderer.setBaseItemLabelsVisible(true);
(2) Ich kann die Gruppen (y-Achse, Tasks) nicht sortieren. Obwohl die Tasks in aufsteigender Reihenfolge erzeugt werden, sind die Gruppen in der Darstellung unsortiert.
(3) Die Balken werden vertikal verschoben dargestellt (siehe Bild). Der grüne Balken bei Gruppe 3 ist exakt vertikal zentriert, der rosa Balken bei Gruppe "alle" ist vertikal nach unten verschoben.
Kennt sich jemand mit JFreeChart aus und kann mir eventuell weiterhelfen? Oder gibt es andere Werkzeuge, mit denen solch ein Plan (einfacher) realisierbar ist?
Gruß,
AMiGA
Anhänge
Zuletzt bearbeitet von einem Moderator: