Java 更改JFreeChart甘特图上的范围轴-非工作时间段时间线
我希望我能以正确的方式传达我的信息,并告诉你我希望实现的目标 我在Swing应用程序中使用JFreeChart甘特图来显示任务的调度。能够准备正确的数据集并在面板上获得图表。看起来像这样 总体功能上没有问题,但是我们的任务安排是轮班完成的,所以它不会占用一天24小时的时间。 例如,在我们的案例中,工作时间仅为0800小时-1600小时。我的数据集也符合这一点。如图所示,步骤7是一项持续时间为2小时的任务,从1月22日的1500小时开始,到第二天的0900时结束(两天都是1小时,因为工作时间都是1600小时,只有第二天是0800小时) 但从图表上看,第7步是事件中最长的任务之一,因为图表也考虑了非工作时间。有没有办法改变范围轴/日期轴考虑时间段仅在自定义小时或修剪下来的非工作时间(1600 -800小时在我的情况下)?p> 不幸的是,我没有JFreeChart开发指南来进一步研究 下面是我生成数据集和创建图表的代码片段Java 更改JFreeChart甘特图上的范围轴-非工作时间段时间线,java,swing,rendering,jfreechart,gantt-chart,Java,Swing,Rendering,Jfreechart,Gantt Chart,我希望我能以正确的方式传达我的信息,并告诉你我希望实现的目标 我在Swing应用程序中使用JFreeChart甘特图来显示任务的调度。能够准备正确的数据集并在面板上获得图表。看起来像这样 总体功能上没有问题,但是我们的任务安排是轮班完成的,所以它不会占用一天24小时的时间。 例如,在我们的案例中,工作时间仅为0800小时-1600小时。我的数据集也符合这一点。如图所示,步骤7是一项持续时间为2小时的任务,从1月22日的1500小时开始,到第二天的0900时结束(两天都是1小时,因为工作时间都是
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);
更新:
在广泛查阅互联网后,我发现我可以使用SegmentedTimeLineAPI消除这种非工作时间。以前使用过它的任何人,请帮助我从绘图中删除非工作时间?查看XYTaskDatasetDemo1中的示例,您应该能够做到这一点。它可能是工作获得的副本,因为这将使您能够访问演示源代码
不幸的是,我无法访问《开发人员指南》,但它是否在内部使用分段时间线?谢谢
// 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;
}