コード例 #1
0
ファイル: graph_api.php プロジェクト: kaos/mantisbt
function graph_pie($p_metrics, $p_title = '', $p_graph_width = 500, $p_graph_height = 350, $p_center = 0.4, $p_poshorizontal = 0.1, $p_posvertical = 0.09)
{
    $t_graph_font = graph_get_font();
    error_check(is_array($p_metrics) ? array_sum($p_metrics) : 0, $p_title);
    if (plugin_config_get('eczlibrary') == ON) {
        $graph = new ezcGraphPieChart();
        $graph->title = $p_title;
        $graph->background->color = '#FFFFFF';
        $graph->options->font = $t_graph_font;
        $graph->options->font->maxFontSize = 12;
        $graph->legend = false;
        $graph->data[0] = new ezcGraphArrayDataSet($p_metrics);
        $graph->data[0]->color = '#FFFF00';
        $graph->renderer = new ezcGraphRenderer3d();
        $graph->renderer->options->dataBorder = false;
        $graph->renderer->options->pieChartShadowSize = 10;
        $graph->renderer->options->pieChartGleam = 0.5;
        $graph->renderer->options->pieChartHeight = 16;
        $graph->renderer->options->legendSymbolGleam = 0.5;
        $graph->driver = new ezcGraphGdDriver();
        //$graph->driver->options->supersampling = 1;
        $graph->driver->options->jpegQuality = 100;
        $graph->driver->options->imageFormat = IMG_JPEG;
        $graph->renderer->options->syncAxisFonts = false;
        $graph->renderToOutput($p_graph_width, $p_graph_height);
    } else {
        $graph = new PieGraph($p_graph_width, $p_graph_height);
        $graph->img->SetMargin(40, 40, 40, 100);
        $graph->title->Set($p_title);
        $graph->title->SetFont($t_graph_font, FS_BOLD);
        $graph->SetMarginColor('white');
        $graph->SetFrame(false);
        $graph->legend->Pos($p_poshorizontal, $p_posvertical);
        $graph->legend->SetFont($t_graph_font);
        $p1 = new PiePlot3d(array_values($p_metrics));
        // should be reversed?
        $p1->SetTheme('earth');
        # $p1->SetTheme("sand");
        $p1->SetCenter($p_center);
        $p1->SetAngle(60);
        $p1->SetLegends(array_keys($p_metrics));
        # Label format
        $p1->value->SetFormat('%2.0f');
        $p1->value->Show();
        $p1->value->SetFont($t_graph_font);
        $graph->Add($p1);
        if (helper_show_query_count()) {
            $graph->subtitle->Set(db_count_queries() . ' queries (' . db_time_queries() . 'sec)');
            $graph->subtitle->SetFont($t_graph_font, FS_NORMAL, 8);
        }
        $graph->Stroke();
    }
}
コード例 #2
0
ファイル: pie_test.php プロジェクト: xyzz/CrashFix
 public function testRenderSmallPieChartToOutput()
 {
     $filename = $this->tempDir . __FUNCTION__ . '.svg';
     $chart = new ezcGraphPieChart();
     $chart->data['Skien'] = new ezcGraphArrayDataSet(array('Norwegian' => 10, 'Dutch' => 3, 'German' => 2, 'French' => 2, 'Hindi' => 1, 'Taiwanese' => 1, 'Brazilian' => 1, 'Venezuelan' => 1, 'Japanese' => 1, 'Czech' => 1, 'Hungarian' => 1, 'Romanian' => 1));
     ob_start();
     // Suppress header already sent warning
     @$chart->renderToOutput(500, 200);
     file_put_contents($filename, ob_get_clean());
     $this->compare($filename, $this->basePath . 'compare/' . __CLASS__ . '_' . __FUNCTION__ . '.svg');
 }
