Web www.gerd-tentler.de
Version 4.11 (released Feb. 12, 2023) [Download]

Horizontal Bar-Graphs

Have a look at the following examples to see how you can create your own graphs:
Example #1
The most simple graph looks like this:
$graph = new BAR_GRAPH("hBar");
$graph->values = "380,150,260,310,430";
echo $graph->create();
 1 
 25% 
 2 
 10% 
 3 
 17% 
 4 
 20% 
 5 
 28% 
Example #2
Now let's add some labels and titles:
$graph = new BAR_GRAPH("hBar");
$graph->values = "380,150,260,310,430";
$graph->labels = "Jan.,Feb.,Mar.,Apr.,May";
$graph->titles = "Month,Sales";
echo $graph->create();
MonthSales
 Jan. 
 25% 
 Feb. 
 10% 
 Mar. 
 17% 
 Apr. 
 20% 
 May 
 28% 
Example #3
It's also possible to create grouped bar-graphs for comparison.
Separate grouped values by a semicolon and add a legend:
$graph = new BAR_GRAPH("hBar");
$graph->labels = "Jan.,Feb.,Mar.,Apr.,May";
$graph->titles = "Month,Sales";
$graph->values = "380;420, 150;340, 260;120, 310;250, 430;370";
$graph->legend = "2001,2002";
echo $graph->create();
MonthSales
 Jan. 
 13% 
 14% 
 Feb. 
 5% 
 11% 
 Mar. 
 9% 
 4% 
 Apr. 
 10% 
 8% 
 May 
 14% 
 12% 
 
2001
2002

If you want to use an array for the values, here's an example:
$graph->values = array("380;420", "150;340", "260;120");
Example #4
Let's change some colors and show the values:
$graph = new BAR_GRAPH("hBar");
$graph->labels = "Jan.,Feb.,Mar.,Apr.,May";
$graph->titles = "Month,Sales,Percent";
$graph->values = "380;420, 150;340, 260;120, 310;250, 430;370";
$graph->legend = "2001,2002";
$graph->graphBGColor = "#B0E0B0";
$graph->graphBorder = "1px solid green";
$graph->graphPadding = 10;
$graph->titleColor = "yellow";
$graph->titleBGColor = "#60C060";
$graph->barColors = "#C0D0C0,#80D080";
$graph->barBGColor = "#D0F0D0";
$graph->labelColor = "yellow";
$graph->labelBGColor = "#60C060";
$graph->absValuesColor = "#008000";
$graph->absValuesBGColor = "#D0F0D0";
$graph->percValuesColor = "#008000";
$graph->legendColor = "#008000";
$graph->legendBGColor = "#D0F0D0";
$graph->legendAbsValues = true;
$graph->showValues = 1;
echo $graph->create();
MonthSalesPercent
 Jan.  380 
 13% 
 420 
 14% 
 Feb.  150 
 5% 
 340 
 11% 
 Mar.  260 
 9% 
 120 
 4% 
 Apr.  310 
 10% 
 250 
 8% 
 May  430 
 14% 
 370 
 12% 
 
2001(1530)
2002(1500)
Example #5
Bar width (pixels), length (ratio) and border (CSS-spec) are also changable.
By the way, BAR_GRAPH also supports floating point numbers and negative values:
$graph = new BAR_GRAPH("hBar");
$graph->labels = "Jan.,Feb.,Mar.,Apr.,May";
$graph->barColors = "white";
$graph->showValues = 1;
$graph->values = "0.38,-0.15,-0.26,0.31,0.43";
$graph->percValuesDecimals = 2;
$graph->barWidth = 40;
$graph->barLength = 1.5;
$graph->barBorder = "2px solid red";
echo $graph->create();
 Jan.  0.38 
 24.84% 
 Feb.  -0.15 
9.80% 
 Mar.  -0.26 
16.99% 
 Apr.  0.31 
 20.26% 
 May  0.43 
 28.10% 
