pChart 2.x forum
http://wiki.pchart.net/forum/

Combo Graphs Request
http://wiki.pchart.net/forum/viewtopic.php?f=3&t=50
Page 1 of 1

Author:  fullybaked [ Wed Jan 05, 2011 8:43 pm ]
Post subject:  Combo Graphs Request

Hi there,

First off, great library. I've been trialling it for the last couple of days for a new project I'm working on and it is producing far better results than the clients original tools.

However, one of the specifications requires a combo graph which displays both line and bar on the same axis. The bars are for the current year/month/days and lines show the previous year/month/days data so that comparisons can be made.

I haven't been able to see a way to do this with pChart and wondered if you could either let me know how, or if not currently possible I'd like to request this as a feature.

Thanks

Author:  jean-damien [ Wed Jan 05, 2011 9:55 pm ]
Post subject:  Re: Combo Graphs Request

Hi,

If I've correctly understood your question, the answer is in the setSerieDrawable() function of the pData class.

I've made an example below.

Kind regards,
JD.

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

/* Create the pData object with some random values*/
$MyData = new pData(); 
$MyData->addPoints(array(30,24,32),"This year");
$MyData->addPoints(array(28,20,27),"Last year");
$MyData->addPoints(array("Year","Month","Day"),"Labels");
$MyData->setAbscissa("Labels");

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

/* Create a solid background */
$Settings = array("R"=>179, "G"=>217, "B"=>91, "Dash"=>1, "DashR"=>199, "DashG"=>237, "DashB"=>111);
$myPicture->drawFilledRectangle(0,0,700,230,$Settings);

/* Do a gradient overlay */
$Settings = array("StartR"=>194, "StartG"=>231, "StartB"=>44, "EndR"=>43, "EndG"=>107, "EndB"=>58, "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"=>100));

/* Add a border to the picture */
$myPicture->drawRectangle(0,0,699,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,"Chart title",array("R"=>255,"G"=>255,"B"=>255));

/* Draw the scale */
$myPicture->setFontProperties(array("FontName"=>"../fonts/Forgotte.ttf","FontSize"=>11));
$myPicture->setGraphArea(50,60,670,190);
$myPicture->drawFilledRectangle(50,60,670,190,array("R"=>255,"G"=>255,"B"=>255,"Surrounding"=>-200,"Alpha"=>10));
$myPicture->drawScale(array("CycleBackground"=>TRUE));

/* Graph title */
$myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10));
$myPicture->drawText(50,52,"Chart subtitle",array("FontSize"=>20,"Align"=>TEXT_ALIGN_BOTTOMLEFT));

/* Draw the bar chart chart */
$myPicture->setFontProperties(array("FontName"=>"../fonts/pf_arma_five.ttf","FontSize"=>6));
$MyData->setSerieDrawable("Last year",FALSE);
$myPicture->drawBarChart();

/* Draw the line and plot chart */
$MyData->setSerieDrawable("Last year",TRUE);
$MyData->setSerieDrawable("This year",FALSE);
$myPicture->drawSplineChart();
$myPicture->drawPlotChart();

/* Make sure all series are drawable before writing the scale */
$MyData->setSerieDrawable("This year",TRUE);

/* Write the legend */
$myPicture->drawLegend(540,35,array("Style"=>LEGEND_ROUND,"Alpha"=>20,"Mode"=>LEGEND_HORIZONTAL));

/* Render the picture (choose the best way) */
$myPicture->autoOutput("pictures/example.a.png");
?>


Attachments:
example_a.png
example_a.png [ 17.22 KiB | Viewed 6814 times ]

Author:  kadanis [ Thu Jan 06, 2011 10:23 am ]
Post subject:  Re: Combo Graphs Request

Wow, thanks for the quick response. You've understood perfectly.

Thank you so much for providing the example, its exactly what I needed.

Page 1 of 1 All times are UTC
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/