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

API standards et tierces Java Discussion :

Graphique dynamique avec JFreeChart


Sujet :

API standards et tierces Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 80
    Points
    80
    Par défaut Graphique dynamique avec JFreeChart
    Bonjour,

    j'affiche un graphique de point grâce à XYPlot de JFreeChart.
    J'arrive à récupérer les coordonnées des point où l'utilisateur clique.

    J'aimerai pouvoir afficher ces points au fur et à mesure.
    Mon graphique est dans un ChartPanel.
    J'ai essayé de faire chartPanel.repaint(); mais ça ne fonctionne pas.

    Je mets ma fonction d'affichage du graphique pour mieux comprendre :
    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
     
    private JFreeChart chartGeo;
    private XYPlot plot2;
    private XYPlot plot3;
     
    public JFreeChart affichageGraphe(int nombrePoints, String[] bufferLecture){
     
    		// Créer et afficher graphique XY
    		XYSeries seriesGeo = new XYSeries("Serie1");
    		XYSeries seriesGeo2 = new XYSeries("Serie2");
    		XYSeries seriesPtsCliques = new XYSeries("Serie3");
     
    		for (int i=13 ; i<nombrePoints ; i+=19)
    		{
    			double valeur1 = Double.parseDouble(bufferLecture[i]);	
    			double valeur2 = Double.parseDouble(bufferLecture[i+1]);	
     
    			seriesGeo.add(valeur1, valeur2);	
    		} 
     
    		for (int i=13 ; i<nombrePointsClique*2 ; i+=19)
    		{
    			seriesGeo.add(bufferClique[i], bufferClique[i+1]);	
    		} 
     
     
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    		XYDataset xyDatasetGeo = new XYSeriesCollection(seriesGeo);
    		XYDataset xyDatasetGeo2 = new XYSeriesCollection(seriesGeo2);
    		XYDataset xyDatasetPointsCliques = new XYSeriesCollection(seriesPtsCliques);
     
    		chartGeo = ChartFactory.createScatterPlot("", "", "", xyDatasetGeo, PlotOrientation.VERTICAL, false, true, false);
     
     
    		//3. Mise en place du nouvelle axe dans le diagramme.
    		plot2 = (XYPlot) chartGeo.getPlot();
    		plot2.setDataset(2, (XYDataset) xyDatasetGeo2);		
     
    		//4.Rendu du tracé
    		XYItemRenderer rendu2= new XYLineAndShapeRenderer(false,true);
    		rendu2.setSeriesPaint(2, Color.green);
    		plot2.setRenderer(2,rendu2);	
     
     
    		//3. Mise en place du nouvelle axe dans le diagramme.
    		plot3 = (XYPlot) chartGeo.getPlot();
    		plot3.setDataset(3, (XYDataset) xyDatasetPointsCliques);		
     
    		//4.Rendu du tracé
    		XYItemRenderer rendu3= new XYLineAndShapeRenderer(false,true);
    		rendu3.setSeriesPaint(3, Color.green);
    		plot3.setRenderer(2,rendu3);
     
    		return chartGeo;
    	}
    Ainsi que la fonction écoutant les clique sur le ChartPanel :
    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
     
    public void chartMouseClicked(ChartMouseEvent action) {
     
    		ValueAxis xAxis = plot2.getDomainAxis();
    		ValueAxis yAxis = plot2.getRangeAxis();
    		double mouseX = xAxis.java2DToValue(action.getTrigger().getX(), chartPanel.getScreenDataArea(), plot2.getDomainAxisEdge());
    		double mouseY = yAxis.java2DToValue(action.getTrigger().getY(), chartPanel.getScreenDataArea(), plot2.getRangeAxisEdge());
     
    		System.out.println("mouseX : " + mouseX);
    		System.out.println("mouseY : " + mouseY);
     
    		bufferArpentage[emplacementCurseur ] = mouseX;
    		bufferArpentage[emplacementCurseur +1] = mouseY;
     
    		emplacementCurseur += 2;
    		nombrePointsClique++;	
     
    		chartGeo = affichageGraphe(nombreLignes, contenuFichier);
     
    		this.repaint();
                    chartPanel.repaint();
    	}
    Savez-vous comment faire ?

    Merci.
    Bonne journée.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 80
    Points
    80
    Par défaut
    Personne n'a une idée ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/01/2015, 15h21
  2. [XL-2003] Graphique dynamique avec des zéros en début de série
    Par bolide7 dans le forum Excel
    Réponses: 4
    Dernier message: 12/04/2010, 20h35
  3. [WD14] Partie graphique dynamique avec interactions utilisateur
    Par sphynxounet dans le forum WinDev
    Réponses: 2
    Dernier message: 01/12/2009, 20h39
  4. Graphique dynamique avec choix des données à comparer
    Par jktec dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/04/2008, 13h39
  5. Graphique dynamique avec JFreeChart
    Par dafit53 dans le forum 2D
    Réponses: 1
    Dernier message: 01/04/2008, 11h20

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