如何在pChart中标记x轴

时间:2014-08-01 17:49:09

标签: php pchart

我想命名我的x轴(见图)。

Image without name on x-axis when my code sould print one.

如您所见,未打印任何x轴名称。但是,我的代码应该打印一行,因为这行:$MyData->setSerieDescription("Labels","Range of Data");,除非我误解了用法。

代码:

 /* 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($LT50,$GT50_LT100,$GT100_LT150,$GT150_LT200,$GT200_LT250,$GT250_LT300,$GT300_LT350,$GT350_LT400,$GT400_LT450,$GT450),"Probe 3");
 $MyData->setSerieWeight("Probe 3",2);
 $MyData->setAxisName(0,"Number of Occurrences");;
 $MyData->addPoints(array("Diff < 50","50 > Diff < 100","100 > Diff < 150","150 > Diff < 200","200 > Diff < 250","250 > Diff < 300","300 > Diff < 350", "350 > Diff < 400", "400 > Diff < 450", "Diff > 450"),"Labels");
 $MyData->setSerieDescription("Labels","Range of Data");
 $MyData->setAbscissa("Labels");


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

 /* Turn of Antialiasing */
 $myPicture->Antialias = FALSE;

 /* Add a border to the picture */
 $myPicture->drawRectangle(0,0,1440,675,array("R"=>0,"G"=>0,"B"=>0));

 /* Write the chart title */ 
 $myPicture->setFontProperties(array("FontName"=>"../fonts/Forgotte.ttf","FontSize"=>20));
 $myPicture->drawText(250,35,"Time Diff Between TRWire Job Created and Crew Dispatched",array("FontSize"=>15,"Align"=>TEXT_ALIGN_BOTTOMMIDDLE));

 /* Set the default font */
 $myPicture->setFontProperties(array("FontName"=>"../fonts/pf_arma_five.ttf","FontSize"=>10));

 /* Define the chart area */
 $myPicture->setGraphArea(60,40,1400,600);

 /* Draw the scale */
$AxisBoundaries = array(0=>array("Min"=>0,"Max"=>$max));
 $scaleSettings = array("Mode"=>SCALE_MODE_MANUAL, "LabelRotation"=>30, "ManualScale"=>$AxisBoundaries, "XMargin"=>10,"YMargin"=>10,"Floating"=>TRUE,"GridR"=>200,"GridG"=>200,"GridB"=>200,"DrawSubTicks"=>TRUE,"CycleBackground"=>TRUE );
 $myPicture->drawScale($scaleSettings);

 /* Turn on Antialiasing */
 $myPicture->Antialias = TRUE;

 /* Draw the line chart */
 $myPicture->drawLineChart();

 /* Render the picture (choose the best way) */
 $myPicture->autoOutput("./pChart/examples/pictures/example.drawLineChart.simple.png");

4 个答案:

答案 0 :(得分:5)

这个问题掩盖了我的废话。我一直都在深夜诊断,只是让我的图表显示出来。

与丢失的X轴标题相关,我终于找到了使用$myData->setAbscissaName("Time of Reading");为我工作的源目录。这太神奇了。

他们的文件很差。我甚至复制并粘贴了他们的示例脚本,这些脚本有一个标题为x轴(从未像复制和粘贴那样工作),结果他们也没有标题。非常沮丧。

答案 1 :(得分:0)

瑞恩

我在Source Forge上查看了这个库的文档。似乎建议您使用方法SetXAxisName标记X轴,使用SetYAxisName标记Y轴。不确定为什么SetAxisName正确标记Y轴(可能是不推荐的版本?)但我会改变它。

SetSerieName用于标记数据系列,以便在调用drawLegend时显示在图例上。

希望这有帮助。

答案 2 :(得分:0)

对于未来的任何人:

我无法找出为什么我的pChart这样做。重新安装后,没有任何改变。因此,为了创建一个换档轴名称,我生成了一个图例并将其放在图表的底部中间。它可以作为一个非常有效的轴名称,尽管让它完全运行会很好。

最终守则:

 /* 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($LT30,$GT60,$GT90,$GT120,$GT150,$GT180,$GT210,$GT240,$GT270,$GT300,$GT330,$GT360,$GT390,$GT420,$GT450,$GT480,$GT510,$GT540,$GT570,$GT600),"Time Range (minutes)");
 $MyData->setSerieWeight("Time Range (minutes)",2);
 $MyData->setAxisName(0,"Number of Occurrences");
 $MyData->addPoints(array("< 30","30-60","60-90","90-120","120-150","150-180","180-210","210-240","240-270","270-300","300-330","330-360","360-390","390-420","420-450","450-480","510-540","540-570","570-600","> 600"),"Labels");
 $MyData->setSerieDescription("Labels","Months");
 $MyData->setAbscissa("Labels");
 $MyData->SetXAxisName(1,"Range of Data");


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

 /* Turn of Antialiasing */
 $myPicture->Antialias = FALSE;

 /* Add a border to the picture */
 $myPicture->drawRectangle(0,0,1440,675,array("R"=>0,"G"=>0,"B"=>0));

 /* Write the chart title */ 
 $myPicture->setFontProperties(array("FontName"=>"../fonts/Forgotte.ttf","FontSize"=>20));
 $myPicture->drawText(250,35,"Time Difference Between TRWire Job Created and Crew Dispatched in 2014",array("FontSize"=>15,"Align"=>TEXT_ALIGN_BOTTOMMIDDLE));

 /* Set the default font */
 $myPicture->setFontProperties(array("FontName"=>"../fonts/verdana.ttf","FontSize"=>10,));

 /* Define the chart area */
 $myPicture->setGraphArea(60,40,1400,600);

 /* Draw the scale */
$AxisBoundaries = array(0=>array("Min"=>0,"Max"=>$max));
 $scaleSettings = array("Mode"=>SCALE_MODE_MANUAL, "LabelRotation"=>30, "ManualScale"=>$AxisBoundaries, "XMargin"=>10,"YMargin"=>10,"Floating"=>TRUE,"GridR"=>200,"GridG"=>200,"GridB"=>200,"DrawSubTicks"=>TRUE,"CycleBackground"=>TRUE );
 $myPicture->drawScale($scaleSettings);

 /* Turn on Antialiasing */
 $myPicture->Antialias = TRUE;

 /* Draw the line chart */
 $myPicture->drawLineChart();
 $myPicture->drawPlotChart(array("DisplayValues"=>TRUE,"PlotBorder"=>TRUE,"BorderSize"=>2,"Surrounding"=>-60,"BorderAlpha"=>80));

 $myPicture->drawLegend(600,650,array("Style"=>LEGEND_BORDER,"Mode"=>LEGEND_HORIZONTAL));

 /* Render the picture (choose the best way) */
 $myPicture->autoOutput("./pChart/examples/pictures/example.drawLineChart.simple.png");

答案 3 :(得分:0)

您还可以使外框变大,并使用drawText(),这样可以提供更多控制,并且更容易实现。

$myPicture->drawText(450, 55, "Width in Pixels", array("FontSize" => 15, "Align" => TEXT_ALIGN_BOTTOMMIDDLE));