Надеюсь, я смогу правильно передать свое сообщение и рассказать вам, чего я хочу достичь.Изменение оси диапазона на JFreeChart GanttChart - Сегментная линия для нерабочих часов
Я использую JFreeChart GanttChart в своем приложении Swing для отображения планирования задач. Был в состоянии подготовить правильный набор данных и получил диаграмму на панели. Это выглядит примерно так.
Там нет никаких проблем, как например с общей функциональностью, но наша задача планирования осуществляется посменно, так что не занимает все 24 часа в сутки. Скажем, например, в нашем случае часы работы - только с 08 ч. 00 м. - 1600 ч. Мой набор данных также соответствует этому. Как вы можете видеть на изображении, шаг 7 - это задание продолжительностью 2 часа, которое начинается на 1500 часов 22 января и заканчивается в 09:00 на следующий день (1 час в оба дня, так как часы работы заканчиваются на 1600 и запускаются в 08:00 только на следующий день).
Но, глядя на график, шаг 7 является одной из самых длинных задач в этом случае, просто потому, что график учитывает также нерабочие часы. Есть ли способ изменить ось оси/ось диапазона, чтобы учитывать периоды времени только в пользовательских часах или обрезать нерабочие часы (1600-0800 часов в моем случае) ?.
К сожалению, у меня нет руководства JFreeChart Dev для дальнейшего зондирования.
Ниже приведены мои фрагменты кода для создания набора данных и создания диаграммы
for (int i = 0; i < tempList.size(); i++) {
GanttChartPojo tempGCPojo = new GanttChartPojo();
tempGCPojo = tempList.get(i);
s1.add(new Task(tempGCPojo.getTaskStepDesc(), tempGCPojo.getEST(), tempGCPojo.getEFT()));
s2.add(new Task(tempGCPojo.getTaskStepDesc(), tempGCPojo.getLST(), tempGCPojo.getLFT()));
}
}
}
// Add the task series to a TaskSeriesCollection
final TaskSeriesCollection collection = new TaskSeriesCollection();
collection.add(s1);
collection.add(s2);
Создание диаграммы Код
// create the chart...
final JFreeChart chart = ChartFactory.createGanttChart(
"Scheduling of Task Steps : Maintenance Event "+eventKey, // chart title
"Task", // x axis label
"Time", // y axis label
dataset, // data
true, // include legend
true, // tooltips
false // urls
);
chart.setBackgroundPaint(Color.pink);
return chart;
}
UPDATE: После поиска в Интернете широко, я обнаружил, что я могу устранить эти нерабочие часы, используя SegmentedTimeline API. Любой, кто использовал его раньше, пожалуйста, помогите мне в удалении нерабочих часов от участка?
К сожалению, у меня нет доступа к руководству разработчика, но делает это использование SegmentedTimeline внутри? благодаря – Napster