【问题标题】:How do you label the x-axis in pChart您如何在 pChart 中标记 x 轴
【发布时间】:2014-08-01 17:49:09
【问题描述】:

我正在尝试命名我的 x 轴(见图)。

如您所见,没有打印 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");

【问题讨论】:

    标签: php pchart


    【解决方案1】:

    这个问题让我大吃一惊。我在深夜诊断只是让我的图表显示出来。

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

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

    【讨论】:

    • 这适用于 2.0 - 并且在文档中找不到。
    【解决方案2】:

    瑞恩,

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

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

    希望这会有所帮助。

    【讨论】:

    • 我同意文档显示了这一点。但是,添加后它仍然不显示轴的标签。我开始认为文件已损坏或未正确下载。
    【解决方案3】:

    对于未来的任何人:

    我不知道为什么我的 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");
    

    【讨论】:

      【解决方案4】:

      你也可以把外框做大一点,使用drawText(),控制力更强,更容易实现。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        相关资源
        最近更新 更多