2014-12-27 2 views
0

Я работаю с jFreeChart на Eclipse (в Windows), и я хочу нарисовать диаграмму gantt для процессоров.
Я делаю диаграмму XYрисунок диаграммы с JFreeChart

Но моя программа нарисовала мне строку с только P0. Я хочу что-то вроде

  • ничьих от 0 до 10 -> P0
  • затем от 10 до 20 -> рисует H
  • затем от 20 до 30 ----> рисую ждать
  • от 30 до 40 ---> рисуем P0
  • от 35 до 40 -> рисуем H

Код:

import javax.swing.JFrame; 
    import org.jfree.chart.ChartFactory; 
    import org.jfree.chart.ChartPanel; 
    import org.jfree.chart.JFreeChart; 
    import org.jfree.chart.plot.PlotOrientation; 
    import org.jfree.data.xy.XYDataset; 
    import org.jfree.data.xy.XYSeries; 
    import org.jfree.data.xy.XYSeriesCollection; 

    public class JFreeChartLineChartExample extends JFrame { 

    private static final long serialVersionUID = 1L; 

    public JFreeChartLineChartExample(String applicationTitle, String chartTitle) { 
    super(applicationTitle); 

    // based on the dataset we create the chart 
    JFreeChart pieChart = ChartFactory.createXYLineChart(chartTitle, "Time", "Processors",  
     createDataset(),PlotOrientation.VERTICAL, true, true, false); 

    // Adding chart into a chart panel 
    ChartPanel chartPanel = new ChartPanel(pieChart); 

    // settind default size 
    chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); 

    // add to contentPane 
    setContentPane(chartPanel); 
    } 

    private XYDataset createDataset() { 

    final XYSeries P0 = new XYSeries("P0"); 
    P0.add(0, 1); 
    P0.add(10, 1); 

    P0.add(35, 1); 
    P0.add(50, 1); 
    P0.add(85, 1); 
    P0.add(110, 1); 


    final XYSeries P2 = new XYSeries("P2"); 



    final XYSeries P1 = new XYSeries("P1"); 



    final XYSeries H = new XYSeries("H"); 
    H.add(10, 1); 
    H.add(20, 1); 
    H.add(45, 1); 
    H.add(100, 1); 


    final XYSeries wait = new XYSeries("wait"); 
    wait.add(80, 1); 
    wait.add(90, 1); 
    wait.add(105, 1); 



    final XYSeriesCollection dataset = new XYSeriesCollection(); 
    dataset.addSeries(P0); 
    dataset.addSeries(P2); 
    dataset.addSeries(P1); 
    dataset.addSeries(H); 
    dataset.addSeries(wait); 

    return dataset; 

     } 

    public static void main(String[] args) { 
    JFreeChartLineChartExample chart = new JFreeChartLineChartExample(" GANTT ", " GANTT"); 
    chart.pack(); 
    chart.setVisible(true); 
    } 
    } 
+0

В чем вопрос? – ManyQuestions

+0

, когда я выполняю свою программу, у меня есть строка (красная линия только PO), что я хочу, от 0 до 10 рисовать P0 с (красная линия), затем от 10 до 20 рисовать H, например, с (синей линией) от 20 до 30 подождите (с зеленой линией) –

+0

, а затем вернитесь к P0 и нарисуйте его красной линией от 30 до 400 для примера. –

ответ

0

Насколько я понял, вы хотите иметь пробелы в своих наборах данных. Ваш код рисует прямую линию от 0 до 110 для набора данных P0, потому что JFreeChart не знает, что вы хотите иметь пробелы.

Чтобы добавить пробелы, вы должны добавить значения null в свои наборы данных.

Например P0 должен быть создан следующим образом:

final XYSeries P0 = new XYSeries("P0"); 
P0.add(0, 1); 
P0.add(10, 1); 
P0.add(11, null); 
P0.add(35, 1); 
P0.add(50, 1); 
P0.add(51, null); 
P0.add(85, 1); 
P0.add(110, 1); 

Вы также можете посмотреть на специальных классов Ганта, предусмотренных JFreeChart. В демонстрации JFreeChart есть несколько примеров.

+0

спасибо, что я использую gantt, теперь спасибо за идею, хотя –