为什么pchart图表不呈现?我安装了gd2

时间:2013-09-23 07:31:26

标签: php function wampserver pchart

我正在尝试将图表集成到网站中。我通过尝试查看有效的示例see here来测试gd2分期付款。然后我继续使用以下代码将其集成到我的php文件中:

 include("grafice/class/pData.class.php");
 include("grafice/class/pDraw.class.php");
 include("grafice/class/pImage.class.php");

  //creaza si populeaza obiectul
 $MyData = new pData();  
 $MyData->addPoints(array(4,VOID,VOID,10,8,3),"Proba 1");
 $MyData->addPoints(array(3,10,5,8,5,5),"Proba 2");
 $MyData->addPoints(array(2,7,5,1,9,2),"Proba 3");
 $MyData->setSerieTicks("Proba 2",4);
 $MyData->setSerieWeight("Proba 3",2);
 $MyData->setAxisName(0,"Note");
 $MyData->addPoints(array("Ian","Feb","Mar","Apr","Mai","Iun"),"Labels");
 $MyData->setSerieDescription("Labels","Luni");
 $MyData->setAbscissa("Labels");

 // creaza obiectul chart
 $myPicture = new pImage(700,230,$MyData);


 //deseneaza fundalul
 $Settings = array("R"=>170, "G"=>183, "B"=>87, "Dash"=>1, "DashR"=>190, "DashG"=>203, "DashB"=>107);
 $myPicture->drawFilledRectangle(0,0,700,230,$Settings);

 // suprapune un gradient
 $Settings = array("StartR"=>219, "StartG"=>231, "StartB"=>139, "EndR"=>1, "EndG"=>138, "EndB"=>68, "Alpha"=>50);
 $myPicture->drawGradientArea(0,0,700,230,DIRECTION_VERTICAL,$Settings);
 $myPicture->drawGradientArea(0,0,700,20,DIRECTION_VERTICAL,array("StartR"=>0,"StartG"=>0,"StartB"=>0,"EndR"=>50,"EndG"=>50,"EndB"=>50,"Alpha"=>80));

 // bordura
 $myPicture->drawRectangle(0,0,699,229,array("R"=>0,"G"=>0,"B"=>0));

 // titlul pozei
 $myPicture->setFontProperties(array("FontName"=>"fonts/Silkscreen.ttf","FontSize"=>6));
 $myPicture->drawText(10,13,"EXEMPLU",array("R"=>255,"G"=>255,"B"=>255));

 // titlul graficului 
 $myPicture->setFontProperties(array("FontName"=>"fonts/Forgotte.ttf","FontSize"=>11));
 $myPicture->drawText(250,55,"Media Notelor",array("FontSize"=>20,"Align"=>TEXT_ALIGN_BOTTOMMIDDLE));

 //deseneaza marimea 1 
 $myPicture->setGraphArea(60,60,450,190);
 $myPicture->drawFilledRectangle(60,60,450,190,array("R"=>255,"G"=>255,"B"=>255,"Surrounding"=>-200,"Alpha"=>10));

 $AxisBoundaries = array(0=>array("Min"=>0,"Max"=>10));
 $scaleSettings  = array("GridR"=>200,"GridG"=>200,"GridB"=>200,"DrawSubTicks"=>TRUE,"CycleBackground"=>TRUE,"Mode"=>SCALE_MODE_MANUAL, "ManualScale"=>$AxisBoundaries);

$myPicture->drawScale($scaleSettings);
 $myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10));
 $myPicture->setFontProperties(array("FontName"=>"fonts/pf_arma_five.ttf","FontSize"=>6));
 $myPicture->drawLineChart(array("DisplayValues"=>TRUE,"DisplayColor"=>DISPLAY_AUTO));
 $myPicture->setShadow(FALSE);

 //deseneaza marimea 2 
 $myPicture->setGraphArea(500,60,670,190);
 $myPicture->drawFilledRectangle(500,60,670,190,array("R"=>255,"G"=>255,"B"=>255,"Surrounding"=>-200,"Alpha"=>10));
 $myPicture->drawScale(array("Pos"=>SCALE_POS_TOPBOTTOM,"DrawSubTicks"=>TRUE));
 $myPicture->setShadow(TRUE,array("X"=>-1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10));
 $myPicture->drawLineChart();
 $myPicture->setShadow(FALSE);

 // deseneaza legenda
 $myPicture->drawLegend(510,205,array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_HORIZONTAL));

 //rendereaza poza
 $myPicture->autoOutput("img/example.drawLineChart.png");