Example #6
For large amounts of values, it may be useful to split them into several charts:
$graph = new BAR_GRAPH("hBar");
$graph->values = "1,2,3,4,5,6,7,8,9,10,10,9,8,7,6,5,4,3,2,1";
$graph->labelBGColor = "#C0C0F0";
$graph->barBGColor = "#E0E0F0";
$graph->charts = 2;
echo $graph->create();
 1 
 1% 
 2 
 2% 
 3 
 3% 
 4 
 4% 
 5 
 5% 
 6 
 5% 
 7 
 6% 
 8 
 7% 
 9 
 8% 
 10 
 9% 
 11 
 9% 
 12 
 8% 
 13 
 7% 
 14 
 6% 
 15 
 5% 
 16 
 5% 
 17 
 4% 
 18 
 3% 
 19 
 2% 
 20 
 1% 
Example #7
It is possible to set extra colors for bars whose value exceeds certain levels:
$graph = new BAR_GRAPH("hBar");
$graph->values = "380,150,260,310,430";
$graph->showValues = 1;
$graph->barLevelColors = array(1, "red", 260, "yellow", 380, "lightgreen");
echo $graph->create();
 1  380 
 25% 
 2  150 
 10% 
 3  260 
 17% 
 4  310 
 20% 
 5  430 
 28% 

NOTE: All level-color-pairs should be written in ascending order, and of course this feature is not suited for grouped bar-graphs.

You can also use the keyword MAX for setting the color of the bar with the highest value:
$graph = new BAR_GRAPH("hBar");
$graph->values = "380,150,260,310,430";
$graph->showValues = 1;
$graph->barLevelColors = array(1, "#C0C0FF", 300, "#8080FF", "MAX", "#4040FF");
echo $graph->create();
 1  380 
 25% 
 2  150 
 10% 
 3  260 
 17% 
 4  310 
 20% 
 5  430 
 28% 
Example #8
Let's do some more design changes and add a prefix to the values:
$graph = new BAR_GRAPH("hBar");
$graph->values = "380,150,260,310,430";
$graph->labels = "Jan.,Feb.,Mar.,Apr.,May";
$graph->showValues = 1;
$graph->barColors = "#E0E0E0";
$graph->barBGColor = "white";
$graph->barBorder = "1px solid #808080";
$graph->labelColor = "#A0A0A0";
$graph->labelBGColor = "";
$graph->labelBorder = "1px dashed #A0A0A0";
$graph->labelFont = "Arial Black, Arial, Helvetica";
$graph->labelSize = 16;
$graph->absValuesColor = "silver";
$graph->absValuesBGColor = "white";
$graph->absValuesBorder = "1px solid silver";
$graph->absValuesFont = "Verdana, Arial, Helvetica";
$graph->absValuesSize = 14;
$graph->absValuesPrefix = "€";
$graph->percValuesColor = "#C0C0C0";
$graph->percValuesFont = "Comic Sans MS, Times New Roman";
$graph->percValuesSize = 16;
echo $graph->create();
 Jan.  €380 
 25% 
 Feb.  €150 
 10% 
 Mar.  €260 
 17% 
 Apr.  €310 
 20% 
 May  €430 
 28% 
Example #9
You can also use images (PNG, JPG or GIF) instead of bar colors, and add some space between labels:
$graph = new BAR_GRAPH("hBar");
$graph->values = "50;30;40, 60;80;50, 70;40;60";
$graph->labels = "Jan.,Feb.,Mar.";
$graph->legend = "cats,dogs,birds";
$graph->barColors = "blue.gif,red.gif,green.gif";
$graph->labelSpace = 10;
echo $graph->create();
 Jan. 
 10% 
 6% 
 8% 
 Feb. 
 13% 
 17% 
 10% 
 Mar. 
 15% 
 8% 
 13% 
 
cats
dogs
birds

NOTE: Images are not included in this package.
Example #10
Sometimes you have very similar values, like for instance 1000, 1010, 1020. The difference between them is too small to view in a graph:
$graph = new BAR_GRAPH("hBar");
$graph->values = "1010,1020,1030";
$graph->showValues = 1;
echo $graph->create();
 1  1010 
 33% 
 2  1020 
 33% 
 3  1030 
 34% 

In this case you can tweak the bar length by using the baseValue variable. Please note that not only the bar length, but also the percentage changes accordingly:
$graph = new BAR_GRAPH("hBar");
$graph->values = "1010,1020,1030";
$graph->baseValue = 1000;
$graph->showValues = 1;
echo $graph->create();
 1  1010 
 17% 
 2  1020 
 33% 
 3  1030 
 50% 

Comments