コード例 #3
0
ファイル: CrashReport.php プロジェクト: xyzz/CrashFix
 /**
  * Generates a crash report OS version distribution graph for currently 
  * selected project and dumps it to stdout.
  * @param type $w Desired image width.
  * @param type $h Desired image height.
  * @throws CHttpException
  * @return void
  */
 public static function generateOSVersionDistributionGraph($w, $h, $file = null)
 {
     if (!is_numeric($w) || $w <= 0 || $w > 1024) {
         throw new CHttpException(403, 'Invalid parameter');
     }
     if (!is_numeric($h) || $h <= 0 || $h > 960) {
         throw new CHttpException(403, 'Invalid parameter');
     }
     // Get current project info
     $curProjectId = Yii::app()->user->getCurProjectId();
     if ($curProjectId == false) {
         throw new CHttpException(403, 'Invalid parameter');
     }
     // Prepare data
     $criteria = new CDbCriteria();
     $criteria->select = 'os_name_reg, COUNT(*) as cnt';
     $criteria->order = 'cnt DESC';
     $criteria->group = 'os_name_reg';
     $criteria->compare('t.project_id', $curProjectId);
     $curVer = '(not set)';
     $versions = Yii::app()->user->getCurProjectVersions($curVer);
     if ($curVer != -1) {
         $criteria->compare('appversion_id', $curVer == 0 ? null : $curVer);
     }
     $data = array();
     $models = CrashReport::model()->findAll($criteria);
     $totalCount = 0;
     foreach ($models as $model) {
         $totalCount += $model->cnt;
     }
     $itemCount = 0;
     $others = 0;
     foreach ($models as $model) {
         $itemCount++;
         if ($itemCount > 10) {
             $others += $model->cnt;
             continue;
         }
         $osName = strlen($model->os_name_reg) != 0 ? $model->os_name_reg : "(not set)";
         $percent = 100 * $model->cnt / $totalCount;
         $label = sprintf('(%0.1f%%) %s', $percent, $osName);
         $label = MiscHelpers::addEllipsis($label, 60);
         if (array_key_exists($label, $data)) {
             $data[$label] += $model->cnt;
         } else {
             $data[$label] = $model->cnt;
         }
     }
     if ($others > 0) {
         // Add 'Others'
         $percent = 100 * $others / $totalCount;
         $label = sprintf('(%0.1f%%) Others', $percent);
         $data[$label] = $others;
     }
     // Check the case when $data is empty.
     if (count($data) == 0) {
         // Open out file
         if ($file != null) {
             $fout = @fopen($file, 'w');
             if ($fout == false) {
                 @unlink($tmpfile);
                 throw new CHttpException(403, 'Invalid file.');
             }
         }
         // No data available
         $fileName = Yii::app()->basePath . '/../images/no_data_available.png';
         if ($fd = @fopen($fileName, "r")) {
             $fsize = filesize($fileName);
             // Write HTTP headers
             header("Content-type: image/png");
             //header("Content-Disposition: filename=\"".$fileName."\"");
             header("Content-length: {$fsize}");
             header("Cache-control: private");
             //use this to open files directly
             // Write file content
             while (!feof($fd)) {
                 $buffer = fread($fd, 2048);
                 if ($file == null) {
                     echo $buffer;
                 } else {
                     fwrite($fout, $buffer);
                 }
             }
             if ($file != null) {
                 fclose($fout);
             }
             fclose($fd);
         }
         return;
     }
     $graph = new ezcGraphPieChart();
     $graph->palette = new ezcGraphPaletteEzGreen();
     $graph->data['Versions'] = new ezcGraphArrayDataSet($data);
     $graph->legend = true;
     $graph->legend->position = ezcGraph::RIGHT;
     $graph->legend->landscapeSize = 0.5;
     $graph->legend->portraitSize = 0.5;
     $graph->options->sum = $totalCount;
     //$graph->options->summarizeCaption = 'Others';
     $graph->options->label = '%3$.1f%%';
     $graph->options->font->name = 'Tahoma';
     $graph->options->font->maxFontSize = 14;
     $graph->options->font->minFontSize = 1;
     $graph->renderer = new ezcGraphRenderer3d();
     $graph->renderer->options->pieChartRotation = 0.8;
     $graph->renderer->options->pieChartShadowSize = 10;
     //$graph->renderer->options->pieChartGleam = .3;
     //$graph->renderer->options->pieChartGleamColor = '#FFFFFF';
     //$graph->renderer->options->pieChartGleamBorder = 2;
     if ($file === null) {
         $graph->renderToOutput($w, $h);
     } else {
         $graph->render($w, $h, $file);
     }
 }
