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

 Java Discussion :

Etapes de réalisation d'une courbe JFreeChart


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Par défaut Etapes de réalisation d'une courbe JFreeChart
    Bonjour,

    après m'être renseigné sur la création de courbes avec JFreeChart j'ai obtenu de nombreux exemples mais aucun construit de la même manière... J'ai passé beaucoup de temps à "bidouiller", je pense que le terme est bien choisi.

    Finalement je viens à vous pour savoir s'il y avait des étapes à suivre afin de s'en sortir au mieux (par exemple : 1/création de la fenetre, 2/création du tableau de données, ...)

    voici ce que j'ai réalisé, qui n'affiche rien du tout...
    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
    public static void displayInGraph(HashMap<String, ArrayList<String>> tagPrefixs, HashMap<String, ArrayList<String>> tagSuffixs, Date startDate, Date endDate) 
    	{
    		JPanel pnl;
    		List<NamedPropertyReference> references = getReferences(tagPrefixs,tagSuffixs);
     
    		pnl = new JPanel(new BorderLayout());
     
    		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
     
    		//Recupère les données
    		for (int i=0; i<references.size(); i++)
    		{
    			HistoryEntry[] entries = xxx.getPropertyValues(references.get(i), startDate, endDate);
    			dataset.addValue(entries[i].value, nomTag, new Date(entries[i].timestamp).toString());
    		}
    		JFreeChart barChart = ChartFactory.createBarChart(
                "Nombre d'ouverture manuelle",
                "Temps en minutes", 
                "Valeur", 
                dataset,
                PlotOrientation.VERTICAL,
                true,
                true,
                true
            );
    		ChartPanel cPanel = new ChartPanel(barChart);
    		pnl.add(cPanel);
    		cPanel.setVisible(true);
    		pnl.setVisible(true);	
    	}
    Merci beaucoup pour votre aide !
    Yokooo

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    il semble te manquer la partie fenêtre si je ne m'abuse au vu de ton code. Utilises tu une JFrame quelque part?
    Car le setVisible doit être réservé à une JFrame en général, il ne sert à rien sur les JPanels.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Par défaut
    Ok, merci je viens effectivement de mettre une JFrame et ça marche, 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    public static void displayInGraph(HashMap<String, ArrayList<String>> tagPrefixs, HashMap<String, ArrayList<String>> tagSuffixs, Date startDate, Date endDate) 
    	{
    		List<NamedPropertyReference> references = getReferences(tagPrefixs,tagSuffixs);
    		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
     
    		//Recupère les historiques
    		for (int i=0; i<references.size(); i++)
    		{
    			HistoryEntry[] entries = xxx.getPropertyValues(references.get(i), startDate, endDate);
    			for (int j=0; j<entries.length; j++)
    			{
    				dataset.addValue(entries[j].value,references.get(i).getName(), new Date(entries[j].timestamp).toString());
    				System.out.println(entries[j].value+ references.get(i).getName()+ new Date(entries[j].timestamp).toString());
    			}
    		}
     
    		// Création du graphique
    		JFreeChart barChart = ChartFactory.createBarChart3D(
                "Nombre d'ouverture manuelle",
                "Temps en minutes", 
                "Valeur", 
                dataset,
                PlotOrientation.VERTICAL,
                true,
                true,
                false);
     
    		// Affichage du graphique
    		ChartFrame frame1 = new ChartFrame("Statistiques", barChart);
    		frame1.setVisible(true);
    		frame1.setSize(600,600);
     
    		// Modification des labels des axes (taille, police)
    		CategoryPlot plot = barChart.getCategoryPlot();
    		NumberAxis axe1 = (NumberAxis) plot.getRangeAxis();
    		axe1.setTickLabelFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 12));
    		axe1.setLabelFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 12));
     
    		Axis axe2 = plot.getDomainAxis();
    		axe2.setTickLabelFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 8));
    		axe2.setLabelFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 8));
     
    		// Labels des abcisses à la verticale
    		CategoryAxis axis = plot.getDomainAxis();
    		axis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_90);		
    	}
    Autre question, en abscisse j'ai un temps (converti en string) et je souhaiterais faire un affichage tous les quarts d'heure. C'est à dire si j'ai plusieurs fois un état à 1 de ma courbe en 15min, il faudrait qu'ils soient additionnés...

    Une idée ?
    Merci

    EDIT: Je viens d'avancer dessus, je pense que ma solution doit pas être loin de la bonne solution (enfin ce n'est qu'une supposition... ^^) mais je bloque à un endroit. Comment rajouter 15minute à une variable de format "Date" ?

    Dans mon code j'ai mis simplement "+15" mais bien entendu cela ne fonctionne pas... Suis je obligé de repasser en Calendar ? Si oui à quel endroit dois je le faire ?

    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
    public static void displayInGraph(HashMap<String, ArrayList<String>> tagPrefixs, HashMap<String, ArrayList<String>> tagSuffixs, Date startDate, Date endDate) 
    	{
    		List<NamedPropertyReference> references = getReferences(tagPrefixs,tagSuffixs);
    		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    		DefaultCategoryDataset data = new DefaultCategoryDataset();
     
    		//Recupère les historiques
    		for (int i=0; i<references.size(); i++)
    		{
    			Date date = null;
    			date = startDate;
    			HistoryEntry[] entries = CMToolkit.getPropertyValues(references.get(i), startDate, endDate);
    			while (date.before(endDate)){
    				double val = 0;
    				for (int j=0; j<entries.length; j++)
    				{
    					dataset.addValue(entries[j].value,references.get(i).getName(), new Date(entries[j].timestamp).toString());
     
    						if (new Date(entries[j].timestamp).before(date+15)){
    							val = val + entries[j].value;
    						}
    						else{
    							data.addValue(val,references.get(i).getName(), new Date(entries[j].timestamp).toString());
    							date = date + 15;
    						}
     
    				}
     
    				System.out.println(entries[j].value+ references.get(i).getName()+ new Date(entries[j].timestamp).toString());
    			}
    		}
    Merci

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

Discussions similaires

  1. [JFreeChart] Comment Ecrire sur une courbe ?
    Par ButterflyLady dans le forum 2D
    Réponses: 1
    Dernier message: 09/09/2010, 19h00
  2. Mise à jour d'une courbe avec JFreeChart
    Par Gouyon dans le forum Interfaces Graphiques en Java
    Réponses: 0
    Dernier message: 18/06/2010, 09h17
  3. [JFreeChart] Création d'une courbe
    Par Yokooo dans le forum 2D
    Réponses: 4
    Dernier message: 27/07/2009, 21h50
  4. [JFreeChart] probleme d'affichage d'une courbe
    Par rimas2009 dans le forum 2D
    Réponses: 0
    Dernier message: 10/01/2009, 16h58
  5. [JFreeChart] dessiner une courbe
    Par vpourchet dans le forum 2D
    Réponses: 4
    Dernier message: 18/04/2008, 11h24

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