2014-01-22 2 views
1

Надеюсь, я смогу правильно передать свое сообщение и рассказать вам, чего я хочу достичь.Изменение оси диапазона на JFreeChart GanttChart - Сегментная линия для нерабочих часов

Я использую JFreeChart GanttChart в своем приложении Swing для отображения планирования задач. Был в состоянии подготовить правильный набор данных и получил диаграмму на панели. Это выглядит примерно так.

Original GanttChart

Там нет никаких проблем, как например с общей функциональностью, но наша задача планирования осуществляется посменно, так что не занимает все 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. Любой, кто использовал его раньше, пожалуйста, помогите мне в удалении нерабочих часов от участка?

ответ

1

Рассматривая пример в XYTaskDatasetDemo1, вы можете сделать это. Это может быть работа, получая копию developer guide как это даст вам доступ к демо исходному коду

enter image description here

+0

К сожалению, у меня нет доступа к руководству разработчика, но делает это использование SegmentedTimeline внутри? благодаря – Napster

 Смежные вопросы

  • Нет связанных вопросов^_^