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] Comment paramétrer échelle des temps sur axe graphique


Sujet :

2D Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 60
    Points : 39
    Points
    39
    Par défaut [JFreeChart] Comment paramétrer échelle des temps sur axe graphique
    Bonjour,

    Je débute en Java et JFreeChart.
    Je crée un graphe sous la forme d'un diagramme de Gantt. Voici mon code

    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
     
    	    public Gantt2(final String title) {
     
    	        super(title);
     
    	        final IntervalCategoryDataset dataset = createSampleDataset();
     
    	        // create the chart...
    	        final JFreeChart chart = ChartFactory.createGanttChart(
    	            "Tableau de Production au 1er Janvier 2007",  // chart title
    	            null,              // domain axis label
    	            null,             // range axis label
    	            dataset,             // data
    	            false,                // include legend
    	            true,                // tooltips
    	            false                // urls
    	        );
     
    	        final CategoryPlot plot = (CategoryPlot) chart.getPlot();
     
    	        final BarRenderer  renderer = (BarRenderer) plot.getRenderer();
    	        renderer.setSeriesPaint(0, Color.blue);
    	        renderer.setMaximumBarWidth(0.06);
     
    	        File fichier = new File("C:\\graphe.png");
    	        try {
    				ChartUtilities.saveChartAsPNG(fichier, chart,500,270);
    				System.out.println("Fichier enregistré"); 
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    				System.out.println("Erreur : "+e); 
    			}
     
    	    }
    Ensuite je crée mes tâches et sous-tâches (les barres du graphe).

    Comment faire pour pouvoir gérer mon axe des abscisses (représentant une échelle de temps) ? Je souhaiterais que quelque soit la longueur de mes tâches, mon échelle de temps (axe des abscisses) soit de durée fixe (évidemment toujours supérieur à la plus longue des tâches).
    D'avance merci.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 65
    Points
    65
    Par défaut Adieù barraca
    Envoie un peu le code de createSampleDataset() pour voir

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 60
    Points : 39
    Points
    39
    Par défaut
    Merci pour ta réponse.

    Voici le code :

    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
     
     private IntervalCategoryDataset createSampleDataset() {
     
    	        final TaskSeries s1 = new TaskSeries("Période");
     
    	        final Task t1 = new Task(
    	            "Client1 - Jean Dupont", date(21,Calendar.JANUARY, 2007), date(5, Calendar.FEBRUARY, 2007)
    	        );
    	        s1.add(t1);
     
    	        final Task t2 = new Task(
    	            "Client1 - Patrick Durant", date(16, Calendar.JANUARY, 2007), date(30, Calendar.JANUARY,2007)
    	        );
    	        s1.add(t2);
     
    	        // here is a task split into two subtasks...
    	        final Task t3 = new Task(
    	            "Tclient2 - René Dubois", 
    	            date(21, Calendar.JANUARY, 2007), date(29, Calendar.FEBRUARY, 2007)
    	        );
    	        final Task st31 = new Task(
    	            "RD1", 
    	            date(22, Calendar.JANUARY, 2007), date(2, Calendar.FEBRUARY, 2007)
    	        );
    	        final Task st32 = new Task(
    	            "RD2", 
    	            date(20,  Calendar.FEBRUARY, 2007), date(29, Calendar.FEBRUARY, 2007)
    	        );
    	        t3.addSubtask(st31);
    	        t3.addSubtask(st32);
    	        s1.add(t3);
     
     
    	        final TaskSeriesCollection collection = new TaskSeriesCollection();
    	        collection.add(s1);
     
    	        return collection;
    	    }
     
     private static Date date(final int day, final int month, final int year) {
     
    	        final Calendar calendar = Calendar.getInstance();
    	        calendar.set(year, month, day);
    	        final Date result = calendar.getTime();
    	        return result;
     
    	    }

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Points : 65
    Points
    65
    Par défaut Issa Nissa !
    Tu ajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Date minDate = date(1,0,2007) ;
    Date maxDate = date(1,3,2007) ;
    DateAxis myAxis = (DateAxis) (plot.getRangeAxis()) ;
    myAxis.setRange(minDate, maxDate) ;
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private static Date date(final int day, final int month, final int year) {
    final Calendar calendar = Calendar.getInstance();
    calendar.set(year, month, day);
    final Date result = calendar.getTime();
    return result;
    }
    C'est ça que tu voulais ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 60
    Points : 39
    Points
    39
    Par défaut
    Exactement, merci à toi !

    Et Issa Nissa ...

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

Discussions similaires

  1. [JFreeChart] Changer les échelles des axes
    Par Ixigrec59 dans le forum 2D
    Réponses: 0
    Dernier message: 04/02/2015, 18h21
  2. [JFreeChart] Fixer l'échelle des abscisses
    Par ahury dans le forum 2D
    Réponses: 1
    Dernier message: 03/05/2007, 17h14
  3. Réponses: 4
    Dernier message: 25/04/2007, 20h18
  4. [VB.Net] Comment effacer des traits sur un graphique ?
    Par bert24 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/09/2005, 14h20

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