本文整理汇总了PHP中ezcGraphRenderer::drawHorizontalStackedBar方法的典型用法代码示例。如果您正苦于以下问题:PHP ezcGraphRenderer::drawHorizontalStackedBar方法的具体用法?PHP ezcGraphRenderer::drawHorizontalStackedBar怎么用?PHP ezcGraphRenderer::drawHorizontalStackedBar使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ezcGraphRenderer
的用法示例。
在下文中一共展示了ezcGraphRenderer::drawHorizontalStackedBar方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: renderData
/**
* Render the assigned data
*
* Will renderer all charts data in the remaining boundings after drawing
* all other chart elements. The data will be rendered depending on the
* settings in the dataset.
*
* @param ezcGraphRenderer $renderer Renderer
* @param ezcGraphBoundings $boundings Remaining boundings
* @return void
*/
protected function renderData(ezcGraphRenderer $renderer, ezcGraphBoundings $boundings, ezcGraphBoundings $innerBoundings)
{
// Use inner boundings for drawning chart data
$boundings = $innerBoundings;
$xAxisNullPosition = $this->elements['xAxis']->getCoordinate(false);
// Initialize counters
$nr = array();
$count = array();
foreach ($this->data as $data) {
if (!isset($nr[$data->displayType->default])) {
$nr[$data->displayType->default] = 0;
$count[$data->displayType->default] = 0;
}
$nr[$data->displayType->default]++;
$count[$data->displayType->default]++;
}
$checkedRegularSteps = false;
// Display data
foreach ($this->data as $datasetName => $data) {
--$nr[$data->displayType->default];
// Check which axis should be used
$xAxis = $data->xAxis->default ? $data->xAxis->default : $this->elements['xAxis'];
$yAxis = $data->yAxis->default ? $data->yAxis->default : $this->elements['yAxis'];
// Determine fill color for dataset
if ($this->options->fillLines !== false) {
$fillColor = clone $data->color->default;
$fillColor->alpha = (int) round((255 - $fillColor->alpha) * ($this->options->fillLines / 255));
} else {
$fillColor = null;
}
// Ensure regular steps on axis when used with bar charts and
// precalculate some values use to render bar charts
//
// Called only once and only when bars should be rendered
if ($checkedRegularSteps === false && $data->displayType->default === ezcGraph::BAR) {
$height = $this->calculateStepWidth($yAxis, $xAxis, $boundings->height)->y;
}
// Draw lines for dataset
$lastPoint = false;
foreach ($data as $key => $value) {
// Calculate point in chart
$point = $xAxis->axisLabelRenderer->modifyChartDataPosition($yAxis->axisLabelRenderer->modifyChartDataPosition(new ezcGraphCoordinate($xAxis->getCoordinate($value), $yAxis->getCoordinate($key))));
// Render depending on display type of dataset
switch (true) {
case $data->displayType->default === ezcGraph::BAR && $this->options->stackBars:
// Check if a bar has already been stacked
if (!isset($stackedValue[(int) ($point->y * 10000)][(int) $value > 0])) {
$start = new ezcGraphCoordinate($xAxisNullPosition, $point->y);
$stackedValue[(int) ($point->y * 10000)][(int) $value > 0] = $value;
} else {
$start = $yAxis->axisLabelRenderer->modifyChartDataPosition($xAxis->axisLabelRenderer->modifyChartDataPosition(new ezcGraphCoordinate($xAxis->getCoordinate($stackedValue[(int) ($point->y * 10000)][(int) $value > 0]), $yAxis->getCoordinate($key))));
$point = $yAxis->axisLabelRenderer->modifyChartDataPosition($xAxis->axisLabelRenderer->modifyChartDataPosition(new ezcGraphCoordinate($xAxis->getCoordinate($stackedValue[(int) ($point->y * 10000)][(int) $value > 0] += $value), $yAxis->getCoordinate($key))));
}
// Force one symbol for each stacked bar
if (!isset($stackedSymbol[(int) ($point->y * 10000)])) {
$stackedSymbol[(int) ($point->y * 10000)] = $data->symbol[$key];
}
// Store stacked value for next iteration
$side = $point->x == 0 ? 1 : $point->x / abs($point->x);
$stacked[(int) ($point->y * 10000)][$side] = $point;
$renderer->drawHorizontalStackedBar($boundings, new ezcGraphContext($datasetName, $key, $data->url[$key]), $data->color->default, $start, $point, $height, $stackedSymbol[(int) ($point->y * 10000)], $xAxisNullPosition);
// Render highlight string if requested
if ($data->highlight[$key]) {
$renderer->drawDataHighlightText($boundings, new ezcGraphContext($datasetName, $key, $data->url[$key]), $point, $xAxisNullPosition, $nr[$data->displayType->default], $count[$data->displayType->default], $this->options->highlightFont, $data->highlightValue[$key] ? $data->highlightValue[$key] : $value, $this->options->highlightSize + $this->options->highlightFont->padding * 2, $this->options->highlightLines ? $data->color[$key] : null, $this->options->highlightXOffset ? $this->options->highlightXOffset : 0, $this->options->highlightYOffset ? $this->options->highlightYOffset : 0, $height, $data->displayType->default);
}
break;
case $data->displayType->default === ezcGraph::BAR:
$renderer->drawHorizontalBar($boundings, new ezcGraphContext($datasetName, $key, $data->url[$key]), $data->color[$key], $point, $height, $nr[$data->displayType->default], $count[$data->displayType->default], $data->symbol[$key], $xAxisNullPosition);
// Render highlight string if requested
if ($data->highlight[$key]) {
$renderer->drawDataHighlightText($boundings, new ezcGraphContext($datasetName, $key, $data->url[$key]), $point, $xAxisNullPosition, $nr[$data->displayType->default], $count[$data->displayType->default], $this->options->highlightFont, $data->highlightValue[$key] ? $data->highlightValue[$key] : $value, $this->options->highlightSize + $this->options->highlightFont->padding * 2, $this->options->highlightLines ? $data->color[$key] : null, $this->options->highlightXOffset ? $this->options->highlightXOffset : 0, $this->options->highlightYOffset ? $this->options->highlightYOffset : 0, $height, $data->displayType->default);
}
break;
default:
throw new ezcGraphInvalidDisplayTypeException($data->displayType->default);
break;
}
// Store last point, used to connect lines in line chart.
$lastPoint = $point;
}
}
}