不幸的是,这会使整个页面呈现如下:(由于您需要一个帐户才能上传图片)here

我做错了什么吗?我在函数中使用了这段代码。

另外,在WAMP示例中不起作用。任何方式?

1 个答案:

答案 0 :(得分:0)

我设法做到了,并在这里张贴以帮助他人!

所以,我做了这个功能,但是我编辑了BOLD部分

function grafice()
{     
/* pChart library inclusions */
include("../class/pData.class.php");
include("../class/pDraw.class.php");
include("../class/pImage.class.php");


/* Create and populate the pData object */

$MyData = new pData();  

$MyData->addPoints(array(10,5,7,8), "Probe 1");


$MyData->setSerieWeight("Probe 1",2);

$MyData->setAxisName(0,"Media Generala");

$MyData->addPoints(array("Ian","Feb","Mar","Apr","Mai","Iun"),"Labels");

$MyData->setSerieDescription("Labels","Luni");

$MyData->setAbscissa("Labels");
 $serieSettings = array("R"=>255,"G"=>185,"B"=>11);
 $MyData->setPalette("Probe 1",$serieSettings);


/* Create the pChart object */

$myPicture = new pImage(500,230,$MyData);



/* Draw the background */

$Settings = array("R"=>248, "G"=>226, "B"=>174, "Dash"=>1, "DashR"=>190, "DashG"=>203, "DashB"=>107);

$myPicture->drawFilledRectangle(0,0,700,230,$Settings);



/* Overlay with a gradient */

$Settings = array("StartR"=>238, "StartG"=>216, "StartB"=>174, "EndR"=>238, "EndG"=>216, "EndB"=>174, "Alpha"=>50);

$myPicture->drawGradientArea(0,0,700,230,DIRECTION_VERTICAL,$Settings);

$myPicture->drawGradientArea(0,0,700,20,DIRECTION_VERTICAL,array("StartR"=>0,"StartG"=>0,"StartB"=>0,"EndR"=>50,"EndG"=>50,"EndB"=>50,"Alpha"=>80));



/* Add a border to the picture */

$myPicture->drawRectangle(0,0,499,229,array("R"=>0,"G"=>0,"B"=>0));



/* Write the picture title */ 

$myPicture->setFontProperties(array("FontName"=>"../fonts/Silkscreen.ttf","FontSize"=>6));

$myPicture->drawText(10,13,"Evolutia Mediei Generale",array("R"=>255,"G"=>255,"B"=>255));



/* Write the chart title */ 

$myPicture->setFontProperties(array("FontName"=>"../fonts/Forgotte.ttf","FontSize"=>11));

$myPicture->drawText(250,55,"Media Generala",array("FontSize"=>20,"Align"=>TEXT_ALIGN_BOTTOMMIDDLE));



/* Draw the scale and the 1st chart */

$AxisBoundaries = array(0=>array("Min"=>0,"Max"=>10));
$scaleSettings  = array("DrawSubTicks"=>TRUE,"Mode"=>SCALE_MODE_MANUAL, "ManualScale"=>$AxisBoundaries);

$myPicture->setGraphArea(60,60,450,190);

$myPicture->drawFilledRectangle(60,60,450,190,array("R"=>0,"G"=>0,"B"=>0,"Surrounding"=>-200,"Alpha"=>10));

$myPicture->drawScale($scaleSettings);

$myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10));

$myPicture->setFontProperties(array("FontName"=>"../fonts/pf_arma_five.ttf","FontSize"=>10,"R"=>0,"G"=>0,"B"=>0));

$myPicture->drawLineChart(array("DisplayValues"=>TRUE,"DisplayR"=>0, "DisplayG"=>0, "DisplayB"=>0, "DisplayOffset"=>10));

$myPicture->setShadow(FALSE);




/* Render the picture (choose the best way) */

/* $myPicture->**( I DELETED ThIS)--> autoOutput <---** ("pictures/example.drawLineChart.png"); and added */

 $myPicture->render("pictures/example.drawLineChart.png");


}

然后,当我想打电话时,就像这样:

<?php grafice(); ?>

然后我可以这样做:

<img src="pictures/example.drawLineChart.png" />

现在我只使用会话ID更改图片名称,因此我将为每个人提供不同的图表;)希望这会对某人有所帮助!