Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    24

    [Pchart] setSerieOnAxis

    ciao a tutti


    tra le mani ho un file che mi permette la visualizzazione di alcuni parametri , rappresentandoli con più serie sullo stesso grafico.
    L'unica pecca è che vorrei creare più Assi ordinarie X con ognuna la sua serie, leggendo in internet ho visto che mi può aiutare la funzione setSerieOnAxis($Series,$AxisID);

    il problema è che non riesco proprio ad associare le serie.

    riporto il codice grazie mille

    codice:
     
    
    <?php
      /* pChart library inclusions */
     include("../pChart210/class/pData.class.php");
     include("../pChart210/class/pDraw.class.php");
     include("../pChart210/class/pImage.class.php");
    
    /* Create and populate the pData object */
    $MyData = new pData();
    
    
    
    $MyData->setAxisName(0,"VARIABILE");
    
    //$MyData->setAxisUnit(0,"%");
    
    
    $db = mysql_connect("localhost", "root", "GotO1964");
    mysql_select_db("eliosenergheia_13i1s",$db);
    
    $Requeste = 'SELECT id,namestrum FROM tbl_strum WHERE namestrum LIKE "%Inverter%"';
    $Result = mysql_query($Requeste,$db);
    $IDInv=""; 
    $NomeInv="";
    while($row = mysql_fetch_array($Result))
    	{
    	$IDInv[] = $row["id"];
    	$NomeInv[] = $row["namestrum"];
    	}
    	
    	
    $NumeroInv=count($IDInv);
    
    $Requeste = 'SELECT id,ora FROM tbl_96val WHERE id>20 AND id<89';
    $Result = mysql_query($Requeste,$db);
    $ora="";
    $valore="";
    while($row = mysql_fetch_array($Result))
    	{
    	$ora[] = substr($row["ora"],0,5);
    	$valore[] = 0;
    	}
    	
    $Requeste = 'SELECT id,namestrum FROM tbl_strum WHERE namestrum LIKE "%Solarimetro%"';
    $Result = mysql_query($Requeste,$db);
    $IDSolar=""; 
    $NomeSolar="";
    $row = mysql_fetch_array($Result);
    $IDSolar = $row["id"];
    $NomeSolar = $row["namestrum"];
    	
    
    if(isset($_POST['Day_1']))
      {
    	
    
    
    $Fatto=false;
    $NumPenne=0;
    $DatoAttuale=array();
      $ParInput=array(array(1,2,3,4,5,6), array());		// Salvataggio parametri per query
      $ParOrario=$_POST["Orario"];	
      for ($i=1; $i<7;$i++)
    	{
    	$QueryPreamb="";
    	$QueryText="";
    	$QueryPost="";
    	$Canale="Pac";		 
    	$ParInput[$i][1]=$_POST["Day_".$i];
    	$ParInput[$i][2]=$_POST["Month_".$i];
    	$ParInput[$i][3]=$_POST["Year_".$i];
    	$ParInput[$i][4]=$_POST["Strumento_".$i];	 
    	$ParInput[$i][5]=$_POST["Parametro_".$i];	
    	$Cambiacanale=false;	 
    	 if ($ParInput[$i][1]!="0" && $ParInput[$i][2]!="0" && $ParInput[$i][3]!="0")
    	 {	
    	 $NumPenne++;
    	 $Canale=$ParInput[$i][5];
    	 $Strum=$ParInput[$i][4];
    	 $PotenzaT=false;
    	 if ($Canale=="Potenza Totale")
    		{
    			$QueryRow="totalPow";
    			$QueryPreamb="SELECT tbl_96val.ora, SUM(tbl_misure.valore) AS totalPow FROM ";
    			$QueryText="";
    			$QueryPost=" GROUP BY tbl_96val.ora";
    			$Canale="Pac";
    			$PotenzaT=true;
    			}
    		else
    		{
    		if ($Canale=="Rendimento")
    		{
    			$QueryRow="Rendiment";
    			$QueryPreamb=" SELECT ora,TRUNCATE((SUM(TotalPow)/(SUM(RadSol)*metriquadri))*100,2) as
    			Rendiment FROM ( SELECT tbl_96val.ora ,tbl_impianto.mqPannelli AS metriquadri,
    			SUM(tbl_misure.valore) AS TotalPow, 0 as RadSol FROM tbl_impianto, ";
    			$QueryText="";
    			$QueryPost=" GROUP BY tbl_96val.ora UNION ALL SELECT tbl_96val.ora , 0 AS metriquadri,
    			0 as TotalPow,SUM(tbl_misure.valore) AS RadSol 
    			FROM tbl_misure INNER JOIN tbl_archivio ON 	(tbl_misure.id_archivio=tbl_archivio.id)
    			INNER JOIN tbl_storicogiorno ON (tbl_archivio.id_giorno=tbl_storicogiorno.id)
    			INNER JOIN tbl_96val ON (tbl_archivio.id_ora=tbl_96val.id) 	INNER JOIN tbl_canale ON
    			(tbl_misure.id_canale=tbl_canale.id) INNER JOIN tbl_strum ON 
    			(tbl_canale.id_strum=tbl_strum.id) WHERE year(giorno)=" . $ParInput[$i][3] . " AND month(giorno)=" . $ParInput[$i][2] . " AND
    	        day(giorno)=" . $ParInput[$i][1] . " AND tbl_canale.canale='IntSolIrr' AND tbl_archivio.id_ora > 20 AND
    			tbl_archivio.id_ora < 89 GROUP BY tbl_96val.ora ) TMP GROUP BY TMP.ora";
    			$Canale="Pac";
    			$Cambiacanale=true;
    			}
    		else
    		{
    			$QueryRow="valore";
    			$QueryPreamb="SELECT tbl_96val.ora, tbl_misure.valore FROM ";
    			if ($ParInput[$i][5]=="IntSolIrr" || $ParInput[$i][5]=="TmpMdul C")
    				$Strum=$IDSolar;				
    				else
    				$QueryText="AND	tbl_strum.id='" . $Strum . "' ";
    				$QueryPost="";	
    				}}
    	/* Build the query that will returns the data to graph */
    	$Requeste = $QueryPreamb . "tbl_misure INNER JOIN tbl_archivio ON
    	(tbl_misure.id_archivio=tbl_archivio.id)
    	INNER JOIN tbl_storicogiorno ON (tbl_archivio.id_giorno=tbl_storicogiorno.id)
    	INNER JOIN tbl_96val ON (tbl_archivio.id_ora=tbl_96val.id)
    	INNER JOIN tbl_canale ON (tbl_misure.id_canale=tbl_canale.id)
    	INNER JOIN tbl_strum ON (tbl_canale.id_strum=tbl_strum.id)
    	WHERE year(giorno)=" . $ParInput[$i][3] . " AND month(giorno)=" . $ParInput[$i][2] . " AND
    	day(giorno)=" . $ParInput[$i][1] . " AND tbl_canale.canale='" . $Canale . "' " . 	
    	$QueryText . "AND tbl_archivio.id_ora > 20 AND tbl_archivio.id_ora < 89" . $QueryPost; 
    	
    	$Result = mysql_query($Requeste,$db);
    	$valore=""; //$ora="";
    	if ($Cambiacanale) $Canale="Rendimento";
    	$CalPercento=1;
    	switch ($Canale)
    			{
    				case "IntSolIrr":
    				$UnitaMis="W/m²";
    				$CalPercento=11;
    				//0-1100
    				break;
    				case "TmpMdul C":
    				$UnitaMis="°C";
    				//0-100
    				break;
    				case "Upv-Ist":
    				$UnitaMis="V";
    				$CalPercento=5;
    				//0-500
    				break;
    				case "Ipv":
    				$UnitaMis="A";
    				//0-100
    				break;
    				case "Iac-Ist":
    				$UnitaMis="A";
    				//0-100
    				break;
    				case "Uac":
    				$UnitaMis="V";
    				$CalPercento=5;
    				//0-500
    				break;
    				case "Pac":
    				$UnitaMis="W";
    				if ($PotenzaT)
    					$CalPercento=7000* $NumeroInv /100;
    					else $CalPercento=70;
    				//0-10000
    				break;				
    				case "Rendimento":
    				$UnitaMis="%";
    				//0-100
    				break;
    				}
    		//$x=0;	
    	  if ((!$Result || mysql_num_rows($Result)==0)) {
    		} 
    		else {	
    		for ($j=1;$j<69;$j++)
    			$valore[] = 0;
    		
    		while($row = mysql_fetch_array($Result))
    			{
    			//$x++;
    			/* Push the results of the query in an array */
    			//if ($ParOrario==($x+20)) $DatoAttuale[$i]=$row[$QueryRow]." ".$UnitaMis;
    			$calOra=substr($row["ora"],0,2);
    			$calMinuti=substr($row["ora"],3,2);
    			$Indice=$calOra*4+$calMinuti/15-20;
    			//echo $Indice;
    			//$valore[] = round($row[$QueryRow],2);
    			//$ora[] = substr($row["ora"],0,5);
    			$valore[$Indice] = round(($row[$QueryRow]/$CalPercento),2);
    			//$valore[$Indice] = round(($row[$QueryRow]),2);
    			$ora[$Indice] = substr($row["ora"],0,5);
    			$calOra=intval((15*($ParOrario-1))/60);
    			$calMinuti=((15*($ParOrario-1))-(60*$calOra));
    			$calTempo=sprintf("%02s",$calOra).":".sprintf("%02s",$calMinuti);	
    			if ($ora[$Indice]==$calTempo) $DatoAttuale[$i]=round(($row[$QueryRow]),2)." ".$UnitaMis;
    			}
    		}
    		
    $tacche=intval(count($ora)/18);
    
    $Penna="Penna" . $i;
    /* Save the data in the pData array */
    $MyData->addPoints($valore,$Penna);
    
    if ($Fatto==false)
    	 {$MyData->addPoints($ora,"ora");
    	 $Fatto=true;}
    	 
    //$MyData->addPoints($prova2,"ora");
    switch ($Penna)
    {
    	case "Penna1":
    	$MyData->setPalette($Penna,array("R"=>255,"G"=>0,"B"=>0));
    	
    	break;	
    	case "Penna2":
    	$MyData->setPalette($Penna,array("R"=>0,"G"=>255,"B"=>0));
    	break;	
    	case "Penna3":
    	$MyData->setPalette($Penna,array("R"=>0,"G"=>0,"B"=>255));
    	break;	
    	case "Penna4":
    	$MyData->setPalette($Penna,array("R"=>255,"G"=>255,"B"=>0));
    	break;	
    	case "Penna5":
    	$MyData->setPalette($Penna,array("R"=>0,"G"=>255,"B"=>255));
    	break;	
    	case "Penna6":
    	$MyData->setPalette($Penna,array("R"=>255,"G"=>0,"B"=>255));
    	break;
    	}
    }
    
    /* Render the picture (choose the best way) */
    //$myPicture->autoOutput("pictures/example.drawFilledSplineChart.png");
    if (($NumPenne>0) && ($i==6))
    {
    	/* Put the timestamp column on the abscissa axis */
    $MyData->setAbscissa("ora");
    //$MyData->setAxisDisplay(1,AXIS_FORMAT_TIME,"H");
    
    /* Create the pChart object */
    $myPicture = new pImage(900,351,$MyData);
    
    $myPicture->drawGradientArea(0,0,773,350,DIRECTION_VERTICAL,array("StartR"=>47,"StartG"=>47,"StartB"=>47,"EndR"=>17,"EndG"=>17,"EndB"=>17,"Alpha"=>0));
    /*$myPicture->drawGradientArea(0,250,773,400,DIRECTION_VERTICAL,array("StartR"=>47,"StartG"=>47,"StartB"=>47,"EndR"=>27,"EndG"=>27,"EndB"=>27,"Alpha"=>100));*/
    //$myPicture->drawLine(0,249,773,349,array("R"=>0,"G"=>0,"B"=>0));
    //$myPicture->drawLine(0,250,773,350,array("R"=>70,"G"=>70,"B"=>70));
    /* Add a border to the picture */
    //$myPicture->drawRectangle(0,0,772,349,array("R"=>204,"G"=>204,"B"=>204));
    /* Write the picture title */
    $myPicture->setFontProperties(array("FontName"=>"../pChart210/fonts/pf_arma_five.ttf","FontSize"=>7));
    $myPicture->drawText(387,14,"STORICO",array("R"=>0,"G"=>0,"B"=>0,"Align"=>TEXT_ALIGN_MIDDLEMIDDLE));
    /* Define the chart area */
    $myPicture->setGraphArea(200,27,850,328);
    /* Draw a rectangle */
    $myPicture->drawFilledRectangle(200,27,850,328,array("R"=>255,"G"=>255,"B"=>255,"Dash"=>TRUE,"DashR"=>255,
    "DashG"=>255,"DashB"=>255,"BorderR"=>0,"BorderG"=>0,"BorderB"=>0));
    /* Turn on shadow computing */
    //$myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>20));
    $myPicture->setShadow(FALSE);
    /* Draw the scale */
    $myPicture->setFontProperties(array("R"=>0,"G"=>0,"B"=>0));
    $ScaleSettings = array("XMargin"=>4,"DrawSubTicks"=>TRUE,"GridR"=>0,
    "GridG"=>0,"GridB"=>0,"AxisR"=>0,"AxisG"=>0,"AxisB"=>0,"GridAlpha"=>30,"CycleBackground"=>TRUE,"LabelSkip"=>$tacche,"SkippedAxisR"=>0,"SkippedAxisG"=>0,"SkippedAxisB"=>0,"SkippedAxisAlpha"=>10,"Mode"=>SCALE_MODE_START0);
    $myPicture->drawScale($ScaleSettings);
    /* Draw the spline chart */
    //$myPicture->drawFilledSplineChart();
    $myPicture->drawSplineChart();
    /* Write the chart boundaries */
    $BoundsSettings = array("MaxDisplayR"=>237,"MaxDisplayG"=>23,"MaxDisplayB"=>48, "MinDisplayR"=>23,"MinDisplayG"=>144,"MinDisplayB"=>237);
    $myPicture->writeBounds(BOUND_BOTH,$BoundsSettings);
    /* Write the 0 line */
    $myPicture->drawThreshold(0,array("WriteCaption"=>TRUE));
    /* Write the chart legend 
    $myPicture->setFontProperties(array("R"=>255,"G"=>255,"B"=>255));
    $myPicture->drawLegend(360,265,array("Style"=>LEGEND_NOBORDER));
    */
    /* Write the 1st data series statistics 
    $Settings = array("R"=>188,"G"=>224,"B"=>46,"Align"=>TEXT_ALIGN_BOTTOMLEFT);
    $myPicture->drawText(420,270,"Max : ".ceil($MyData->getMax("Penna1")),$Settings);
    $myPicture->drawText(490,270,"Min : ".ceil($MyData->getMin("Penna1")),$Settings);
    $myPicture->drawText(560,270,"Avg : ".ceil($MyData->getSerieAverage("Penna1")),$Settings);
    */
    	$myPicture->render("MyPicChart.png");
    	$StringaGrap=' <p align="center">[img]MyPicChart.png?V='.(rand()%1000).'[/img]</p>';  	
    		}
    	else	{	  	
    	$StringaGrap=' 
    
    <font color="black">Selezione non valida!</font></p>';
    		}
    }	
    	$Colore=array("F00","0F0","00F","FF0","0FF","F0F");

  2. #2

    Re: [Pchart] setSerieOnAxis

    Originariamente inviato da lolo27
    ciao a tutti


    tra le mani ho un file che mi permette la visualizzazione di alcuni parametri , rappresentandoli con più serie sullo stesso grafico.
    L'unica pecca è che vorrei creare più Assi ordinarie X con ognuna la sua serie, leggendo in internet ho visto che mi può aiutare la funzione setSerieOnAxis($Series,$AxisID);

    il problema è che non riesco proprio ad associare le serie.

    riporto il codice grazie mille

    codice:
    <?php   /* pChart library inclusions */  include("../pChart210/class/pData.class.php");  include("../pChart210/class/pDraw.class.php");  include("../pChart210/class/pImage.class.php");  /* Create and populate the pData object */ $MyData = new pData();    $MyData->setAxisName(0,"VARIABILE");  //$MyData->setAxisUnit(0,"%");     $db = mysql_connect("localhost", "root", "GotO1964"); mysql_select_db("eliosenergheia_13i1s",$db);  $Requeste = 'SELECT id,namestrum FROM tbl_strum WHERE namestrum LIKE "%Inverter%"'; $Result = mysql_query($Requeste,$db); $IDInv="";  $NomeInv=""; while($row = mysql_fetch_array($Result)) 	{ 	$IDInv[] = $row["id"]; 	$NomeInv[] = $row["namestrum"]; 	} 	 	 $NumeroInv=count($IDInv);  $Requeste = 'SELECT id,ora FROM tbl_96val WHERE id>20 AND id<89'; $Result = mysql_query($Requeste,$db); $ora=""; $valore=""; while($row = mysql_fetch_array($Result)) 	{ 	$ora[] = substr($row["ora"],0,5); 	$valore[] = 0; 	} 	 $Requeste = 'SELECT id,namestrum FROM tbl_strum WHERE namestrum LIKE "%Solarimetro%"'; $Result = mysql_query($Requeste,$db); $IDSolar="";  $NomeSolar=""; $row = mysql_fetch_array($Result); $IDSolar = $row["id"]; $NomeSolar = $row["namestrum"]; 	  if(isset($_POST['Day_1']))   { 	   $Fatto=false; $NumPenne=0; $DatoAttuale=array();   $ParInput=array(array(1,2,3,4,5,6), array());		// Salvataggio parametri per query   $ParOrario=$_POST["Orario"];	   for ($i=1; $i<7;$i++) 	{ 	$QueryPreamb=""; 	$QueryText=""; 	$QueryPost=""; 	$Canale="Pac";		  	$ParInput[$i][1]=$_POST["Day_".$i]; 	$ParInput[$i][2]=$_POST["Month_".$i]; 	$ParInput[$i][3]=$_POST["Year_".$i]; 	$ParInput[$i][4]=$_POST["Strumento_".$i];	  	$ParInput[$i][5]=$_POST["Parametro_".$i];	 	$Cambiacanale=false;	  	 if ($ParInput[$i][1]!="0" && $ParInput[$i][2]!="0" && $ParInput[$i][3]!="0") 	 {	 	 $NumPenne++; 	 $Canale=$ParInput[$i][5]; 	 $Strum=$ParInput[$i][4]; 	 $PotenzaT=false; 	 if ($Canale=="Potenza Totale") 		{ 			$QueryRow="totalPow"; 			$QueryPreamb="SELECT tbl_96val.ora, SUM(tbl_misure.valore) AS totalPow FROM "; 			$QueryText=""; 			$QueryPost=" GROUP BY tbl_96val.ora"; 			$Canale="Pac"; 			$PotenzaT=true; 			} 		else 		{ 		if ($Canale=="Rendimento") 		{ 			$QueryRow="Rendiment"; 			$QueryPreamb=" SELECT ora,TRUNCATE((SUM(TotalPow)/(SUM(RadSol)*metriquadri))*100,2) as 			Rendiment FROM ( SELECT tbl_96val.ora ,tbl_impianto.mqPannelli AS metriquadri, 			SUM(tbl_misure.valore) AS TotalPow, 0 as RadSol FROM tbl_impianto, "; 			$QueryText=""; 			$QueryPost=" GROUP BY tbl_96val.ora UNION ALL SELECT tbl_96val.ora , 0 AS metriquadri, 			0 as TotalPow,SUM(tbl_misure.valore) AS RadSol  			FROM tbl_misure INNER JOIN tbl_archivio ON 	(tbl_misure.id_archivio=tbl_archivio.id) 			INNER JOIN tbl_storicogiorno ON (tbl_archivio.id_giorno=tbl_storicogiorno.id) 			INNER JOIN tbl_96val ON (tbl_archivio.id_ora=tbl_96val.id) 	INNER JOIN tbl_canale ON 			(tbl_misure.id_canale=tbl_canale.id) INNER JOIN tbl_strum ON  			(tbl_canale.id_strum=tbl_strum.id) WHERE year(giorno)=" . $ParInput[$i][3] . " AND month(giorno)=" . $ParInput[$i][2] . " AND 	        day(giorno)=" . $ParInput[$i][1] . " AND tbl_canale.canale='IntSolIrr' AND tbl_archivio.id_ora > 20 AND 			tbl_archivio.id_ora < 89 GROUP BY tbl_96val.ora ) TMP GROUP BY TMP.ora"; 			$Canale="Pac"; 			$Cambiacanale=true; 			} 		else 		{ 			$QueryRow="valore"; 			$QueryPreamb="SELECT tbl_96val.ora, tbl_misure.valore FROM "; 			if ($ParInput[$i][5]=="IntSolIrr" || $ParInput[$i][5]=="TmpMdul C") 				$Strum=$IDSolar;				 				else 				$QueryText="AND	tbl_strum.id='" . $Strum . "' "; 				$QueryPost="";	 				}} 	/* Build the query that will returns the data to graph */ 	$Requeste = $QueryPreamb . "tbl_misure INNER JOIN tbl_archivio ON 	(tbl_misure.id_archivio=tbl_archivio.id) 	INNER JOIN tbl_storicogiorno ON (tbl_archivio.id_giorno=tbl_storicogiorno.id) 	INNER JOIN tbl_96val ON (tbl_archivio.id_ora=tbl_96val.id) 	INNER JOIN tbl_canale ON (tbl_misure.id_canale=tbl_canale.id) 	INNER JOIN tbl_strum ON (tbl_canale.id_strum=tbl_strum.id) 	WHERE year(giorno)=" . $ParInput[$i][3] . " AND month(giorno)=" . $ParInput[$i][2] . " AND 	day(giorno)=" . $ParInput[$i][1] . " AND tbl_canale.canale='" . $Canale . "' " . 	 	$QueryText . "AND tbl_archivio.id_ora > 20 AND tbl_archivio.id_ora < 89" . $QueryPost;  	 	$Result = mysql_query($Requeste,$db); 	$valore=""; //$ora=""; 	if ($Cambiacanale) $Canale="Rendimento"; 	$CalPercento=1; 	switch ($Canale) 			{ 				case "IntSolIrr": 				$UnitaMis="W/m²"; 				$CalPercento=1; 				//0-1100 				break; 				case "TmpMdul C": 				$UnitaMis="°C"; 				//0-100 				break; 				case "Upv-Ist": 				$UnitaMis="V"; 				$CalPercento=1; 				//0-500 				break; 				case "Ipv": 				$UnitaMis="A"; 				//0-100 				break; 				case "Iac-Ist": 				$UnitaMis="A"; 				//0-100 				break; 				case "Uac": 				$UnitaMis="V"; 				$CalPercento=1; 				//0-500 				break; 				case "Pac": 				$UnitaMis="W"; 				 					$CalPercento=1; 					 				//0-10000 				break;				 				case "Rendimento": 				$UnitaMis="%"; 				//0-100 				break; 				} 		//$x=0;	 	  if ((!$Result || mysql_num_rows($Result)==0)) { 		}  		else {	 		for ($j=1;$j<69;$j++) 			$valore[] = 0; 		 		while($row = mysql_fetch_array($Result)) 			{ 			//$x++; 			/* Push the results of the query in an array */ 			//if ($ParOrario==($x+20)) $DatoAttuale[$i]=$row[$QueryRow]." ".$UnitaMis; 			$calOra=substr($row["ora"],0,2); 			$calMinuti=substr($row["ora"],3,2); 			$Indice=$calOra*4+$calMinuti/15-20; 			//echo $Indice; 			//$valore[] = round($row[$QueryRow],2); 			//$ora[] = substr($row["ora"],0,5); 			$valore[$Indice] = round(($row[$QueryRow]/$CalPercento),2); 			//$valore[$Indice] = round(($row[$QueryRow]),2); 			$ora[$Indice] = substr($row["ora"],0,5); 			$calOra=intval((15*($ParOrario-1))/60); 			$calMinuti=((15*($ParOrario-1))-(60*$calOra)); 			$calTempo=sprintf("%02s",$calOra).":".sprintf("%02s",$calMinuti);	 			if ($ora[$Indice]==$calTempo) $DatoAttuale[$i]=round(($row[$QueryRow]),2)." ".$UnitaMis; 			} 		} 		 $tacche=intval(count($ora)/18);  $Penna="Penna" . $i; /* Save the data in the pData array */ $MyData->addPoints($valore,$Penna);     if ($Fatto==false) 	 {$MyData->addPoints($ora,"ora"); 	 $Fatto=true;} 	  //$MyData->addPoints($prova2,"ora"); switch ($Penna) { 	case "Penna1":  	$MyData->setPalette($Penna,array("R"=>255,"G"=>0,"B"=>0)); 	 	 	break;	 	case "Penna2": 	$MyData->setPalette($Penna,array("R"=>0,"G"=>255,"B"=>0)); 	break;	 	case "Penna3": 	$MyData->setPalette($Penna,array("R"=>0,"G"=>0,"B"=>255)); 	break;	 	case "Penna4": 	$MyData->setPalette($Penna,array("R"=>255,"G"=>255,"B"=>0)); 	break;	 	case "Penna5": 	$MyData->setPalette($Penna,array("R"=>0,"G"=>255,"B"=>255)); 	break;	 	case "Penna6": 	$MyData->setPalette($Penna,array("R"=>255,"G"=>0,"B"=>255)); 	break; 	} }  /* Render the picture (choose the best way) */ //$myPicture->autoOutput("pictures/example.drawFilledSplineChart.png"); if (($NumPenne>0) && ($i==6)) { 	/* Put the timestamp column on the abscissa axis */ $MyData->setAbscissa("ora"); //$MyData->setAxisDisplay(1,AXIS_FORMAT_TIME,"H");  /* Create the pChart object */ $myPicture = new pImage(900,351,$MyData);  $myPicture->drawGradientArea(0,0,773,350,DIRECTION_VERTICAL,array("StartR"=>47,"StartG"=>47,"StartB"=>47,"EndR"=>17,"EndG"=>17,"EndB"=>17,"Alpha"=>0)); /*$myPicture->drawGradientArea(0,250,773,400,DIRECTION_VERTICAL,array("StartR"=>47,"StartG"=>47,"StartB"=>47,"EndR"=>27,"EndG"=>27,"EndB"=>27,"Alpha"=>100));*/ //$myPicture->drawLine(0,249,773,349,array("R"=>0,"G"=>0,"B"=>0)); //$myPicture->drawLine(0,250,773,350,array("R"=>70,"G"=>70,"B"=>70)); /* Add a border to the picture */ //$myPicture->drawRectangle(0,0,772,349,array("R"=>204,"G"=>204,"B"=>204)); /* Write the picture title */ $myPicture->setFontProperties(array("FontName"=>"../pChart210/fonts/pf_arma_five.ttf","FontSize"=>7)); $myPicture->drawText(387,14,"STORICO",array("R"=>0,"G"=>0,"B"=>0,"Align"=>TEXT_ALIGN_MIDDLEMIDDLE)); /* Define the chart area */ $myPicture->setGraphArea(140,27,880,328); /* Draw a rectangle */ $myPicture->drawFilledRectangle(140,27,880,328,array("R"=>255,"G"=>255,"B"=>255,"Dash"=>TRUE,"DashR"=>255, "DashG"=>255,"DashB"=>255,"BorderR"=>0,"BorderG"=>0,"BorderB"=>0)); /* Turn on shadow computing */ //$myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>20)); $myPicture->setShadow(FALSE); /* Draw the scale */ $myPicture->setFontProperties(array("R"=>0,"G"=>0,"B"=>0)); $ScaleSettings = array("XMargin"=>4,"DrawSubTicks"=>TRUE,"GridR"=>0, "GridG"=>0,"GridB"=>0,"AxisR"=>0,"AxisG"=>0,"AxisB"=>0,"GridAlpha"=>30,"CycleBackground"=>TRUE,"LabelSkip"=>$tacche,"SkippedAxisR"=>0,"SkippedAxisG"=>0,"SkippedAxisB"=>0,"SkippedAxisAlpha"=>10,"Mode"=>SCALE_MODE_START0); $myPicture->drawScale($ScaleSettings); /* Draw the spline chart */ //$myPicture->drawFilledSplineChart(); $myPicture->drawSplineChart(); /* Write the chart boundaries */ $BoundsSettings = array("MaxDisplayR"=>237,"MaxDisplayG"=>23,"MaxDisplayB"=>48, "MinDisplayR"=>23,"MinDisplayG"=>144,"MinDisplayB"=>237); $myPicture->writeBounds(BOUND_BOTH,$BoundsSettings); /* Write the 0 line */ $myPicture->drawThreshold(0,array("WriteCaption"=>TRUE)); /* Write the chart legend  $myPicture->setFontProperties(array("R"=>255,"G"=>255,"B"=>255)); $myPicture->drawLegend(360,265,array("Style"=>LEGEND_NOBORDER)); */ /* Write the 1st data series statistics  $Settings = array("R"=>188,"G"=>224,"B"=>46,"Align"=>TEXT_ALIGN_BOTTOMLEFT); $myPicture->drawText(420,270,"Max : ".ceil($MyData->getMax("Penna1")),$Settings); $myPicture->drawText(490,270,"Min : ".ceil($MyData->getMin("Penna1")),$Settings); $myPicture->drawText(560,270,"Avg : ".ceil($MyData->getSerieAverage("Penna1")),$Settings); */ 	$myPicture->render("MyPicChart.png"); 	$StringaGrap=' <p align="center">[img]MyPicChart.png?V='.(rand()%1000).'[/img]</p>';  	 		} 	else	{	  	 	$StringaGrap=' 
    
    <font color="black">Selezione non valida!</font></p>'; 		} }	 	$Colore=array("F00","0F0","00F","FF0","0FF","F0F");
    Potresti inserire il codice fra tag php in modo da permetterci una migliore visione.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    24

    Re: Re: [Pchart] setSerieOnAxis

    Originariamente inviato da cicciaramba
    Potresti inserire il codice fra tag php in modo da permetterci una migliore visione.


    modificato subito ... scusa

  4. #4

    Re: Re: Re: [Pchart] setSerieOnAxis

    Originariamente inviato da lolo27
    modificato subito ... scusa
    Hai inserito il codice nei tag CODE, non in quelli PHP!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    24

    Re: Re: Re: Re: [Pchart] setSerieOnAxis

    Originariamente inviato da cicciaramba
    Hai inserito il codice nei tag CODE, non in quelli PHP!!!

    Codice PHP:
    <?php
      
    /* pChart library inclusions */
     
    include("../pChart210/class/pData.class.php");
     include(
    "../pChart210/class/pDraw.class.php");
     include(
    "../pChart210/class/pImage.class.php");

    /* Create and populate the pData object */
    $MyData = new pData();



    $MyData->setAxisName(0,"VARIABILE");

    //$MyData->setAxisUnit(0,"%");
    $MyData->setAxisName(1,"Potenza");
    $MyData->setSerieOnAxis($pot1,1);
    $MyData->setAxisName(2,"Irraggiamento");
    $MyData->setSerieOnAxis("Irraggiamento",2);
    $MyData->setAxisUnit(0,"  °C");
    $MyData->setAxisUnit(1," W");
    $MyData->setAxisUnit(2," W/m ²");

    $db mysql_connect("localhost""root""GotO1964");
    mysql_select_db("eliosenergheia_13i1s",$db);

    $Requeste 'SELECT id,namestrum FROM tbl_strum WHERE namestrum LIKE "%Inverter%"';
    $Result mysql_query($Requeste,$db);
    $IDInv=""
    $NomeInv="";
    while(
    $row mysql_fetch_array($Result))
        {
        
    $IDInv[] = $row["id"];
        
    $NomeInv[] = $row["namestrum"];
        }
        
        
    $NumeroInv=count($IDInv);

    $Requeste 'SELECT id,ora FROM tbl_96val WHERE id>20 AND id<89';
    $Result mysql_query($Requeste,$db);
    $ora="";
    $valore="";
    while(
    $row mysql_fetch_array($Result))
        {
        
    $ora[] = substr($row["ora"],0,5);
        
    $valore[] = 0;
        }
        
    $Requeste 'SELECT id,namestrum FROM tbl_strum WHERE namestrum LIKE "%Solarimetro%"';
    $Result mysql_query($Requeste,$db);
    $IDSolar=""
    $NomeSolar="";
    $row mysql_fetch_array($Result);
    $IDSolar $row["id"];
    $NomeSolar $row["namestrum"];
        

    if(isset(
    $_POST['Day_1']))
      {
        


    $Fatto=false;
    $NumPenne=0;
    $DatoAttuale=array();
      
    $ParInput=array(array(1,2,3,4,5,6), array());        // Salvataggio parametri per query
      
    $ParOrario=$_POST["Orario"];    
      for (
    $i=1$i<7;$i++)
        {
        
    $QueryPreamb="";
        
    $QueryText="";
        
    $QueryPost="";
        
    $Canale="Pac";         
        
    $ParInput[$i][1]=$_POST["Day_".$i];
        
    $ParInput[$i][2]=$_POST["Month_".$i];
        
    $ParInput[$i][3]=$_POST["Year_".$i];
        
    $ParInput[$i][4]=$_POST["Strumento_".$i];     
        
    $ParInput[$i][5]=$_POST["Parametro_".$i];    
        
    $Cambiacanale=false;     
         if (
    $ParInput[$i][1]!="0" && $ParInput[$i][2]!="0" && $ParInput[$i][3]!="0")
         {    
         
    $NumPenne++;
         
    $Canale=$ParInput[$i][5];
         
    $Strum=$ParInput[$i][4];
         
    $PotenzaT=false;
         if (
    $Canale=="Potenza Totale")
            {
                
    $QueryRow="totalPow";
                
    $QueryPreamb="SELECT tbl_96val.ora, SUM(tbl_misure.valore) AS totalPow FROM ";
                
    $QueryText="";
                
    $QueryPost=" GROUP BY tbl_96val.ora";
                
    $Canale="Pac";
                
    $PotenzaT=true;
                }
            else
            {
            if (
    $Canale=="Rendimento")
            {
                
    $QueryRow="Rendiment";
                
    $QueryPreamb=" SELECT ora,TRUNCATE((SUM(TotalPow)/(SUM(RadSol)*metriquadri))*100,2) as
                Rendiment FROM ( SELECT tbl_96val.ora ,tbl_impianto.mqPannelli AS metriquadri,
                SUM(tbl_misure.valore) AS TotalPow, 0 as RadSol FROM tbl_impianto, "
    ;
                
    $QueryText="";
                
    $QueryPost=" GROUP BY tbl_96val.ora UNION ALL SELECT tbl_96val.ora , 0 AS metriquadri,
                0 as TotalPow,SUM(tbl_misure.valore) AS RadSol 
                FROM tbl_misure INNER JOIN tbl_archivio ON     (tbl_misure.id_archivio=tbl_archivio.id)
                INNER JOIN tbl_storicogiorno ON (tbl_archivio.id_giorno=tbl_storicogiorno.id)
                INNER JOIN tbl_96val ON (tbl_archivio.id_ora=tbl_96val.id)     INNER JOIN tbl_canale ON
                (tbl_misure.id_canale=tbl_canale.id) INNER JOIN tbl_strum ON 
                (tbl_canale.id_strum=tbl_strum.id) WHERE year(giorno)=" 
    $ParInput[$i][3] . " AND month(giorno)=" $ParInput[$i][2] . " AND
                day(giorno)=" 
    $ParInput[$i][1] . " AND tbl_canale.canale='IntSolIrr' AND tbl_archivio.id_ora > 20 AND
                tbl_archivio.id_ora < 89 GROUP BY tbl_96val.ora ) TMP GROUP BY TMP.ora"
    ;
                
    $Canale="Pac";
                
    $Cambiacanale=true;
                }
            else
            {
                
    $QueryRow="valore";
                
    $QueryPreamb="SELECT tbl_96val.ora, tbl_misure.valore FROM ";
                if (
    $ParInput[$i][5]=="IntSolIrr" || $ParInput[$i][5]=="TmpMdul C")
                    
    $Strum=$IDSolar;                
                    else
                    
    $QueryText="AND    tbl_strum.id='" $Strum "' ";
                    
    $QueryPost="";    
                    }}
        
    /* Build the query that will returns the data to graph */
        
    $Requeste $QueryPreamb "tbl_misure INNER JOIN tbl_archivio ON
        (tbl_misure.id_archivio=tbl_archivio.id)
        INNER JOIN tbl_storicogiorno ON (tbl_archivio.id_giorno=tbl_storicogiorno.id)
        INNER JOIN tbl_96val ON (tbl_archivio.id_ora=tbl_96val.id)
        INNER JOIN tbl_canale ON (tbl_misure.id_canale=tbl_canale.id)
        INNER JOIN tbl_strum ON (tbl_canale.id_strum=tbl_strum.id)
        WHERE year(giorno)=" 
    $ParInput[$i][3] . " AND month(giorno)=" $ParInput[$i][2] . " AND
        day(giorno)=" 
    $ParInput[$i][1] . " AND tbl_canale.canale='" $Canale "' " .     
        
    $QueryText "AND tbl_archivio.id_ora > 20 AND tbl_archivio.id_ora < 89" $QueryPost
        
        
    $Result mysql_query($Requeste,$db);
        
    $valore=""//$ora="";
        
    if ($Cambiacanale$Canale="Rendimento";
        
    $CalPercento=1;
        switch (
    $Canale)
                {
                    case 
    "IntSolIrr":
                    
    $UnitaMis="W/m²";
                    
    $CalPercento=11;
                    
    //0-1100
                    
    break;
                    case 
    "TmpMdul C":
                    
    $UnitaMis="°C";
                    
    //0-100
                    
    break;
                    case 
    "Upv-Ist":
                    
    $UnitaMis="V";
                    
    $CalPercento=5;
                    
    //0-500
                    
    break;
                    case 
    "Ipv":
                    
    $UnitaMis="A";
                    
    //0-100
                    
    break;
                    case 
    "Iac-Ist":
                    
    $UnitaMis="A";
                    
    //0-100
                    
    break;
                    case 
    "Uac":
                    
    $UnitaMis="V";
                    
    $CalPercento=5;
                    
    //0-500
                    
    break;
                    case 
    "Pac":
                    
    $UnitaMis="W";
                    if (
    $PotenzaT)
                        
    $CalPercento=7000$NumeroInv /100;
                        else 
    $CalPercento=70;
                    
    //0-10000
                    
    break;                
                    case 
    "Rendimento":
                    
    $UnitaMis="%";
                    
    //0-100
                    
    break;
                    }
            
    //$x=0;    
          
    if ((!$Result || mysql_num_rows($Result)==0)) {
            } 
            else {    
            for (
    $j=1;$j<69;$j++)
                
    $valore[] = 0;
            
            while(
    $row mysql_fetch_array($Result))
                {
                
    //$x++;
                /* Push the results of the query in an array */
                //if ($ParOrario==($x+20)) $DatoAttuale[$i]=$row[$QueryRow]." ".$UnitaMis;
                
    $calOra=substr($row["ora"],0,2);
                
    $calMinuti=substr($row["ora"],3,2);
                
    $Indice=$calOra*4+$calMinuti/15-20;
                
    //echo $Indice;
                //$valore[] = round($row[$QueryRow],2);
                //$ora[] = substr($row["ora"],0,5);
                
    $valore[$Indice] = round(($row[$QueryRow]/$CalPercento),2);
                
    //$valore[$Indice] = round(($row[$QueryRow]),2);
                
    $ora[$Indice] = substr($row["ora"],0,5);
                
    $calOra=intval((15*($ParOrario-1))/60);
                
    $calMinuti=((15*($ParOrario-1))-(60*$calOra));
                
    $calTempo=sprintf("%02s",$calOra).":".sprintf("%02s",$calMinuti);    
                if (
    $ora[$Indice]==$calTempo$DatoAttuale[$i]=round(($row[$QueryRow]),2)." ".$UnitaMis;
                }
            }
            
    $tacche=intval(count($ora)/18);

    $Penna="Penna" $i;
    /* Save the data in the pData array */
    $MyData->addPoints($valore,$Penna);
    $pot1=$MyData;
    if (
    $Fatto==false)
         {
    $MyData->addPoints($ora,"ora");
         
    $Fatto=true;}
         
    //$MyData->addPoints($prova2,"ora");
    switch ($Penna)
    {
        case 
    "Penna1":
        
    $MyData->setPalette($Penna,array("R"=>255,"G"=>0,"B"=>0));
        
        break;    
        case 
    "Penna2":
        
    $MyData->setPalette($Penna,array("R"=>0,"G"=>255,"B"=>0));
        break;    
        case 
    "Penna3":
        
    $MyData->setPalette($Penna,array("R"=>0,"G"=>0,"B"=>255));
        break;    
        case 
    "Penna4":
        
    $MyData->setPalette($Penna,array("R"=>255,"G"=>255,"B"=>0));
        break;    
        case 
    "Penna5":
        
    $MyData->setPalette($Penna,array("R"=>0,"G"=>255,"B"=>255));
        break;    
        case 
    "Penna6":
        
    $MyData->setPalette($Penna,array("R"=>255,"G"=>0,"B"=>255));
        break;
        }
    }

    /* Render the picture (choose the best way) */
    //$myPicture->autoOutput("pictures/example.drawFilledSplineChart.png");
    if (($NumPenne>0) && ($i==6))
    {
        
    /* Put the timestamp column on the abscissa axis */
    $MyData->setAbscissa("ora");
    //$MyData->setAxisDisplay(1,AXIS_FORMAT_TIME,"H");

    /* Create the pChart object */
    $myPicture = new pImage(900,351,$MyData);

    $myPicture->drawGradientArea(0,0,773,350,DIRECTION_VERTICAL,array("StartR"=>47,"StartG"=>47,"StartB"=>47,"EndR"=>17,"EndG"=>17,"EndB"=>17,"Alpha"=>0));
    /*$myPicture->drawGradientArea(0,250,773,400,DIRECTION_VERTICAL,array("StartR"=>47,"StartG"=>47,"StartB"=>47,"EndR"=>27,"EndG"=>27,"EndB"=>27,"Alpha"=>100));*/
    //$myPicture->drawLine(0,249,773,349,array("R"=>0,"G"=>0,"B"=>0));
    //$myPicture->drawLine(0,250,773,350,array("R"=>70,"G"=>70,"B"=>70));
    /* Add a border to the picture */
    //$myPicture->drawRectangle(0,0,772,349,array("R"=>204,"G"=>204,"B"=>204));
    /* Write the picture title */
    $myPicture->setFontProperties(array("FontName"=>"../pChart210/fonts/pf_arma_five.ttf","FontSize"=>7));
    $myPicture->drawText(387,14,"STORICO",array("R"=>0,"G"=>0,"B"=>0,"Align"=>TEXT_ALIGN_MIDDLEMIDDLE));
    /* Define the chart area */
    $myPicture->setGraphArea(200,27,850,328);
    /* Draw a rectangle */
    $myPicture->drawFilledRectangle(200,27,850,328,array("R"=>255,"G"=>255,"B"=>255,"Dash"=>TRUE,"DashR"=>255,
    "DashG"=>255,"DashB"=>255,"BorderR"=>0,"BorderG"=>0,"BorderB"=>0));
    /* Turn on shadow computing */
    //$myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>20));
    $myPicture->setShadow(FALSE);
    /* Draw the scale */
    $myPicture->setFontProperties(array("R"=>0,"G"=>0,"B"=>0));
    $ScaleSettings = array("XMargin"=>4,"DrawSubTicks"=>TRUE,"GridR"=>0,
    "GridG"=>0,"GridB"=>0,"AxisR"=>0,"AxisG"=>0,"AxisB"=>0,"GridAlpha"=>30,"CycleBackground"=>TRUE,"LabelSkip"=>$tacche,"SkippedAxisR"=>0,"SkippedAxisG"=>0,"SkippedAxisB"=>0,"SkippedAxisAlpha"=>10,"Mode"=>SCALE_MODE_START0);
    $myPicture->drawScale($ScaleSettings);
    /* Draw the spline chart */
    //$myPicture->drawFilledSplineChart();
    $myPicture->drawSplineChart();
    /* Write the chart boundaries */
    $BoundsSettings = array("MaxDisplayR"=>237,"MaxDisplayG"=>23,"MaxDisplayB"=>48"MinDisplayR"=>23,"MinDisplayG"=>144,"MinDisplayB"=>237);
    $myPicture->writeBounds(BOUND_BOTH,$BoundsSettings);
    /* Write the 0 line */
    $myPicture->drawThreshold(0,array("WriteCaption"=>TRUE));
    /* Write the chart legend 
    $myPicture->setFontProperties(array("R"=>255,"G"=>255,"B"=>255));
    $myPicture->drawLegend(360,265,array("Style"=>LEGEND_NOBORDER));
    */
    /* Write the 1st data series statistics 
    $Settings = array("R"=>188,"G"=>224,"B"=>46,"Align"=>TEXT_ALIGN_BOTTOMLEFT);
    $myPicture->drawText(420,270,"Max : ".ceil($MyData->getMax("Penna1")),$Settings);
    $myPicture->drawText(490,270,"Min : ".ceil($MyData->getMin("Penna1")),$Settings);
    $myPicture->drawText(560,270,"Avg : ".ceil($MyData->getSerieAverage("Penna1")),$Settings);
    */
        
    $myPicture->render("MyPicChart.png");
        
    $StringaGrap=' <p align="center">[img]MyPicChart.png?V='.(rand()%1000).'[/img]</p>';      
            }
        else    {          
        
    $StringaGrap=

    <font color="black">Selezione non valida!</font></p>'
    ;
            }
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.