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] DatasetUtilities.findYValue ne renvoie pas la bonne valeur quand axe X Logarithmique.


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 2
    Par défaut [JFreeChart] DatasetUtilities.findYValue ne renvoie pas la bonne valeur quand axe X Logarithmique.
    Bonjour,
    j'utilise JFreeChart 1.0.19, DatasetUtilities.findYValue ne semble pas tenir compte d'un axe de domaine (X) en logarithme.
    Il fait une interpolation linéaire alors que l'axe des X est en logarithme.
    Ci joint un exemple simple utilisant un Crosshair visualisant les coordonnées: on devrait avoir en X: 3.170 au lieu de 3.
    Si quelqu'un a une idée ? Serais ce un bug ou bien il manque une précision ?
    Merci.
    Nom : Interp.jpg
Affichages : 177
Taille : 39,9 KoCrosshairWrongLogInterpolation.java

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 2
    Par défaut Solution basique pour dépanner: Corriger la méthode DatasetUtilities.findYValue.
    Pour me dépanner j'ai modifié la méthode DatasetUtilities.findYValue de JFreeChart 1.0.19
    en ajoutant un argument.
    Voir ci dessous pour la communauté:
    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
      /**
         * JFreeChart1.0.19 /orge/jfree/data/general/DatasetUtilities.findYValue
         * Modify: to take in count the logarithmic xAxis: PA le 17/09/15
         * ======
         * Returns the interpolated value of y that corresponds to the specified
         * x-value in the given series.  If the x-value falls outside the range of
         * x-values for the dataset, this method returns <code>Double.NaN</code>.
         * 
         * @param dataset  the dataset (<code>null</code> not permitted).
         * @param series  the series index.
         * @param x  the x-value.
         * @param xlog  true => xAxis in log, false => xAxis linear
         * @return The y value.
         * 
         * @since not in 1.0.19
         */
        public static double findYValue(XYDataset dataset, int series, double x, boolean xlog) {
            // delegate null check on dataset
            int[] indices = DatasetUtilities.findItemIndicesForX(dataset, series, x);
            if (indices[0] == -1) {
                return Double.NaN;
            }
            if (indices[0] == indices[1]) {
                return dataset.getYValue(series, indices[0]);
            }
            double x0 = dataset.getXValue(series, indices[0]);
            double x1 = dataset.getXValue(series, indices[1]);
        	double y0 = dataset.getYValue(series, indices[0]);
        	double y1 = dataset.getYValue(series, indices[1]);
    //Mod
            if(xlog)
            {//logarithmic xAxis
            	return y0 + (y1 - y0) * (Math.log10(x) - Math.log10(x0)) / (Math.log10(x1) - Math.log10(x0));
            }else
            {//linear xAxis
            	return y0 + (y1 - y0) * (x - x0) / (x1 - x0);        	
            }
    //EndMod
        }
    Sinon, je suis toujours preneur d'une solution intégrée à JFreechart.

Discussions similaires

  1. xlsNbLigne ne renvoie pas la bonne valeur
    Par dany13 dans le forum WinDev
    Réponses: 9
    Dernier message: 17/11/2010, 16h48
  2. fonction avec if sur input radio qui ne renvoie pas la bonne valeur
    Par eddflo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/06/2009, 01h20
  3. xlsNbLigne ne renvoie pas la bonne valeur
    Par Nimothenicefish dans le forum WinDev
    Réponses: 14
    Dernier message: 01/02/2008, 14h14
  4. Réponses: 19
    Dernier message: 12/12/2007, 09h10
  5. [SQL] Pb Mysql n'insert pas les bonnes valeur dans la bdd
    Par potao dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 11/02/2007, 03h12

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