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

C Discussion :

Tracé de graphique type "nuage de points"


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 21
    Points : 14
    Points
    14
    Par défaut Tracé de graphique type "nuage de points"
    Bonjour à tous,

    Je cherche à tracer des graphiques de type nuage de points comme on en a sur les tableurs pour modéliser une courbe de dosage pHmétrique dans le cadre d'un cours.

    J'ai créé deux tableaux dans fonctions.h ; le 1er tableau qui me renvoie les abscisses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    {
        int i = 0;
        double Vb = 0;
     
        for (i = 0 ; i < 9 ; i++)
        {
            tableau[i] = Vb;
            printf("%f\n", tableau[i]);
            Vb=Vb+1;
        }
    }
    Un autre qui me trouve les ordonnées

    void tableaudupH(double *tableau, double Ca, double Cb, double Va)
    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
    {
        double diff = 0, som = 0, diffcar = 0, somcar = 0, h = 0, Vb = 0;
        int i = 0;
     
        for (i = 0 ; i < 9 ; i++)
        {
     
            diff = Ca*Va-Cb*Vb;
            som = 2*(Va+Vb);
            diffcar = pow(diff,2);
            somcar = pow(som,2);
            h = diff/(som)+sqrt(diffcar/somcar + pow(10,-14));
            tableau[i] = -log10(h);
            printf("%f\n", tableau[i]);
            Vb=Vb+1;
     
        }
    }
    Et voici mon main.c

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    // Inclusion des bibliothèques standards
    #include <stdlib.h>
    #include <stdio.h>
    #include <math.h>
     
    //Inclusion de la lib graphique
    #include <SDL2/SDL.h>
     
    // Inclusion d'un header maison qui va contenir les formules de calcul du pH
    #include "fonctions.h"
     
    int main (int argc, char** argv)
    {
     
    // Calcul des tableaux de valeur
        double Ca = 0.01, Cb = 0.1, Va = 10;
        double tableau[10] = {0};
     
        printf("Dosage d'un acide fort par une base forte\n");
     
       printf("Ceci est le tableau des valeurs du volume");
        tableauduvolume(tableau);
     
        printf("Ceci est le tableau des valeurs du pH");
        tableaudupH(tableau,Ca,Cb,Va);
     
     
     
    // A partir d'ici création de la fenêtre de graphique
    // création des variables
        int posX = 100, posY = 100, width = 640, height = 480;
     
    // initialisation de la vidéo
        SDL_Init(SDL_INIT_VIDEO);
     
    // création d'une fenêtre
        SDL_Window* window = NULL;
        window = SDL_CreateWindow("Dosage", posX, posY, width, height, SDL_WINDOW_SHOWN);
     
    // création d'un renderer de fond blanc
        SDL_Renderer* renderer = NULL;
        renderer =  SDL_CreateRenderer( window, -1, SDL_RENDERER_ACCELERATED);
        SDL_SetRenderDrawColor( renderer, 255, 255, 255, 255 );
     
    // Remplissage du fond en blanc
        SDL_RenderClear( renderer );
     
    // Creation d'un rectangle de 10par10 à la position 300x100
        SDL_Rect rect;
        rect.x = 300;
        rect.y = 100;
        rect.w = 3;
        rect.h = 3;
     
    // On passe en bleu pour le rectangle
        SDL_SetRenderDrawColor( renderer, 0, 0, 255, 255 );
        SDL_RenderFillRect( renderer, &rect );
     
    // Mise à jour de l'écran avec le rectangle
        SDL_RenderPresent(renderer);
     
        // Wait for 5 sec SDL_Delay( 5000 );
     
        // on bloque la fenêtre à l'aide d'un event
        while (1) {
            SDL_Event e;
            if (SDL_PollEvent(&e)) {
                if (e.type == SDL_QUIT) {
                    break;
                }
            }
        }
     
    // On détruit tout proprement
        SDL_DestroyRenderer(renderer);
        SDL_DestroyWindow(window);
        SDL_Quit();
     
        return EXIT_SUCCESS;
    }
    Mon soucis est conceptuel. Je n'arrive pas à comprendre comment faire pour récupérer tableauduvolume[0] et l'assigner à rect.x

    (si j'arrive à comprendre cela je pense être capable de réitérer le processus pour assigner tableauduph[0] à rect.y ainsi qu'à créer une boucle pour parcourir tous les points).



    Merci de votre aide.

  2. #2
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Tu boucles toujours de 0 à 8 inclus mais ton tableau contient 10 cases, c'est voulu ?

    La première fonction ne fait rien d'autre que d'affecter la valeur du compteur à la case de même index dans le tableau.

    Tu écrases le contenu du tableau dans la seconde fonction, c'est voulu ?

    Je n'ai pas bien saisi ton interrogation : affiches le contenu de tableau et c'est tout, non ? Tu as seulement un adaptation d'échelles à faire en fonction de l'intervalle de tes valeurs en abscisses et ordonnées afin de les faire correspondre à la coordonnée du pixel correspondant.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Tu boucles toujours de 0 à 8 inclus mais ton tableau contient 10 cases, c'est voulu ?
    Oups, en cours d'essais. Je modifie au fur et à mesure de mes tests. Mais pas rapport à mon problème ce n'est pas gênant.

    La première fonction ne fait rien d'autre que d'affecter la valeur du compteur à la case de même index dans le tableau.
    Oui pour les tests je reste sur un pas de 1. Plus tard quand l'essentiel sera fonctionnel je modifierai le pas ce qui modifiera cela. C'est donc normal pour le moment.

    Tu écrases le contenu du tableau dans la seconde fonction, c'est voulu ?
    Ha non, ça va tout me foutre en l'air ça

    Je n'ai pas bien saisi ton interrogation : affiches le contenu de tableau et c'est tout, non ? Tu as seulement un adaptation d'échelles à faire en fonction de l'intervalle de tes valeurs en abscisses et ordonnées afin de les faire correspondre à la coordonnée du pixel correspondant.
    Le programme me sort ça pour le moment :
    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
    Dosage d'un acide fort par une base forte
    Ceci est le tableau des valeurs du volume
    0.000000
    1.000000
    2.000000
    3.000000
    4.000000
    5.000000
    6.000000
    7.000000
    8.000000
    9.000000
     
    Ceci est le tableau des valeurs du pH
    2.000000
    7.000000
    11.920819
    12.187087
    12.330993
    12.425968
    12.494853
    12.547704
    12.589822
    Program ended with exit code: 0
    J'ai donc bien obtenu les valeurs que je voulais. Ce que je ne comprends pas comment faire c'est comment récupérer la valeur 0.000000 du 1er tableau pour l'affecter à la l'abscisse x (et après pareil pour les autres).
    En gros j'arrive à afficher les valeurs pas de soucis (mais en soit les afficher ne m'intéresse pas plus que ça, c'est juste une vérification que mes calculs sont corrects) mais je ne sais pas comment récupérer une valeur précise et l'affecter à une variable.
    J'espère que je suis clair cette fois


    Merci.

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    écris tes tableaux sur une feuille.
    puis fais à la main le travail que tu espères de ton programme.

    Comment fais-tu, avec du vocabulaire simple?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    écris tes tableaux sur une feuille.
    puis fais à la main le travail que tu espères de ton programme.
    A la main ou sous excel ce n'est pas un soucis, j'ai l'habitude de faire cela ^^

    Comment fais-tu, avec du vocabulaire simple?
    Je calcule les valeurs du volume et du pH.
    Je copie volume en abscisse et pH en ordonnée (et c'est ça que je ne comprends pas comment faire).

  6. #6
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Je ne suis toujours pas certain d'avoir compris : pour accéder aux valeurs de tes tableaux il suffit de les lire ! Tu as le droit d'utiliser tableauX[0], tableauX[1], tableauY[287], etc... dans n'importe quelle expression.


    Sinon tu as bien des points arbitraires en entrée. Perso plutôt que deux tableaux j'en ferais un seul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct point {
        double x, y;
    };
     
    struct point data[10];
    Afficher un point revient à l'exprimer dans un autre repère, par exemple en normalisant ses coordonnées dans un premier temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct point normalize(struct point p_in, double x_min, double x_max, double y_min, double y_max) {
        struct point p_out = {
            .x = (p_in.x - x_min) / (x_max - x_min),
            .y = (p_in.y - y_min) / (y_max - y_min)
        };
        return p_out;
    }
    ...avant de les transformer vers le repère de destination.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Bah ça ne marchait pas pour la première partie (sans doute à cause de la réutilisation de tableau).
    J'ai ré-écrit mon code pour essayer de lever le problème :

    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
    57
    58
    59
    60
    //
    //  main.c
    //  test2
    //
    //  Created by Benoit Castagnetto on 09/02/2016.
    //  Copyright © 2016 Benoit Castagnetto. All rights reserved.
    //
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <SDL2/SDL.h>
     
    void remplirAbscisses(double *tabAbscisses)
    {
        int i = 0;
        double taille = 10, debut = 0, pas = 1;
        for(i=0 ; i<taille ; i++)
        {
            tabAbscisses[i] = debut + i*pas;
            printf("%f\n",tabAbscisses[i]);
        }
    }
     
    double ph(double Ca, double Cb, double Va, double Vb)
    {
        double diff = 0, som = 0, diffcar = 0, somcar = 0, h = 0;
        diff = Ca*Va-Cb*Vb;
        som = 2*(Va+Vb);
        diffcar = pow(diff,2);
        somcar = pow(som,2);
        h = diff/(som)+sqrt(diffcar/somcar + pow(10,-14));
        return -log10(h);
    }
     
    void remplirOrdonnees(double* tabAbscisses, double* tabOrdonnees, double Ca, double Cb, double Va)
    {
        int i = 0;
        double taille = 10;
        for(i=0;i<taille;i++)
        {
            tabOrdonnees[i] = ph(Ca, Cb, Va, tabAbscisses[i]);
            printf("%f\n",tabOrdonnees[i]);
        }
    }
     
    int main (int argc, char** argv)
    {
        // Création d'un tableau pour les volumes variant avec un pas de 0,5 mL
        double tableauAbscisses[10] = {0};
        double tableauOrdonnees[10] = {0};
        double Ca = 0.01, Cb=0.1, Va=10;
     
        printf("Dosage d'un acide fort par une base forte\n");
        printf("Ceci est le tableau des valeurs du volume\n");
        remplirAbscisses(tableauAbscisses);
        printf("Ceci est le tableau des valeurs du pH\n");
        remplirOrdonnees(tableauAbscisses, tableauOrdonnees, Ca, Cb, Va);
     
    return 0;}
    Je récupère de nouveaux les valeurs voulues mais plus proprement j'ai l'impression (enfin j'espère).

    Un tableau à deux dimensions c'est ça que tu conseilles ? Je veux bien essayer mais quel serait l'avantage ?

  8. #8
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Qu'est-ce qui ne marche pas ?

    Où vois-tu un tableau à deux dimensions ? Je te propose une collection de paires de valeurs numériques, puisque cela correspond à la forme de tes données.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Erf j'avais pas compris ta structure.
    J'en suis là pour le moment :

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    //
    //  main.c
    //  test2
    //
    //  Created by Benoit Castagnetto on 09/02/2016.
    //  Copyright © 2016 Benoit Castagnetto. All rights reserved.
    //
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <SDL2/SDL.h>
     
    void remplirAbscisses(double *tabAbscisses)
    {
        int i = 0;
        double taille = 10, debut = 0, pas = 1;
        for(i=0 ; i<taille ; i++)
        {
            tabAbscisses[i] = debut + i*pas;
    //        printf("%lf\n",tabAbscisses[i]);
        }
    }
     
    double ph(double Ca, double Cb, double Va, double Vb)
    {
        double diff = 0, som = 0, diffcar = 0, somcar = 0, h = 0;
        diff = Ca*Va-Cb*Vb;
        som = 2*(Va+Vb);
        diffcar = pow(diff,2);
        somcar = pow(som,2);
        h = diff/(som)+sqrt(diffcar/somcar + pow(10,-14));
        return -log10(h);
    }
     
    void remplirOrdonnees(double* tabAbscisses, double* tabOrdonnees, double Ca, double Cb, double Va, int taille)
    {
        int i = 0;
        taille = 10;
        for(i=0;i<taille;i++)
        {
            tabOrdonnees[i] = ph(Ca, Cb, Va, tabAbscisses[i]);
    //    printf("%lf\n",tabOrdonnees[i]);
        }
    }
     
    int main (int argc, char** argv)
    {
        // Création d'un tableau pour les volumes variant avec un pas de 0,5 mL
        double tableauAbscisses[10] = {0};
        double tableauOrdonnees[10] = {0};
        double Ca = 0.01, Cb=0.1, Va=10;
        int taille = 10;
     
        printf("Dosage d'un acide fort par une base forte\n");
        printf("Ceci est le tableau des valeurs du volume\n");
        remplirAbscisses(tableauAbscisses);
        printf("Ceci est le tableau des valeurs du pH\n");
        remplirOrdonnees(tableauAbscisses, tableauOrdonnees, Ca, Cb, Va, taille);
     
        int largeur = 640;
        int hauteur = 480;
        double echelleXMin = 0;
        double echelleXMax = 10;
        double echelleYMin = 0;
        double echelleYMax = 14;
        int pixelX = 0, pixelY =0;
     
            // création des variables
            int posX = 100, posY = 100;
     
            // initialisation de la vidéo
            SDL_Init(SDL_INIT_VIDEO);
     
            // création d'une fenêtre
            SDL_Window* window = NULL;
            window = SDL_CreateWindow("Dosage", posX, posY, largeur, hauteur, SDL_WINDOW_SHOWN);
     
            // création d'un renderer de fond blanc
            SDL_Renderer* renderer = NULL;
            renderer =SDL_CreateRenderer( window, -1, SDL_RENDERER_ACCELERATED);
            SDL_SetRenderDrawColor( renderer, 255, 255, 255, 255 );
     
            // Remplissage du fond en blanc
            SDL_RenderClear( renderer );
     
        for(int i=0; i<taille; i++)
        {
            // Petit calcul de proportionnalité !
            pixelX = (tableauAbscisses[i] - echelleXMin) / (echelleXMax - echelleXMin) * largeur;
            pixelY = hauteur - ((tableauOrdonnees[i] - echelleYMin) / (echelleYMax - echelleYMin) * hauteur);
     
            printf("%d\n",pixelX);
            printf("%d\n",pixelY);
     
            // Creation d'un rectangle de 3par3 à la position 300x100
            SDL_Rect rect;
            rect.x = pixelX;
            rect.y = pixelY;
            rect.w = 3;
            rect.h = 3;
     
            // On passe en bleu pour le rectangle
            SDL_SetRenderDrawColor( renderer, 0, 0, 255, 255 );
            SDL_RenderFillRect( renderer, &rect );
         }
            // Mise à jour de l'écran avec le rectangle
            SDL_RenderPresent(renderer);
     
            // on bloque la fenêtre à l'aide d'un event
            while (1) {
                SDL_Event e;
                if (SDL_PollEvent(&e)) {
                    if (e.type == SDL_QUIT) {
                        break;
                    }
                }
            }
     
            // On détruit tout proprement
            SDL_DestroyRenderer(renderer);
            SDL_DestroyWindow(window);
            SDL_Quit();
     
    return 0;
    }
    Résultat :

    Nom : 810006Capturedecran20160210a211141.png
Affichages : 241
Taille : 18,3 Ko

    C'est ce que je voulais donc je suis content déjà ^^
    Maintenant si y'a moyen d'optimiser, je prends toutes les idées ^^

  10. #10
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Ça fait ce que tu désirais, c'est l'essentiel. Tu peux passer le sujet en « résolu » si cela te convient.

    Si tu es chaud et comme tu références déjà SDL (qui te permet de faire plein d'autres choses) tu peux aussi étendre le panel de fonctionnalités de ton programme ; quelques idées :
    • afficher les axes et leurs graduations ;
    • proposer à l'utilisateur de changer les paramètres du graphique (échelles des axes, couleurs...), soit via des paramètres de ligne de commande en entrée, soit dynamiquement pendant l'exécution ;
    • afficher les valeurs numériques correspondant au point dont l'utilisateur survole les alentours avec le curseur de souris ;
    • rendre le programme générique en lui faisant lire les résultats du dosage à afficher depuis un fichier texte en entrée (plutôt qu'en dur) ;
    • lui faire faire le café ;
    • etc...

  11. #11
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2016
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Oui pour le moment c'est résolu. Etape suivante : afficher les axes et leurs graduations effectivement. Et ça je n'ai aucune idée de comment faire pour le moment xD

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

Discussions similaires

  1. [XL-2010] Graphique type nuage de points
    Par sophie_2525 dans le forum Excel
    Réponses: 5
    Dernier message: 17/02/2014, 15h42
  2. [XL-2003] Tracé graphique (nuage de point) avec liste déroulante comme source de l'abscisse
    Par rbonnard dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/03/2013, 13h08
  3. bibliothèque de génération des graphiques et des nuages de points
    Par georex dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/05/2012, 16h38
  4. [2K8] Problème avec un graphique de type nuage de point
    Par la_fouine1806 dans le forum SSRS
    Réponses: 0
    Dernier message: 07/10/2010, 14h37
  5. Type de graphique histhogramme-nuage de point
    Par god0126 dans le forum Access
    Réponses: 6
    Dernier message: 13/07/2006, 17h37

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