首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SetSerieDescription - pChart不工作

SetSerieDescription - pChart不工作
EN

Stack Overflow用户
提问于 2013-06-17 19:18:08
回答 2查看 1.4K关注 0票数 1

我正在尝试为条形图的x轴分配一个标签,该标签是一个存储在$gsettings‘’axisXlabel‘下的数组中的普通文本字符串。不幸的是,pCharts SetSerieDescription似乎没有像预期的那样工作。

下面是生成图形的函数和当前输出的附件。有趣的部分是/*下面的3行将数据序列绑定到X轴*/

代码语言:javascript
复制
/**
* function to plot bar charts
*/
function cg_graphs_plot_bar_graph($gdata, $gsettings){

  $graph_data = new pData();

  if(isset($gdata['bar_plots2'])){ //if this is set, its a duel bar graph
    $graph_data->addPoints($gdata['bar_plots'],"surgeondata");
    $graph_data->addPoints(array(0,0,0,0),"surgeondatanull");
    $graph_data->addPoints($gdata['bar_plots2'],"everyonedata");
    $graph_data->addPoints(array(0,0,0,0),"everyonedatanull");
    $graph_data->setSerieDrawable(array("everyonedatanull"), FALSE);
    $graph_data->setSerieDescription("surgeondata",$gdata['surgeonname']);
    $graph_data->setSerieDescription("everyonedata","All Surgeons");
    $graph_data->setAxisUnit(0,"%");

    $surgeon = array("R"=>21,"G"=>0,"B"=>0); //surgeon series colour
    $all = array("R"=>191,"G"=>160,"B"=>36); //everyone series colour
    $graph_data->setPalette("surgeondata",$surgeon);
    $graph_data->setPalette("everyonedata",$all);
    $graph_data->setPalette("surgeondatanull",$surgeon);
    $graph_data->setPalette("everyonedatanull",$all);

  } else {
    $graph_data->addPoints($gdata['bar_plots'],"percentiles");
    $graph_data->addPoints($gdata['surgeon_bar'],"surgeonbar");
    $graph_data->setSerieDrawable(array("surgeonbar"), FALSE);
  }
  $graph_data->setAxisName(0,$gsettings['axisYlabel']);
  /* Bind a data serie to the X axis */
  $graph_data->addPoints($gdata['xaxis_names'],"Labels");
  $graph_data->setSerieDescription("Labels",$gsettings['axisXlabel']);
  $graph_data->setAbscissa("Labels");

  $width=540;
  $height=419;

  $chart = new pImage($width,$height,$graph_data);
  $chart->drawFromJPG(0,0,drupal_get_path('module', 'cg_graphs')."/images/graphbg.jpg");

  /* Write the picture title */ 
  $chart->setFontProperties(array("FontName"=>drupal_get_path('module', 'cg_graphs')."/pChart/fonts/ARIAL.TTF","FontSize"=>8));
  $chart->setFontProperties(array("R"=>0,"G"=>0,"B"=>0));
  $chart->drawText(270,70,$gsettings['title'],array("R"=>0,"G"=>0,"B"=>0,"Align"=>TEXT_ALIGN_MIDDLEMIDDLE, "FontSize" => 12));

  /* Set the graph area */
  $chart->setGraphArea(70,120,490,310);

  /* Draw a rectangle */
  $chart->drawFilledRectangle(70,120,489,309,array("R"=>255,"G"=>255,"B"=>255,"Dash"=>FALSE, "BorderR"=>201,"BorderG"=>201,"BorderB"=>201));

  /* Turn on shadow computing */ 
  $chart->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>20));

    $format = array(
        "DisplayValues"=>FALSE,
        "DisplayColor"=>DISPLAY_AUTO,
        "Rounded"=>FALSE,
        "Gradient"=>TRUE,
        "GradientAlpha"=>100,
        "GradientMode"=>GRADIENT_EFFECT_CAN,
        "GradientStartR"=>251,
        "GradientStartG"=>220,
        "GradientStartB"=>96,
        "GradientEndR"=>191,
        "GradientEndG"=>160,
        "GradientEndtB"=>36
    );

  if(isset($gdata['bar_plots2'])){
      /* Draw the scale */
      $chart->drawScale(array("XMargin"=>50, "Mode"=>SCALE_MODE_MANUAL, "ManualScale"=> $gsettings['maxmin'], "Pos" => SCALE_POS_LEFTRIGHT,'DrawXLines' => FALSE, 'GridTicks' => 500,'GridR'=>0,'GridG'=>0,'GridB'=>0, 'LabelRotation'=>0, 'AroundZero' => TRUE, 'Interleave' => 0.1));

      $graph_data->setSerieDrawable(array("surgeondata"), FALSE);
      $graph_data->setSerieDrawable(array("surgeondatanull"), TRUE);
  } else {
    /* Draw the scale*/
  $chart->drawScale(array("XMargin"=>40, "Mode"=>SCALE_MODE_MANUAL, "ManualScale"=> $gsettings['maxmin'], "Pos" => SCALE_POS_LEFTRIGHT,'DrawXLines' => FALSE, 'GridTicks' => 500,'GridR'=>0,'GridG'=>0,'GridB'=>0, 'LabelRotation'=>0, 'AroundZero' => TRUE));
  }

  $chart->drawBarChart($format);

  //draw next bar with new colour.
  $format = array(
        "DisplayValues"=>FALSE,
        "DisplayColor"=>DISPLAY_AUTO,
        "Rounded"=>FALSE,
        "Gradient"=>TRUE,
        "GradientAlpha"=>100,
        "GradientMode"=>GRADIENT_EFFECT_CAN,
        "GradientStartR"=>255,
        "GradientStartG"=>230,
        "GradientStartB"=>126,
        "GradientEndR"=>21,
        "GradientEndG"=>0,
        "GradientEndtB"=>0
  );

  if(!isset($gdata['bar_plots2'])){ //not set? we need to draw the second one.
    //set draw series to false / true here

    $graph_data->setSerieDrawable(array("percentiles"), FALSE);
    $graph_data->setSerieDrawable(array("surgeonbar"), TRUE);

    $chart->drawBarChart($format);
  } else {
    $graph_data->setSerieDrawable(array("surgeondatanull", "everyonedata"), FALSE);
    $graph_data->setSerieDrawable(array("surgeondata", "everyonedatanull"), TRUE);

    $chart->drawBarChart($format);
    $graph_data->setSerieDrawable(array("everyonedatanull"), FALSE);
    $graph_data->setSerieDrawable(array("everyonedata"), TRUE);
    $chart->drawLegend(190,100,array("Style"=>LEGEND_NOBORDER, "Mode" => LEGEND_HORIZONTAL)); //draw legand
  }

  $imagename = str_replace(' ', '-', $gdata['surgeonname']);
  $chart->render(drupal_get_path('module', 'cg_graphs')."/pChart/examples/pictures/".$imagename."-".$gsettings['name'].".png");
}

这是输出,我想给X轴加上标签,目前标签没有显示。(抱歉,删除标题等,数据还不在公共领域,需要删除名称)

EN

回答 2

Stack Overflow用户

发布于 2013-11-21 18:27:09

您需要使用http://wiki.pchart.net/doc.dataset.setabscissaname.html中定义的函数setAbscissaName

示例:

$MyData->setAbscissaName("Months");

这将在ticks下的X轴上显示Months

票数 3
EN

Stack Overflow用户

发布于 2013-06-17 20:48:16

pChart文档一团糟。我发现了一两个文档与源代码不同的错误。他们的命名方案也需要改进。除了创造者之外,这对任何人都是不直观的。

我相信您正在尝试将标签添加到X轴。为此,您需要使用setXAxisName()

出现在setSerieDescription()代码中的"Temperature“是一个字符串,用于将这组序列数据绑定到该名称。它实际上不是出现在图表上的标签(同名)。它是在setAbscissa()中再次使用的名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17146226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档