Я пытаюсь построить комбинированный точечный и линейный график. В настоящее время Scatter рисует нормально, когда я добавляю линии, они поворачиваются на 90 градусов вправо, поэтому они вертикальны, а не горизонтальны. Я не могу на всю жизнь понять, почему, поэтому, если у кого-то есть какие-либо предложения, это было бы здорово.
Приведенный ниже код представляет собой полную функцию, не обращайте внимания на имя, которое теперь НЕ является сплайновой диаграммой (я действительно должен это изменить).
function cg_graphs_spline_plot($surgeonname, $plotpoint, $nnotnullsingletotal, $surgeonplots, $baseline, $gsettings){
/*Build the binomial curve plots*/
$binomloop = $gsettings['maxmin'][0]['Max'] + 1;
for($i = 1; $i <= $binomloop; $i++){
$upperalert = cg_graphs_get_binomial($baseline, $i, 0.995);
$loweralert = cg_graphs_get_binomial($baseline, $i, 0.005);
$Ualert[] = ($upperalert['upper'] * 100);
$Lalert[] = ($loweralert['lower'] * 100);
//$upperalarm = cg_graphs_get_binomial($baseline, $i, 0.9995);
//$loweralarm = cg_graphs_get_binomial($baseline, $i, 0.0005);
//$Ualarm[] = ($upperalarm['upper'] * 100);
//$Lalarm[] = ($loweralarm['lower'] * 100);
}
unset($Ualert[0]); //delete the leading 0 value
unset($Lalert[0]); //delete the leading 0 value
mmi_watchdog('plotting alarm upper', '', $Ualert);
mmi_watchdog('plotting alarm lower', '', $Lalert);
//mmi_watchdog('plotting alarm upper', '', $Ualarm);
//mmi_watchdog('plotting alarm lower', '', $Lalarm);
/* Create the pData object */
$myData = new pData();
$myData->addPoints(array($plotpoint), "preSurgeons"); //Y pos just has to match pos of X
$myData->addPoints(array($nnotnullsingletotal), "pSurgeon"); //array pos matches, so the
foreach($surgeonplots['ops'] as $op){
$myData->addPoints($op, "Surgeons");
}
foreach($surgeonplots['reop'] as $reop){
$baselineplots[] = $baseline;
$myData->addPoints($reop, "reSurgeons");
}
$myData->addPoints($baselineplots, "baseline"); //add baseline for line graph
/** plot binomials */
$myData->addPoints($Ualert, "Ualert"); //add upper alert
$myData->addPoints($Lalert, "Lalert"); //add lower alert
//$myData->addPoints($Ualarm, "Ualarm"); //add upper alarm
//$myData->addPoints($Lalarm, "Lalarm"); //add lower alarm
/* Create the X axis and the binded series */
$myData->setSerieOnAxis("Surgeons",0);
$myData->setSerieOnAxis("pSurgeon",0);
$myData->setSerieOnAxis("Ualert",0);
$myData->setSerieOnAxis("Lalert",0);
$myData->setSerieOnAxis("baseline",0);
$myData->setAxisName(0,$gsettings['axisXlabel']); //Number of operations -- removed for now
$myData->setAxisXY(0,AXIS_X);
$myData->setAxisPosition(0,AXIS_POSITION_BOTTOM);
/* Create the Y axis and the binded series */
$myData->setSerieOnAxis("reSurgeons",1);
$myData->setSerieOnAxis("preSurgeons",1);
$myData->setAxisName(1,$gsettings['axisYlabel']);
$myData->setAxisXY(1,AXIS_Y);
$myData->setAxisUnit(1,"%");
$myData->setAxisPosition(1,AXIS_POSITION_LEFT);
/* Create All surgeons scatter chart binding */
$myData->setScatterSerie("Surgeons","reSurgeons",0);
$myData->setScatterSerieDescription(0,"All Surgeons");
$myData->setScatterSerieColor(0,array("R"=>255,"G"=>69,"B"=>0));
/* Create Single Surgions scatter point */
$myData->setScatterSerie("pSurgeon","preSurgeons",1);
$myData->setScatterSerieDescription(1, $surgeonname);
$myData->setScatterSerieColor(1,array("R"=>0,"G"=>191,"B"=>255));
/*unset the baseline for the first set*/
$myData->setSerieDrawable (array("baseline", "Ualert", "Lalert", "Ualarm", "Lalarm"), FALSE);
/* Create the pChart object */
$myPicture = new pImage(847,304,$myData);
$myPicture->drawGradientArea(0,0,847,304,DIRECTION_VERTICAL,array("StartR"=>47,"StartG"=>47,"StartB"=>47, "EndR"=>17,"EndG"=>17,"EndB"=>17,"Alpha"=>100));
$myPicture->drawGradientArea(0,250,847,304,DIRECTION_VERTICAL,array("StartR"=>47,"StartG"=>47,"StartB"=>47, "EndR"=>27,"EndG"=>27,"EndB"=>27,"Alpha"=>100));
$myPicture->drawLine(0,249,847,249,array("R"=>0,"G"=>0,"B"=>0));
$myPicture->drawLine(0,250,847,250,array("R"=>70,"G"=>70,"B"=>70));
/* Write the picture title */
$myPicture->setFontProperties(array("FontName"=>drupal_get_path('module', 'cg_graphs')."/pChart/fonts/pf_arma_five.ttf","FontSize"=>6));
$myPicture->setFontProperties(array("R"=>255,"G"=>255,"B"=>255));
$myPicture->drawText(423,14,$gsettings['title'],array("R"=>255,"G"=>255,"B"=>255,"Align"=>TEXT_ALIGN_MIDDLEMIDDLE));
/* Set the graph area */
$myPicture->setGraphArea(58,27,816,228);
/* Draw a rectangle */
$myPicture->drawFilledRectangle(57,27,816,228,array("R"=>0,"G"=>0,"B"=>0,"Dash"=>TRUE,"DashR"=>0, "DashG"=>51,"DashB"=>51,"BorderR"=>0,"BorderG"=>0,"BorderB"=>0));
/* Turn on shadow computing */
$myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>20));
/* Create the Scatter chart object */
$myScatter = new pScatter($myPicture,$myData);
/* Draw the scale */
$myScatter->drawScatterScale(array('LabelRotation' => 90, "Mode" => SCALE_MODE_MANUAL, "XMargin"=>4, "Pos" => SCALE_POS_LEFTRIGHT, "ManualScale" => $gsettings['maxmin'], 'Factors' => array(20)));
$myScatter->drawScatterLegend(640,266,array("Mode"=>LEGEND_VERTICAL ,"Style"=>LEGEND_NOBORDER, "Family"=>LEGEND_FAMILY_LINE));
/* Draw a scatter plot chart */
$myScatter->drawScatterPlotChart();
/*Draw Baseline chart*/
$myData->setSerieDrawable (array("pSurgeon", "Surgeons", "preSurgeons", "reSurgeons"), FALSE);
$myData->setSerieDrawable (array("baseline", "Ualert", "Lalert"), TRUE);
/* plot lines */
$myPicture->drawLineChart(array("DisplayValues"=>FALSE,"DisplayColor"=>DISPLAY_AUTO));
/* Write the 0 line */
$myPicture->drawThreshold(0,array("WriteCaption"=>TRUE));
/* Add a border to the picture */
$myPicture->drawRectangle(0,0,846,303,array("R"=>204,"G"=>204,"B"=>204));
$myData->setSerieDrawable (array("reSurgeons"), FALSE);
/* Set serie settings */
$myData->setSerieDescription("baseline","Average Baseline");
$myData->setSerieDescription("Ualert","Upper Alert Line");
$myData->setSerieDescription("Lalert","Lower Alert Line");
$myData->setSerieDescription("Ualarm","Upper Alarm Line");
$myData->setSerieDescription("Lalarm","Lower Alert Line");
$myPicture->drawLegend(540,266,array("Mode"=>LEGEND_VERTICAL ,"Style"=>LEGEND_NOBORDER, "Family"=>LEGEND_FAMILY_LINE));
/* Render the picture (choose the best way) */
$imagename = str_replace(' ', '-', $surgeonname);
$myPicture->render(drupal_get_path('module', 'cg_graphs')."/pChart/examples/pictures/".$imagename."-".$gsettings['name'].".png");
}