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

MkFramework Discussion :

Génération de graphiques


Sujet :

MkFramework

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut Génération de graphiques
    Bonjour,

    J'aimerais générer des graphes statistiques dans mon application.
    En suivant le tuto http://mkframework.com/faq.html#chart j'ai remarqué que les données à présenter proviennent du tableau '$tData' renseigné en dur.
    Les données que je souhaite présenter doivent provenir d'une base de données donc d'une méthode de ma classe model. Mais je ne sais pas laquelle. Y a t-il une telle méthode déjà définie dans le framework pour renvoyer les données du graphique?
    Sinon, comment faire une méthode qui renvoi un tableau ayant la structure du '$tData' du tuto?
    NB: supposons que nous travaillons avec une base de données contenant des 'livres' et des 'auteurs'.

    Merci pour vos contributions

  2. #2
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    J'essaye depuis de reproduire l'exemple du tuto mais je ne comprend pas certaines instruction ou paramètres. une explication en vidéo serait d'une préciese aide

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Pour être plus précise je voudrais un graphique qui représente la proportion de filles et de garçons dans une table.
    Voici la requete dans le model:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function getSelectGenre(){
    		$tab=$this->findMany('SELECT sexe,date_naiss, date_inscription, date_mise_ajour, COUNT(sexe) as "nb" FROM CANDIDATS GROUP BY sexe ');
    		$tSelect=array();
    		if($tab){
    		foreach($tab as $oRow){
    			$tSelect[ $oRow->sexe ]=$oRow->nb;
    		}
    		}
    		return $tSelect;
    	}
    je recupère ces données:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $tData=model_candidats::getInstance()->getSelectGenre();
    Ensuite je n'arrive pas à comprendre le fonctionnement de 'addGroup', 'addPoint', 'setStepX' ...
    Je voudrais présenter ces résultats avec un diagramme 'PIE' et un 'BAR'.
    Besoin d'aide SVP

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Bonjour,
    Oui tData est ici présenté en dur comme exemple de data qui viendrait de sources de données (csv, base de données...)

    La structure est simple:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $tData=array(
           array( 'bois' , 120),
           array( 'fer' , 15),
           array( 'or' , 65),
       );

    Vous voyez ici un tableau contenant des tableaux dont l'indice premier est le libelle, le second la valeur

    Par exemple pour des statistiques de livres par auteur (quel auteur ecrit le plus de livre)

    soit deux tables mysql suivantes:
    Code sql : 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
     
    CREATE TABLE Livres (
    id INT NULL AUTO_INCREMENT,
    titre INT NOT NULL,
    aut_id INT NOT NULL,
     
    PRIMARY KEY id (id)
    );
     
    CREATE TABLE Auteurs (
    id INT NULL AUTO_INCREMENT,
    nom VARCHAR(50) NULL,
    prenom VARCHAR(50) NULL,
     
    PRIMARY KEY id (id)
    );

    On peut créer une méthode dans notre model qui retournera ceci:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public function listForChart(){
    	$tRow=$this->findManySimple('select count(Livres.id) as total,nom from Livres INNER JOIN Auteurs ON Auteurs.id=Livres.aut_id group by aut_id,nom;');
     
    	$tIndexed=array();
    	if($tRow){
    		foreach($tRow as $oRow){
    			$tIndexed[]=array($oRow->nom,$oRow->total);
    		}
    	}
    	return $tIndexed;
    }
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Daccord, je voit mieux comment sortir les données sous la forme d'un tableau convenable au $tData.
    J'aimerais savoir pourquoi ne doit-on pas utiliser un autre template que le HTML5?
    j'aimerais quand même que mes graphes apparaissent dans une page semblable aux autres vues de mon application!

  6. #6
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    C'est tout bete: le plugin utilise le canvas, qui est une technologie HTML5

    le template "normal" est un template antérieur à l'HTML5
    certains navigateur acceptent le mix entre de l'html5 et de l'html4, vous pouvez testez mais selon les navigateurs il y aurai sans doute un soucis d'affichage

    note: vous pouvez copier coller votre layout template1 et "juste" changer la définition de l'html en haut du fichier
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  7. #7
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Il ne cesse de m'épater ce framework. j'apprécie. Merci, j'ai pu personnaliser le template HTML5.
    Il reste encore à comprendre toutes les fonctions utiles pour les histogrammes, les courbes et autres.
    Je viens de sortir un premier graphe camembert et je veux en faire un autre sous forme d'histogramme, dans le tuto il n'y a pas d'instruction pour ce type de graphique. Comment m'y prendre? La syntaxe n'est pas pareil que pour le camembert (j'ai testé)

  8. #8
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Je vous invite à créer un projet test "avec exemples", vous pourrez voir dans le projet créer des exemples d'histogrammes...

    Pour rappel, quand on créé une application "avec exemples" c'est pour avoir plein d'exemple de choses et d'autres concrètes, dont le dessin HTML5
    Ainsi vous voyez le résultat et vous avez le code pour comprendre.
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  9. #9
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Bonjour,

    Merci pour l'indication, j'avais complètement oublié qu'on pouvait générer des projets exemples.
    Je veux à présent ajouter l'arrondissement des pourcentages dans le plugin. Cela est-il possible?
    Exemple: 58,6031564667% = 59% et 41,3968435333 = 41%
    A quel niveau du plugin dois-je apporter ces modifications?

    Merci d'avance

  10. #10
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    J'ai trouvé la fonction round() que j'ai pu finalement utiliser ici:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->text($x+16,$y,$sLabel.': '.round($tPct[$i],2).'%','#000',$this->textsizeLegend);
    au niveau de la classe
    class plugin_chartPie extends abstract_pluginChart
    Une autre inquiétude: la largeur du graphe est limitée? car ma légende je la place dans le coin haut droit du graphe et tous les chiffres du pourcentage (sans arrondi) n'apparaissent pas. Comment régler cela?

  11. #11
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    A la création du graphique, on indique la largeur et la hauteur:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $oChartHisto=new plugin_chart('HISTO',400,200);
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  12. #12
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Justement, dans le cas du camembert lorsque j'augmente le 'width' seulement, une partie du camembert devient invisible.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $oChartPie=new plugin_chart('PIE',400,200);
    donne ceci:Nom : Capture.PNG