コード例 #4
0
ファイル: Bug.php プロジェクト: xyzz/CrashFix
 /**
  * Generates a crash report version distribution graph for currently 
  * selected project and dumps it to stdout.
  * @param type $w Desired image width.
  * @param type $h Desired image height.
  * @throws CHttpException
  * @return void
  */
 public static function generateBugStatusDistributionGraph($w, $h, $file = null)
 {
     if (!is_numeric($w) || $w <= 0 || $w > 1024) {
         throw new CHttpException(403, 'Invalid parameter');
     }
     if (!is_numeric($h) || $h <= 0 || $h > 960) {
         throw new CHttpException(403, 'Invalid parameter');
     }
     // Get current project info
     $curProjectId = Yii::app()->user->getCurProjectId();
     if ($curProjectId == false) {
         throw new CHttpException(403, 'Invalid parameter');
     }
     $curVer = Yii::app()->user->getCurProjectVer();
     // Prepare data
     $criteria = new CDbCriteria();
     $criteria->select = 'status, COUNT(*) as cnt';
     $criteria->group = 'status';
     $criteria->compare('project_id', $curProjectId);
     $criteria->order = 'status DESC';
     if ($curVer != -1) {
         $criteria->compare('appversion_id', $curVer == 0 ? null : $curVer);
     }
     $data = array();
     $models = Bug::model()->findAll($criteria);
     $totalCount = 0;
     $curVerStr = '';
     foreach ($models as $model) {
         $totalCount += $model->cnt;
         $data[Lookup::item('BugStatus', $model->status)] = $model->cnt;
     }
     // Check the case when $data is empty.
     if (count($data) == 0) {
         // Open out file
         if ($file != null) {
             $fout = @fopen($file, 'w');
             if ($fout == false) {
                 @unlink($tmpfile);
                 throw new CHttpException(403, 'Invalid file.');
             }
         }
         // No data available
         $fileName = Yii::app()->basePath . '/../images/no_data_available.png';
         if ($fd = @fopen($fileName, "r")) {
             $fsize = filesize($fileName);
             // Write HTTP headers
             header("Content-type: image/png");
             //header("Content-Disposition: filename=\"".$fileName."\"");
             header("Content-length: {$fsize}");
             header("Cache-control: private");
             //use this to open files directly
             // Write file content
             while (!feof($fd)) {
                 $buffer = fread($fd, 2048);
                 if ($file == null) {
                     echo $buffer;
                 } else {
                     fwrite($fout, $buffer);
                 }
             }
             if ($file != null) {
                 fclose($fout);
             }
             fclose($fd);
         }
         return;
     }
     $graph = new ezcGraphPieChart();
     $graph->palette = new ezcGraphPaletteEzRed();
     $graph->data['Versions'] = new ezcGraphArrayDataSet($data);
     $graph->legend = true;
     $graph->legend->position = ezcGraph::RIGHT;
     $graph->options->font->name = 'Tahoma';
     $graph->options->sum = $totalCount;
     $graph->options->summarizeCaption = 'Others';
     $graph->renderer->options->pieChartGleam = 0.3;
     $graph->renderer->options->pieChartGleamColor = '#FFFFFF';
     $graph->renderer->options->pieChartGleamBorder = 2;
     $graph->renderer = new ezcGraphRenderer3d();
     $graph->renderer->options->pieChartRotation = 0.8;
     $graph->renderer->options->pieChartShadowSize = 10;
     if ($file === null) {
         $graph->renderToOutput($w, $h);
     } else {
         $graph->render($w, $h, $file);
     }
 }
コード例 #5
0
ファイル: chart.php プロジェクト: gbleydon/mahara-survey
function draw_pie_chart($WIDTH, $HEIGHT, $DATA, $CONFIG, $LEGEND, $FONT, $PALETTE = 'default')
{
    $palettename = return_palette_name($PALETTE);
    require dirname(__FILE__) . '/lib/ezc/Graph/mahara/palettes/' . $palettename . '.php';
    $graph = new ezcGraphPieChart();
    $paletteclass = generate_palette_class_name($palettename);
    $graph->palette = new $paletteclass();
    $graph->title = $CONFIG['title'];
    $graph->subtitle = 'Created: ' . $CONFIG['ctime'] . ', modified: ' . $CONFIG['mtime'];
    $graph->subtitle->position = ezcGraph::BOTTOM;
    $graph->legend = false;
    $graph->background->padding = 10;
    $graph->driver = new ezcGraphGdDriver();
    $graph->driver->options->imageFormat = IMG_PNG;
    switch ($FONT['type']) {
        case 'serif':
            $fontname = 'lib/ezc/Graph/mahara/fonts/LiberationSerif-Regular.ttf';
            break;
        case 'sans':
            $fontname = 'lib/ezc/Graph/mahara/fonts/LiberationSans-Regular.ttf';
            break;
    }
    $graph->options->font = $fontname;
    switch ($CONFIG['labeltype']) {
        case 'labelonly':
            $label = '%1$s';
            break;
        case 'valueonly':
            $label = '%2$d';
            break;
        case 'value':
            $label = '%1$s: %2$d';
            break;
        case 'percentonly':
            $label = '%3$.1f%%';
            break;
        case 'percent':
            $label = '%1$s: %3$.1f%%';
            break;
        default:
            $label = '%1$s: %2$d (%3$.1f%%)';
    }
    $graph->options->label = $label;
    // Set the maximum font size for all chart elements
    $graph->options->font->maxFontSize = $FONT['size'];
    // Set the font size for the title independently to 14
    $graph->title->font->maxFontSize = $FONT['titlesize'];
    $EZCDATA = array();
    foreach ($DATA as $value) {
        $EZCDATA = array_merge($EZCDATA, array($value['key'] => $value['value']));
        /*
        if ($LEGEND == 'key') { $EZCDATA = array_merge($EZCDATA, array($value['key'] => $value['value'])); }
        if ($LEGEND == 'label') { $EZCDATA = array_merge($EZCDATA, array($value['label'] => $value['value'])); }
        */
    }
    $graph->data[$CONFIG['title']] = new ezcGraphArrayDataSet($EZCDATA);
    if (strtolower($CONFIG['chartspace']) == '3d') {
        $graph->renderer = new ezcGraphRenderer3d();
        $graph->renderer->options->pieChartOffset = 60;
        $graph->renderer->options->pieChartShadowSize = 8;
        $graph->renderer->options->pieChartShadowColor = '#000000';
        //#BABDB6
        $graph->renderer->options->pieChartHeight = 20;
    }
    /* Build the PNG file and send it to the web browser */
    $graph->renderToOutput($WIDTH, $HEIGHT);
}
コード例 #6
0
<?php

require_once 'tutorial_autoload.php';
$graph = new ezcGraphPieChart();
$graph->title = 'Access statistics';
$graph->data['Access statistics'] = new ezcGraphArrayDataSet(array('Mozilla' => 19113, 'Explorer' => 10917, 'Opera' => 1464, 'Safari' => 652, 'Konqueror' => 474));
$graph->data['Access statistics']->highlight['Opera'] = true;
$graph->renderToOutput(400, 150);
コード例 #7
0
ファイル: graph.php プロジェクト: jjohnsen/jaj_newsletter
<?php

$Module = $Params['Module'];
$object_id = $Params['ObjectID'];
$node = eZContentObject::fetch($object_id);
if (!$node || !$node->canRead()) {
    return $Module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel');
}
$db = eZDB::instance();
$sql = "SELECT COUNT(sent) as Sent, COUNT(opened) as Opened FROM jaj_newsletter_delivery WHERE contentobject_id=" . $node->ID;
//, COUNT(viewed) as Viewed
$data = $db->arrayQuery($sql);
$data = $data[0];
$data['Sent'] -= $data['Opened'];
// + $data['Viewed']
$graph = new ezcGraphPieChart();
$graph->title = 'Newsletter Activity';
$graph->legend = false;
$graph->data['Newsletter Activity'] = new ezcGraphArrayDataSet($data);
$graph->data['Newsletter Activity']->highlight['Opened'] = true;
//$graph->data['Newsletter Activity']->highlight['Viewed'] = true;
// select count(sent) as sent, count(opened) as opened, count(viewed) as viewed from jaj_newsletter_delivery where contentobject_id=947;
$graph->renderToOutput(400, 240);
eZExecution::cleanExit();
//$graph->render( 400, 150, 'tutorial_simple_pie.svg' );
//print_r( $rows );
//select date(FROM_UNIXTIME(modified)) as date, state, count(uuid) as count from jaj_newsletter_subscription group by date,state;