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 :

probleme Jfreechart avec mysql


Sujet :

2D Java

  1. #1
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut probleme Jfreechart avec mysql
    Bonsoir,
    j'ai une base de données de la forme suivante :

    donc voila, j'ai reussi pour le moment a dessiner ma courbe en fonction du jour et en fonction d'heure grace aux requetes suivantes :
    heure : select heure,ftp from ftptable ;
    et jour : select date,avg(ftp) from ftptable group by date;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    final TimeSeries series = new TimeSeries("rate", Minute.class);
    try {
    while(rs.next()){
     
    	java.sql.Timestamp v1;
     
    		v1 = rs.getTimestamp(""+Heure+"");
     
     	double v2=rs.getFloat(""+ftp+"");
     
     	series.addOrUpdate( new Minute(v1), v2);
     
     }
    Quand j'essaye de tracer en fonction du mois et d'année,j'execute ces requetes :
    mois : select month(date),avg(ftp) from ftptable group by month(date) ;
    ca marche en mysql, sauf qu'en java, le retour de month(date) est de type int, donc je peux pas l'utiliser pour tracer une courbe en fonction de mois...
    qqu'un a une idée comment proceder?
    merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut
    Bonjour,

    Il faudrait quoi comme type? float? double?
    Pourquoi pas essayer un cast :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    float maVariableFloat = (float) maVariableInt;
    double maVariableDouble = (double) maVariableInt;
    Voila j'espère avoir répondu à la question.


    Bonne journée.

  3. #3
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    Enfet le retour de ma requete month(date) est de type int...Hors pour tracer une courbe jfreecharte il faut qu'en abcisse un type DATE....
    donc je peux pas tracer une courbe en fonction de month(date)

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut
    Ah d'accord je n'avais pas compris, il faut donc créer un objet date:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date date = new Date(year, month, day);

    Il n'existe pas de constructeur de la classe Date avec juste le paramètre "year". mais il suffit de mettre les 2 autres paramètres avec une valeur par défaut (1 par exemple).


    Voila

  5. #5
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    enfet ca m'affiche toute une date alors que je dois afficher le mois et l'année seulement
    j'ai essayé ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while(rs.next()){
     
    				int v1;
     
    					v1 = rs.getInt("month(date)");
     
    			 	double v2=rs.getFloat("avg(ftp)");
    			 	Calendar cal = Calendar.getInstance();
    			 	series.addOrUpdate( new Month(v1,cal.get(Calendar.YEAR)), v2);
     
    			 }
    			 rs.close();
    on me dis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.lang.IllegalArgumentException: Month outside valid range.
    	at org.jfree.data.time.Month.<init>(Month.java:113)

  6. #6
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    c'est bizarre les valeurs de month(date) sont de retour entier

  7. #7
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    voila ma derniere version du 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
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
        final TimeSeries series = new TimeSeries("", Month.class);
                 ResultSet rs = con.execute("select month(date),avg(ftp) from ftptable where(year(date)=year(now())) group by month(date);");   
     
                 while(rs.next()){
     
                    int v1;
     
                       v1 = rs.getInt("month(date)");
     
                     double v2=rs.getFloat("avg(ftp)");
                     Calendar cal = Calendar.getInstance();
                     series.addOrUpdate( new Month(v1,cal.get(Calendar.YEAR)), v2);
     
                  }
                  rs.close();
                  DateAxis domain = new DateAxis("Time");
     
                        NumberAxis range = new NumberAxis("Débit en Ko/s");
                      final TimeSeriesCollection dataset = new TimeSeriesCollection();
                      dataset.addSeries(series);
                      dataset.setDomainIsPointsInTime(true);
                      XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false);
                      XYPlot plot = new XYPlot(dataset, domain, range, renderer);
                      DateAxis axis = (DateAxis) plot.getDomainAxis();
                    axis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));
     
                      plot.setBackgroundPaint(Color.lightGray);
                      plot.setDomainGridlinePaint(Color.white);
                      plot.setRangeGridlinePaint(Color.white);
                      plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
                      range.setAutoRange(true);
                      range.setLowerMargin(0.0);
                      range.setUpperMargin(0.0);
                      range.setTickLabelsVisible(true);
                      range.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
                      JFreeChart chart = new JFreeChart(plot);
     
                      XYItemRenderer r = plot.getRenderer();
                      if (r instanceof XYLineAndShapeRenderer) {
                          XYLineAndShapeRenderer renderer1 = (XYLineAndShapeRenderer) r;
                          renderer1.setBaseShapesVisible(true);
                          renderer1.setBaseShapesFilled(true);
                      }
     
     
                      chart.setTitle(new TextTitle("Evolution mensuelle du débit Ftp"));
     
     
                      final ChartPanel chartPanel = new ChartPanel(chart);
                      chartPanel.setPreferredSize(new java.awt.Dimension(600, 300));
                      chartPanel.setMouseZoomable(true, false);   
     
                      OutputStream out = response.getOutputStream();
                      ChartUtilities.writeChartAsPNG(out, chart, 700, 500);   
                        request.setAttribute("image",out);
    voila le résultat

  8. #8
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    C'est résolu
    merci quand meme

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

Discussions similaires

  1. [MySQL] probleme mémoire avec mysql
    Par lol88 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 20/04/2010, 11h15
  2. Probleme LoadLibrary avec mysql++
    Par piemur2000 dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 20/07/2007, 14h52
  3. Probleme Sauvegarde-Restauration avec MySql Administrator
    Par Christophe Charron dans le forum Administration
    Réponses: 7
    Dernier message: 26/07/2005, 08h25
  4. probleme date et heure avec mysql.
    Par argon dans le forum Langage SQL
    Réponses: 1
    Dernier message: 11/07/2005, 22h42
  5. Probleme avec Mysql
    Par kevinss dans le forum Administration
    Réponses: 5
    Dernier message: 31/10/2003, 10h43

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