Affichages : 267
Taille : 9,2 Ko avec une partie de la légende qui ne s'affiche pas. Par contre quand je modifie
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $oChartPie=new plugin_chart('PIE',600,200);
    donne ceci:Nom : Capture1.PNG
Affichages : 250
Taille : 10,3 Ko
    Comment cela s'explique, je pensait que l'espace ne s'agrandirait que vers la droite!

  13. #13
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Et en augmentant la hauteur, ça ne règle pas le soucis ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $oChartPie=new plugin_chart('PIE',600,300);
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  14. #14
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    Oui ca règle mais je trouve que l'image est trop grande dans ce cas. A droite du camembert je veux mettre l'histogramme donc il n'y aura pas assez de place pour lui et sa légende

  15. #15
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Je comprends le problème, pouvez-vous essayer de jouer avec la méthode: setCoordLegend (x,y)
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  16. #16
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    D'accord. je vais testé.
    Sur l'axe Y de l'histogramme peut-on avoir des graduations?

  17. #17
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    De mémoire il faut utiliser setStepY( 2);


    avec en valeur le nombre de pixel d'ecart entre les lignes
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  18. #18
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    De mémoire il faut utiliser setStepY( 2);
    J'ai fait cela sur mon projet test avec exemples mais rien ne change:
    Code php : 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
    //--------------------------------
    		//--------histo
    	    $tData=array(
    			array( 2011 , 50),
    			array( 2012 , 70),
    			array( 2013 , 45)
    		);
     
    	    $oChartHisto=new plugin_chart('HISTO',400,200);
    	    $oChartHisto->setTextSizeLegend('12px arial');
    	    $oChartHisto->setData($tData);
     
    		$oChartHisto->setStepX(2);
    	    $oChartHisto->setStepY(5);
    		$oChartHisto->setGridY(10,'#444');
     
    		//coordonnees de la legende
    	    $oChartHisto->setCoordLegend(220,10);
     
    		$oView->oChartHisto=$oChartHisto;

  19. #19
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Remplacez HISTO par BAR, le graphique histo ne gère pas (pour l'instant les lignes)
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  20. #20
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 304
    Points : 107
    Points
    107
    Par défaut
    En remplacant le mot 'HISTO' par 'BAR' dans l'instanciation de '$oChartHisto' il me génere une erreur dans ma vue.
    J'aurais volontier voulu utiliser les barres plutôt que les histogrammes mais j'ai l'impression que dans les barres il faut forcément des groupes et des points. Or pour ce que je présente je ne peux pas connaître à l'avance les niveaux de chaque barre!

Discussions similaires

  1. Problème avec la génération de graphique
    Par Mr_asticot dans le forum Jasper
    Réponses: 3
    Dernier message: 16/02/2010, 16h37
  2. [Graphique] Génération de graphiques
    Par ikeaboy dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 05/10/2006, 09h57
  3. [MFC/OLE] Génération de graphique Excel
    Par TomTom95 dans le forum MFC
    Réponses: 13
    Dernier message: 06/06/2006, 14h33
  4. [Graphique] Génération de graphiques
    Par kcizth dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 16/02/2006, 15h24
  5. [Graphique] Génération de graphiques
    Par missnouvelle dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 09/11/2005, 14h02

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