openTBS / PHP - 如何创建堆积条形图?

时间:2016-01-14 04:46:17

标签: php opentbs

我正在尝试创建嵌入在PowerPoint模板幻灯片中的堆叠条形图,如下所示。当我在下面运行我的脚本时,我收到了一个错误。

  

TinyButStrong错误OpenTBS插件:(ChartChangeSeries)'chart3':   无法在图表'chart3'中找到系列'Series 3'。这个过程   正在结束,除非你将NoErr属性设置为true。

据我所知,我的系列明确定义了x轴的两个标签。

我哪里出错了,如何解决此错误?

Table Definition in Template

Stacked Bar Chart Sample Image

$ecdClosureStatus = getClosureChartData('ECD');
    $ChartNameOrNum = 'chart3'; // Title of the shape that embeds the chart
    $ChartRef = 'chart3'; // Title of the shape that embeds the chart
    $SeriesNameOrNum = 'Series 1';
    $NewLegend = "Closed On Time";
    $NewValues =    array(


(int)$ecdClosureStatus['ClosedOnTime'],
                                    0
                                );
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);

$SeriesNameOrNum = 'Series 2';
$NewLegend =    'Closed 1-30 Days Late';
$NewValues =    array(
                                    0,
                                    (int)$ecdClosureStatus['OneToThirtyDaysLate']
                                );
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);

$SeriesNameOrNum = 'Series 3';
$NewLegend =        'Closed 31-60 Days Late';
$NewValues =    array(
                                    0,
                                    (int)$ecdClosureStatus['ThirtyOneToSixtyDaysLate']
                                );
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);

$SeriesNameOrNum = 'Series 4';
$NewLegend =    'Closed 61-90 Days Late';
$NewValues =        array(
                                    0,
                                    (int)$ecdClosureStatus['SixtyOneToNinetyDaysLate']
                                );
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);

$SeriesNameOrNum = 'Series 5';
$NewLegend = 'Closed >90 Days Late';
$NewValues =    array(
                                    0,
                                    (int)$ecdClosureStatus['ClosedMoreThanNinetyDaysLate']
                                );
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend);

2 个答案:

答案 0 :(得分:2)

你的代码似乎没问题。问题可能来自于#3系列,它可能没有像你期望的那样在内部命名。仔细检查电子表格查看器中的名称,最后必须没有空格。您也可以尝试使用“修改Excel中的数据”按钮。

然而,您可以使用返回图表数据的新OpenTBS命令。它是OpenTBS beta version 1.9.5中的avaibale,但它很稳定。

命令:

$data = $TBS->PlugIn(OPENTBS_CHART_INFO, 'chart3');   
var_dump($data);

答案 1 :(得分:0)

我将每个系列的$ NewValues数组修改为两个元素的数组,第一个元素是x轴值,第二个元素是y轴值。 x轴值是两个值的数组("封闭时间","封闭后期"),y轴是两个元素的数组(一个元素为零,并且其他是该x值的值(按时关闭或迟到)

输出图表

Output Stacked Bar Chart

示例

public void Bold(View view) {

    ScrollTextView mScrollTextView = (ScrollTextView) findViewById(R.id.scroll_text_main);
    if(mScrollTextView.getTypeface()!=null){

        if(mScrollTextView.getTypeface().getStyle() == Typeface.ITALIC){
            mScrollTextView.setText("if italic, then change to bold_italico");
            mScrollTextView.setTypeface(null, Typeface.BOLD_ITALIC);
        }
        if(mScrollTextView.getTypeface().getStyle() == Typeface.BOLD_ITALIC){

            //mScrollTextView.setText("boudi italico!");

            mScrollTextView.setTypeface(null, Typeface.ITALIC);
        }
        else if(!mScrollTextView.getTypeface().isBold()){

            mScrollTextView.setTypeface(Typeface.DEFAULT_BOLD);

        } else {
            mScrollTextView.setTypeface(Typeface.DEFAULT);
        }
    }
}

解决方案代码

 $NewValues =   array(array('Closed On Time', 'Closed Late'), array(
                                        (int)$ecdClosureStatus['ClosedOnTime'],
                                        0
                                    ));