【问题标题】:pChart - Is possible to combine a stacked bar chart and a regular bar chart?pChart - 可以将堆积条形图和常规条形图结合起来吗?
【发布时间】:2015-06-19 18:50:25
【问题描述】:

我正在尝试使用 pChart 创建一个组合图表,使用 3 个系列。两个系列用于堆积条形图,其余系列用于条形图。我想要实现的是在侧面放置一个带有常规条的堆叠条柱(如总条)。有什么办法可以做到这一点? 我知道 pChart 可以选择组合图表,但它似乎只有在组合不同类型的图表时才能真正发挥作用,例如条形图和折线图。但是当我尝试组合类似的图表时,比如条形图和堆叠条形图,它们似乎会相互覆盖。 pChart 文档在这个主题上不是很清楚(或者我真的错过了一些东西)。 我的代码:

$MyData = new pData();
$Mydata->addPoints(array(0,97,149,167),"Previous");
$Mydata->addPoints(array(97,52,18,10),"Current");
$Mydata->addPoints(array(97,149,167,177),"Total");

$Mydata->setAxisName(0,"Quantity");
$Mydata->addPoints(array('1','2','3','4'),"Period");
$Mydata->setSerieDescription("Period","Period");
$Mydata->setAbscissa("Period");
$Mydata->setAbscissaName("Period");

$MyChart = new pImage(975,520,$MyData);
$MyChart->setFontProperties(array("FontName"=>"pChart/fonts/verdana.ttf","FontSize"=>11));

$MyChart->setGraphArea(270,100,940,390);
$MyChart->drawFilledRectangle(270,100,940,390,array("R"=>255,"G"=>255,"B"=>255,"Surrounding"=>-200,"Alpha"=>10));
$MyChart->drawScale(array('CycleBackground'=>TRUE,'Mode'=>SCALE_MODE_START0,'Factors'=>array(20),"Pos"=>SCALE_POS_TOPBOTTOM,"DrawSubTicks"=>FALSE,"GridR"=>128,"GridG"=>128,"GridB"=>128,"GridAlpha"=>20));
$MyChart->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10));
$MyChart->setFontProperties(array("FontName"=>"pChart/fonts/verdana.ttf","FontSize"=>11));

$MyData->setSerieDrawable("Total",FALSE);
$MyChart->drawStackedBarChart(array("DisplayValues"=>TRUE,"DisplayColor"=>DISPLAY_AUTO,"Rounded"=>TRUE,"Surrounding"=>60));

$MyData->setSerieDrawable("Previous",FALSE);
$MyData->setSerieDrawable("Current",FALSE);
$MyData->setSerieDrawable("Total",TRUE);
$MyChart->drawBarChart(array("DisplayPos"=>LABEL_POS_INSIDE,"DisplayValues"=>TRUE,"DisplayColor"=>DISPLAY_AUTO,"Rounded"=>TRUE,"Surrounding"=>60));

$MyChart->setShadow(FALSE);

$MyData->setSerieDrawable("Previous",TRUE);
$MyData->setSerieDrawable("Current",TRUE);
$MyChart->drawLegend(30,20,array("Alpha"=>20,"Mode"=>LEGEND_VERTICAL));

$MyChart->Render("Graph.png");

感谢您的帮助。

【问题讨论】:

    标签: pchart


    【解决方案1】:
    $MyData->setSerieDrawable("Received",true);
    $MyData->setSerieDrawable("Despatched",true);
    

    pData::setSerieDrawable 在 PHP 5.2.6 中不起作用 - 它可能在以后的版本中起作用,但我的 OOP 知识有限。以前,当$myPicture = new pImage($imgW,400,$MyData);$MyData 的实例调用时,我认为这是由pImage 添加的。

    问题是$MyData->setSerieDrawable("Despatched",true); 影响$MyData 而不是pImage 中的数据。我的解决方案是在pImage中添加一个新函数:

    function SetisDrawable($SerieName='', $isDrawable=false) {
        if(!empty($SerieName)){
            $this->DataSet->Data["Series"][$SerieName]["isDrawable"] =  $isDrawable;
        }
    }
    
    $myPicture->SetisDrawable("Received", FALSE);
    $myPicture->SetisDrawable("Despatched", FALSE);
    $myPicture->SetisDrawable("WIP", TRUE);
    $myPicture->drawLineChart(array("DisplayValues"=>TRUE, "DisplayOffset"=>"15"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 2017-02-26
      • 2016-10-13
      • 2017-10-14
      • 2017-05-27
      • 1970-01-01
      • 2014-02-09
      相关资源
      最近更新 更多