IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

[JFreeChart] diagramme de Gantt


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 42
    Par défaut [JFreeChart] diagramme de Gantt
    Salut tout le monde,

    Je suis débutant dans l'utilisation de JFreeChart que je dois utiliser pour afficher des diagrammes de Gantt.
    Au fait je voudrais personnaliser l'axe des temps de mon diagramme de Gantt pour qu'il soit gradué de 0 à la date de fin de la dernière tâche par pas de 1. Ceci étant, je voudrais qu'il m'affiche le diagramme de Gantt avec les valeurs de dates de début et de fin de chaque tache qui sont des entiers, mais j'arrive pas à trouver comment faire.

    Si vous pouvez m'aider avec des exemples, suggestions, liens de tuto ou de cours... vos réponses sont les bienvenues. car je trouve peu d'exemple sur les diagrammes de Gantt avec Jfreechart et que la plupart utilise les dates en jour-mois-année... , ce que je ne veux pas avoir.

    Merci de votre réponse.

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Je suppose que les dates que tu as sous forme d'entiers représentent des jours de 1 à 31 non ?

    L'idéal serait d'avoir des dates sur lesquelles tu appliques un format pour n'afficher que les jours.

    Quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
         DateAxis dateAxis=(DateAxis) categoryplot.getRangeAxis() ;
         DateFormat dateFormat=new SimpleDateFormat("dd") ;
         dateAxis.setDateFormatOverride(dateFormat) ;
         dateAxis.setTickUnit(new DateTickUnit(DateTickUnit.DAY, 1));

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 42
    Par défaut
    Bonjour et merci de ta réponse

    J'ai essayé d'ajouter le bout de code, mais ca m'enlève complètement la graduation.
    J'ai mis les 2 diagrammes en pièces jointes.

    Au fait la graduation se fait par rapport aux durées d'exécution de l'ensemble des opérations. Par exemple, si la premiere opération a une durée de 5, la seconde 10 et la 3eme 20 . Ce qui fait que l''axe des abscisses sera gradué de 0 à 35 et non de 0 à 31.
    Images attachées Images attachées   

  4. #4
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Il est normal que ça ne fonctionne pas avec le bout de code que j'ai donné car celui-ci fonctionne si tes données représentent des jours.
    Or, dans ton cas, ce sont des durées.

    Comment fais-tu pour afficher les durées ?
    tu les as en secondes et tu appliques un format dessus ?

    Peux-tu montrer un peu de code ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 42
    Par défaut
    Voila la classe qui me permet d'afficher le diagramme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
     
    public class SwingExempleGantt extends ApplicationFrame{
     
    	public SwingExempleGantt(String title)
    	{
    	    super(title);
    	    JFrame frame = new JFrame("Hello World!");
    	    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    	    JPanel panel;
    	    panel = new JPanel(new BorderLayout()); 
     
    	    IntervalCategoryDataset dataset = createDataset();
     
            final JFreeChart chart = ChartFactory.createGanttChart(
                    "Diagramme de Gantt",  // chart title
                    "Machines",              // domain axis label
                    "Durée",              // range axis label
                    dataset,             // data
                    true,                // include legend
                    true,                // tooltips
                    false                // urls
                );
     
            final CategoryPlot plot = (CategoryPlot) chart.getPlot();
            // plot.getDomainAxis().setMaxCategoryLabelWidthRatio(10.0f);
            final CategoryItemRenderer renderer = plot.getRenderer();
            CategoryItemLabelGenerator generator = new    StandardCategoryItemLabelGenerator("{2}", new DecimalFormat("0.00"));
            renderer.setBaseItemLabelGenerator(generator);
     
            plot.getRenderer().setSeriesPaint(0, new Color(128, 0, 0));
            plot.getRenderer().setSeriesPaint(1, new Color(0, 0, 255));
            renderer.setSeriesPaint(0, Color.blue);
            renderer.setBaseItemLabelsVisible(true);
     
            // Imposer que les étiquettes des graduations de l'axe des ordonnées soient des entiers
     
           // add the chart to a panel...
            ChartPanel chartPanel = new ChartPanel(chart,
            					true,  //propreties
            					true,  //save
            					true,	//print
            					true,	//zoom
            					true);	//tooltips
     
            chartPanel.setPreferredSize(new java.awt.Dimension(400, 270));
            setContentPane(chartPanel);
     
            setContentPane(panel); 
    	    setSize(600, 350); 
            panel.add(chartPanel);
     
    	    frame.pack();
    	    frame.setLocationRelativeTo(null);
    	    frame.setVisible(true);
    	}
     
     
    	/**
         * Creates a sample dataset for a Gantt chart.
         *
         * @return The dataset.
         */
     
        public static IntervalCategoryDataset createDataset() {
     
            TaskSeries s1 = new TaskSeries("Scheduled");
     
            // Machine1
            final Task M1 = new Task("Machine M1",
    				new SimpleTimePeriod( new Integer(2), new Integer(15)));
     
    				//sous tache1
    				final Task O1 = new Task("O1",
    						new SimpleTimePeriod( new Date(2), new Date(7)));
    				O1.setPercentComplete(1.0);
     
    				// sous tache2
    				final Task O2 = new Task("O2",
    						new SimpleTimePeriod( new Date(10), new Date(15)));
    				O2.setPercentComplete(1.0);
     
    				//ajout des sous taches 
    				M1.addSubtask(O1);
    				M1.addSubtask(O2);
    				s1.add(M1);
     
    		// Machine2
            final Task M2 = new Task("Machine M2",
    				new SimpleTimePeriod( new Date(0), new Date(10)));
     
            		//sous tache21: operation O3
    				final Task O3 = new Task("O3",
    								new SimpleTimePeriod( new Date(0), new Date(7)));
    				O3.setPercentComplete(1.0);
     
    				// sous tache22: opereration O4
    				final Task O4 = new Task("O4",
    								new SimpleTimePeriod( new Date(5), new Date(10)));	
    				O4.setPercentComplete(1.0);
     
     
    				//ajout des sous taches 
     
    				M2.addSubtask(O3);
    				M2.addSubtask(O4);
    				s1.add(M2);		
     
            TaskSeriesCollection collection = new TaskSeriesCollection();
            collection.add(s1);
     
            return collection;
        }
     
        /**
         * Utility method for creating <code>Date</code> objects.
         *
         * @param day  the date.
         * @param month  the month.
         * @param year  the year.
         *
         * @return a date.
         */
        private static Date date(int day, int month, int year) {
     
            Calendar calendar = Calendar.getInstance();
            calendar.set(year, month, day);
            Date result = calendar.getTime();
            return result;
        }
     
     
        /**
         * Creates a chart.
         * 
         * @param dataset  the dataset.
         * 
         * @return The chart.
         */
        private JFreeChart createChart(IntervalCategoryDataset dataset) {
            JFreeChart chart = ChartFactory.createGanttChart(
                "Gantt Chart Demo",  // chart title
                "Task",              // domain axis label : domaine des ordonnées Tache Num
                "Date",              // range axis label : domaine des abcsisses
                dataset,             // data
                true,                // include legend
                true,                // tooltips
                false                // urls
            );    
            chart.getCategoryPlot().getDomainAxis().setMaximumCategoryLabelWidthRatio(10.0f);
            return chart;    
        }
     
    }

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 42
    Par défaut
    Je veux avoir quelque chose du genre, comme l'image en pièce jointe.
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/05/2010, 12h15
  2. Réponses: 1
    Dernier message: 30/07/2008, 17h43
  3. Réponses: 0
    Dernier message: 13/12/2007, 17h34
  4. Diagramme de Gantt avec JFreeChart 1.0.3 Demo
    Par mediateur59 dans le forum BIRT
    Réponses: 4
    Dernier message: 28/04/2007, 00h22
  5. algo de diagramme de Gantt
    Par nanarr dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 25/05/2005, 09h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo