Graphiques en php

Bonjour,

Je souhaite faire des graphiques pour des representations mathematiques
style sin(x) etc ... comment proceder ?

merci de tout coeur !

17 réponses

  1. Ce ne sont pas de graves erreurs.
    Tu peux modifier les alertes à afficher, en retirant les deprecated et les notices.
    1. Tu prends un artichaut !
      Non je plaisante, c'est le nom de la librairie (des sortes d'extensions pour php) qui permet de faire simplement des très beaux graphiques :
      http://www.artichow.org/
      Et ya même le sinus !!!

      A bientôt !
      1. Merci pour ta reponse rd_9 ,

        Je suis entre sur leur site mais quand je lance le forum je recois:
        No database selected: select * from phorum_settings
        sais -tu qu'est-ce qu'il faut faire ?
        je ne souhaite pas utiliser une librairie sans forum pour assistance...

        Merci
        1. merci avion-f16

          maism voila l'appli de google me parait compliquee
          je ne vaeux pas de javascript et non plus de flash
          le seul restant est pchart : je l'ai charge mais quand j'execute un exemple sous
          wamp j'obtient :

          Deprecated: Function split() is deprecated in C:\wamp\www\Graphique\pChart.1.27d\pChart\pData.class on line 75

          Notice: Uninitialized string offset: 0 in C:\wamp\www\Graphique\pChart.1.27d\pChart\pData.class on line 127

          alors quoi faire ?
          je n'ai pas reussi a mettre en oeuvre Artichow! j'obtient du dgibrish a la place des graphiques

          Au secours !
          1. je vais essaye , mais toi tu l'a deja essaye ?

            si oui peux tu m'expliquer en gros comment l'inserer dans un script HTML ?

            merci
            1. Avion-f16 je suis desole mais je n'arrive pas a afficher un graphique meme avec
              '<img src="image.php" width="200" height="200" alt="">
              ou image.php contient le script :
              $graph = new Graph(300, 300);

              $plot = new MathPlot(-3, 3, 3, -3);
              $plot->setInterval(0.2);
              $plot->setPadding(NULL, NULL, NULL, 20);

              $function = new MathFunction('cos');
              $function->setColor(new DarkGreen);
              $function->mark->setType(Mark::SQUARE);
              $function->mark->setSize(3);
              $plot->add($function, "f(x) = cos(x)", Legend::MARK);

              $plot->legend->setPosition(0.9, 0.8);
              $plot->legend->setPadding(3, 3, 3, 3, 3);

              $graph->add($plot);
              $graph->draw();

              as-tu une atre idee ?

              merci
              1. Où inclus-tu la bibliothèque ?
                Le code que tu me montres provient d'Artichow. Et 2 messages avant, tu essayais d'inclure pChart ...
                1. Oui c'est vrai je me suis trompe mais cela ne change rien
                  en mettant un script de pchart je tombe sur des erreurs :
                  <?php
                  /*
                  Example5 : A limits graph
                  */

                  // Standard inclusions
                  include("pChart/pData.class");
                  include("pChart/pChart.class");

                  // Dataset definition
                  $DataSet = new pData;
                  $DataSet->AddPoint(array(1,4,-3,2,-3,3,2,1,0,7,4,-3,2,-3,3,5,1,0,7),"Serie1","");
                  $DataSet->AddPoint(array(2,5,7,5,1,5,6,4,8,4,0,2,5,6,4,5,6,7,6),"Serie2","");
                  $DataSet->AddAllSeries();
                  $DataSet->SetAbsciseLabelSerie();
                  $DataSet->SetSerieName("January","Serie1");
                  $DataSet->SetSerieName("February","Serie2");

                  // Initialise the graph
                  $Test = new pChart(700,230);
                  $Test->setFontProperties("Fonts/tahoma.ttf",8);
                  $Test->setGraphArea(50,30,585,200);
                  $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240);
                  $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230);
                  $Test->drawGraphArea(255,255,255,TRUE);
                  $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE);
                  $Test->drawGrid(4,TRUE,230,230,230,50);

                  // Draw the 0 line
                  $Test->setFontProperties("Fonts/tahoma.ttf",6);
                  $Test->drawTreshold(0,143,55,72,TRUE,TRUE);

                  // Draw the limit graph
                  $Test->drawLimitsGraph($DataSet->GetData(),$DataSet->GetDataDescription(),180,180,180);

                  // Finish the graph
                  $Test->setFontProperties("Fonts/tahoma.ttf",8);
                  $Test->drawLegend(600,30,$DataSet->GetDataDescription(),255,255,255);
                  $Test->setFontProperties("Fonts/tahoma.ttf",10);
                  $Test->drawTitle(50,22,"Example 5",50,50,50,585);
                  $Test->Render("example2.png");
                  ?>

                  Notice: Undefined index: Name in C:\wamp\www\pChart\pChart.class on line 594
                  /* Horizontal Axis */
                  $XPos = $this->GArea_X1 + $this->GAreaXOffset;
                  $ID = 1; $YMax = NULL;
                  foreach ( $Data as $Key => $Values )
                  {
                  if ( $ID % $SkipLabels == 0 )
                  {
                  $this->drawLine(floor($XPos),$this->GArea_Y2,floor($XPos),$this->GArea_Y2+5,$R,$G,$B);
                  $Value = $Data[$Key][$DataDescription["Position"]]; <-ligne594
                  if ( $DataDescription["Format"]["X"] == "number" )
                  $Value = $Value.$DataDescription["Unit"]["X"];
                  if ( $DataDescription["Format"]["X"] == "time" )
                  $Value = $this->ToTime($Value);
                  if ( $DataDescription["Format"]["X"] == "date" )
                  $Value = $this->ToDate($Value);
                  if ( $DataDescription["Format"]["X"] == "metric" )
                  $Value = $this->ToMetric($Value);
                  if ( $DataDescription["Format"]["X"] == "currency" )
                  $Value = $this->ToCurrency($Value);

                  $Position = imageftbbox($this->FontSize,$Angle,$this->FontName,$Value);
                  $TextWidth = abs($Position[2])+abs($Position[0]);
                  $TextHeight = abs($Position[1])+abs($Position[3]);

                  c'est quoi ce probleme ?
                  1. Bien mais entre temps je suis passe a jpgraph (tu connais ?).
                    je suis arrivé a afficher des exemples de graphiques seulement
                    dans une nouvelle fenetre en passant par une forme:

                    <form name="form1" method="post" action="bezierex1.php" >
                    <input value="Graph" align="left" type="submit">
                    </form>
                    ce que je souhaite c'est de l'afficher dans mon document HTML et pas dans une nouvelle fenetre.
                    est-il possible de transformer ce graphique contenu dans une fenetre en une image PNG qui s'afficherai dans mon document?

                    merci
                    1. tres bien !
                      maintenant comment representer:
                      f(x)= sin(x)/tan(1-sqr(x)) * log(x-4) + 2-atan(x/4) ?
                      par exemple

                      thanks
                      1. Les graphiques ne servent pas à représenter des fonctions, il faut utiliser des données.
                        Tu peux calculer y en fonction de plusieurs valeurs de x, et ensuite utiliser les couples pour créer le graphique.

                        https://jpgraph.net/download/manuals/chunkhtml/ch14.html
                        Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
                        Bonnes fêtes de fin d'année à tous.
                        1. Oui mais on peut automatiser l'entree des donnees dans les array[]
                          en tenant compte du lieu geometrique du graphique (x0,y0)=centre

                          X=x-x0
                          Y=y-y0
                          for(n=0;n<nmax;n++){
                          array[X1,X2,....Xn]
                          array[]Y1,Y2,....Yn]

                          }
                          f(x)=y;

                          function point($source,max,$x1,$y1,yx2,y2,$color){
                          for($i = 0;$i<=max;$i++){

                          imageline($source,$x1,$y1,$x2,$y2);
                          }

                          quelque chose dans ce genre .... mais j'ai pas le temps de reflechir ....