使用 php 绘制 bargraph-jpgraph
Plot bargraph-jpgraph using php
我正在使用 jpgraph
库绘制条形图,但我正在寻找一种方法来进行一些更改,例如:
(a) X 轴已经有文本 A、B、C、D。如何添加另一组文本,例如 Plot A 有 3 个条,我想将每个条标记为 1、2、3,如给定的
(b) 如何在条形图顶部写入每个条形图的值?
<?php // content="text/plain; charset=utf-8"
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_bar.php');
$data1y=array(47,80,40,116);
$data2y=array(61,30,82,105);
$data3y=array(115,50,70,93);
// Create the graph. These two calls are always required
$graph = new Graph(350,200,'auto');
$graph->SetScale("textlin");
$theme_class=new UniversalTheme;
$graph->SetTheme($theme_class);
$graph->yaxis->SetTickPositions(array(0,30,60,90,120,150), array(15,45,75,105,135));
$graph->SetBox(false);
$graph->ygrid->SetFill(false);
$graph->xaxis->SetTickLabels(array('A','B','C','D'));
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);
// Create the bar plots
$b1plot = new BarPlot($data1y);
$b2plot = new BarPlot($data2y);
$b3plot = new BarPlot($data3y);
// Create the grouped bar plot
$gbplot = new GroupBarPlot(array($b1plot,$b2plot,$b3plot));
// ...and add it to the graPH
$graph->Add($gbplot);
$b1plot->SetColor("white");
$b1plot->SetFillColor("#cc1111");
$b2plot->SetColor("white");
$b2plot->SetFillColor("#11cccc");
$b3plot->SetColor("white");
$b3plot->SetFillColor("#1111cc");
$graph->title->Set("Bar Plots");
// Display the graph
$graph->Stroke();
?>
编辑:
我通过在代码末尾添加以下内容找到了 (b) 的解决方案:
$b1plot->value->Show();
$b2plot->value->Show();
$b3plot->value->Show();
我还没有找到 (a) 的解决方案。
您可以通过 ->legend = '1';
在每个 bar_plot 上设置图例
然后您可以将图例布局设置为 1 列并为图表添加右边距,以便图例具有 space。
这是我的工作代码:
$data1y=array(47,80,40,116);
$data2y=array(61,30,82,105);
$data3y=array(115,50,70,93);
// Create the graph. These two calls are always required
$graph = new Graph(350,200,'auto');
$graph->SetScale("textlin");
$theme_class=new UniversalTheme;
$graph->SetTheme($theme_class);
$graph->yaxis->SetTickPositions(array(0,30,60,90,120,150, 180, 210), array(15,45,75,105,135));
$graph->SetBox(false);
$graph->ygrid->SetFill(false);
$graph->xaxis->SetTickLabels(array('A','B','C','D'));
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);
// Create the bar plots
$b1plot = new BarPlot($data1y);
$b2plot = new BarPlot($data2y);
$b3plot = new BarPlot($data3y);
// Create the grouped bar plot
$gbplot = new GroupBarPlot(array($b1plot,$b2plot,$b3plot));
// ...and add it to the graPH
$graph->Add($gbplot);
$b1plot->SetColor("white");
$b1plot->SetFillColor("#cc1111");
$b1plot->value->Show();
$b1plot->legend = '1';
$b2plot->SetColor("white");
$b2plot->SetFillColor("#11cccc");
$b2plot->value->Show();
$b2plot->legend = '2';
$b3plot->SetColor("white");
$b3plot->SetFillColor("#1111cc");
$b3plot->value->Show();
$b3plot->legend = '3';
$graph->title->Set("Bar Plots");
$graph->SetMargin(40,80,40,40);
$graph->legend->Pos(0.05,0.5, 'right', 'center');
$graph->legend->SetColumns(1);
// Display the graph
$graph->Stroke();
输出:
这样做您可以获得栏顶部的值:
$b1plot->value->Show();<br>
$b1plot->value->SetFormat( "1" );<br>
$b2plot->value->Show();<br>
$b2plot->value->SetFormat( "2" );<br>
$b3plot->value->Show();<br>
$b3plot->value->SetFormat( "3" );<br>
您还可以将文本的位置设置为栏的中心:
$b1plot->SetValuePos( "center" );<br>
$b2plot->SetValuePos( "center" );<br>
$b3plot->SetValuePos( "center" );<br>
我正在使用 jpgraph
库绘制条形图,但我正在寻找一种方法来进行一些更改,例如:
(a) X 轴已经有文本 A、B、C、D。如何添加另一组文本,例如 Plot A 有 3 个条,我想将每个条标记为 1、2、3,如给定的
(b) 如何在条形图顶部写入每个条形图的值?
<?php // content="text/plain; charset=utf-8"
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_bar.php');
$data1y=array(47,80,40,116);
$data2y=array(61,30,82,105);
$data3y=array(115,50,70,93);
// Create the graph. These two calls are always required
$graph = new Graph(350,200,'auto');
$graph->SetScale("textlin");
$theme_class=new UniversalTheme;
$graph->SetTheme($theme_class);
$graph->yaxis->SetTickPositions(array(0,30,60,90,120,150), array(15,45,75,105,135));
$graph->SetBox(false);
$graph->ygrid->SetFill(false);
$graph->xaxis->SetTickLabels(array('A','B','C','D'));
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);
// Create the bar plots
$b1plot = new BarPlot($data1y);
$b2plot = new BarPlot($data2y);
$b3plot = new BarPlot($data3y);
// Create the grouped bar plot
$gbplot = new GroupBarPlot(array($b1plot,$b2plot,$b3plot));
// ...and add it to the graPH
$graph->Add($gbplot);
$b1plot->SetColor("white");
$b1plot->SetFillColor("#cc1111");
$b2plot->SetColor("white");
$b2plot->SetFillColor("#11cccc");
$b3plot->SetColor("white");
$b3plot->SetFillColor("#1111cc");
$graph->title->Set("Bar Plots");
// Display the graph
$graph->Stroke();
?>
编辑: 我通过在代码末尾添加以下内容找到了 (b) 的解决方案:
$b1plot->value->Show();
$b2plot->value->Show();
$b3plot->value->Show();
我还没有找到 (a) 的解决方案。
您可以通过 ->legend = '1';
然后您可以将图例布局设置为 1 列并为图表添加右边距,以便图例具有 space。
这是我的工作代码:
$data1y=array(47,80,40,116);
$data2y=array(61,30,82,105);
$data3y=array(115,50,70,93);
// Create the graph. These two calls are always required
$graph = new Graph(350,200,'auto');
$graph->SetScale("textlin");
$theme_class=new UniversalTheme;
$graph->SetTheme($theme_class);
$graph->yaxis->SetTickPositions(array(0,30,60,90,120,150, 180, 210), array(15,45,75,105,135));
$graph->SetBox(false);
$graph->ygrid->SetFill(false);
$graph->xaxis->SetTickLabels(array('A','B','C','D'));
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);
// Create the bar plots
$b1plot = new BarPlot($data1y);
$b2plot = new BarPlot($data2y);
$b3plot = new BarPlot($data3y);
// Create the grouped bar plot
$gbplot = new GroupBarPlot(array($b1plot,$b2plot,$b3plot));
// ...and add it to the graPH
$graph->Add($gbplot);
$b1plot->SetColor("white");
$b1plot->SetFillColor("#cc1111");
$b1plot->value->Show();
$b1plot->legend = '1';
$b2plot->SetColor("white");
$b2plot->SetFillColor("#11cccc");
$b2plot->value->Show();
$b2plot->legend = '2';
$b3plot->SetColor("white");
$b3plot->SetFillColor("#1111cc");
$b3plot->value->Show();
$b3plot->legend = '3';
$graph->title->Set("Bar Plots");
$graph->SetMargin(40,80,40,40);
$graph->legend->Pos(0.05,0.5, 'right', 'center');
$graph->legend->SetColumns(1);
// Display the graph
$graph->Stroke();
输出:
这样做您可以获得栏顶部的值:
$b1plot->value->Show();<br>
$b1plot->value->SetFormat( "1" );<br>
$b2plot->value->Show();<br>
$b2plot->value->SetFormat( "2" );<br>
$b3plot->value->Show();<br>
$b3plot->value->SetFormat( "3" );<br>
您还可以将文本的位置设置为栏的中心:
$b1plot->SetValuePos( "center" );<br>
$b2plot->SetValuePos( "center" );<br>
$b3plot->SetValuePos( "center" );<br>