コード例 #1
0
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
require_once 'OFC/OFC_Chart.php';
$chart = new OFC_Chart();
$title = new OFC_Elements_Title(date("D M d Y"));
$chart->set_title($title);
$scatter = new OFC_Charts_Scatter('#FFD600', 10);
$scatter->set_values(array(new OFC_Charts_Scatter_Value(0, 0)));
$chart->add_element($scatter);
//
// plot a circle
//
$s2 = new OFC_Charts_Scatter('#D600FF', 3);
$v = array();
for ($i = 0; $i < 360; $i += 5) {
    $v[] = new OFC_Charts_Scatter_Value(number_format(sin(deg2rad($i)), 2, '.', ''), number_format(cos(deg2rad($i)), 2, '.', ''));
}
$s2->set_values($v);
$chart->add_element($s2);
$x = new OFC_Elements_Axis_X();
$x->set_range(-2, 2);
$chart->set_x_axis($x);
$y = new OFC_Elements_Axis_Y();
$y->set_range(-2, 2);
$chart->add_y_axis($y);
echo $chart->toPrettyString();
コード例 #2
0
ファイル: Reports_0.php プロジェクト: cretzu89/EPESI
 public function draw_summary_chart($gb_captions)
 {
     $f = $this->init_module(Libs_OpenFlashChart::module_name());
     //row summary numeric
     $f2 = $this->init_module(Libs_OpenFlashChart::module_name());
     //row summary currency
     $fc = $this->init_module(Libs_OpenFlashChart::module_name());
     //columns summary numeric
     $fc2 = $this->init_module(Libs_OpenFlashChart::module_name());
     //columns summary currency
     $title = new OFC_Elements_Title("Summary by row");
     $f->set_title($title);
     $f2->set_title($title);
     if (!empty($this->categories)) {
         $labels = array();
         $labels_c = array();
         foreach ($this->categories as $q => $c) {
             if ($this->format[$c] == 'currency') {
                 $labels_c[] = strip_tags($c);
             } else {
                 $labels[] = strip_tags($c);
             }
         }
         $x_ax = new OFC_Elements_Axis_X();
         $x_ax->set_labels_from_array($labels);
         $f->set_x_axis($x_ax);
         $x_ax = new OFC_Elements_Axis_X();
         $x_ax->set_labels_from_array($labels_c);
         $f2->set_x_axis($x_ax);
     }
     $title = new OFC_Elements_Title("Summary by column");
     $fc->set_title($title);
     $fc2->set_title($title);
     $labels = array();
     foreach ($gb_captions as $cap) {
         $labels[] = $cap['name'];
     }
     $x_ax = new OFC_Elements_Axis_X();
     $x_ax->set_labels_from_array($labels);
     $fc->set_x_axis($x_ax);
     $fc2->set_x_axis($x_ax);
     $max = 5;
     $max2 = 5;
     $maxc = 5;
     $maxc2 = 5;
     $curr = false;
     $num = false;
     $col_total = array();
     $color = 0;
     foreach ($this->ref_records as $k => $r) {
         $results = call_user_func($this->display_cell_callback, $r);
         $ref_rec = call_user_func($this->ref_record_display_callback, $r, true);
         $bar = new OFC_Charts_Bar_Glass();
         $bar->set_colour(self::$colours[$color % count(self::$colours)]);
         $color++;
         $bar->set_key(strip_tags($ref_rec), 10);
         if (empty($this->categories)) {
             $total = 0;
             $i = 0;
             foreach ($results as &$res_ref) {
                 if (is_array($res_ref)) {
                     $res_ref = array_pop($res_ref);
                 }
                 $val = strip_tags($res_ref);
                 $total += $val;
                 if (!isset($this->cols_total[$i])) {
                     $this->cols_total[$i] = array();
                 }
                 $this->cols_total[$i][0] += $val;
                 $i++;
             }
             $bar->set_values(array($total));
             if ($this->format == 'currency') {
                 if ($total > $max2) {
                     $max2 = $total;
                 }
                 $f2->add_element($bar);
                 $curr = true;
             } else {
                 if ($total > $max) {
                     $max = $total;
                 }
                 $f->add_element($bar);
                 $num = true;
             }
         } else {
             $bar_c = new OFC_Charts_Bar_Glass();
             $bar_c->set_colour(self::$colours[$color % count(self::$colours)]);
             $bar_c->set_key(strip_tags($ref_rec), 10);
             $arr = array();
             $arr_c = array();
             foreach ($this->categories as $q => $c) {
                 $total = 0;
                 if (!isset($this->cols_total[$c])) {
                     $this->cols_total[$c] = array();
                 }
                 $i = 0;
                 foreach ($results as $v) {
                     if (is_array($v[$c])) {
                         $v[$c] = reset($v[$c]);
                     }
                     $val = (double) strip_tags($v[$c]);
                     $total += $val;
                     if (!isset($this->cols_total[$c][$i])) {
                         $this->cols_total[$c][$i] = 0;
                     }
                     $this->cols_total[$c][$i] += $val;
                     $i++;
                 }
                 if ($this->format[$c] == 'currency') {
                     $arr_c[] = $total;
                     if ($max2 < $total) {
                         $max2 = $total;
                     }
                 } else {
                     $arr[] = $total;
                     if ($max < $total) {
                         $max = $total;
                     }
                 }
             }
             if (!empty($arr)) {
                 $bar->set_values($arr);
                 $f->add_element($bar);
                 $num = true;
             }
             if (!empty($arr_c)) {
                 $bar_c->set_values($arr_c);
                 $f2->add_element($bar_c);
                 $curr = true;
             }
         }
     }
     if ($num) {
         $y_ax = new OFC_Elements_Axis_Y();
         $y_ax->set_range(0, $max);
         $y_ax->set_steps($max / 10);
         $f->set_y_axis($y_ax);
         $f->set_width(950);
         $f->set_height(400);
         $this->display_module($f);
         print '<br>';
     }
     if ($curr) {
         $y_ax = new OFC_Elements_Axis_Y();
         $y_ax->set_range(0, $max2);
         $y_ax->set_steps($max2 / 10);
         $f2->set_y_axis($y_ax);
         $f2->set_width(950);
         $f2->set_height(400);
         $this->display_module($f2);
         print '<br>';
     }
     if (empty($this->categories)) {
         $bar = new OFC_Charts_Bar_Glass();
         $bar->set_colour(self::$colours[0]);
         $bar->set_key('Total', 10);
         $mm = 5;
         $values = array();
         foreach ($this->cols_total as $val) {
             $rval = $val[0];
             if ($mm < $rval) {
                 $mm = $rval;
             }
             $values[] = $rval;
         }
         $bar->set_values($values);
         if ($this->format == 'currency') {
             $maxc2 = $mm;
             $fc2->add_element($bar);
         } else {
             $maxc = $mm;
             $fc->add_element($bar);
         }
     } else {
         $i = 0;
         foreach ($this->cols_total as $k => $arr) {
             $bar = new OFC_Charts_Bar_Glass();
             $bar->set_colour(self::$colours[$i % count(self::$colours)]);
             $bar->set_key(strip_tags($k), 10);
             $bar->set_values($arr);
             $mm = 5;
             foreach ($arr as $val) {
                 if ($mm < $val) {
                     $mm = $val;
                 }
             }
             if ($this->format[$k] == 'currency') {
                 if ($mm > $maxc2) {
                     $maxc2 = $mm;
                 }
                 $fc2->add_element($bar);
             } else {
                 if ($mm > $maxc) {
                     $maxc = $mm;
                 }
                 $fc->add_element($bar);
             }
             $i++;
         }
     }
     if ($num) {
         $y_ax = new OFC_Elements_Axis_Y();
         $y_ax->set_range(0, $maxc);
         $y_ax->set_steps($maxc / 10);
         $fc->set_y_axis($y_ax);
         $fc->set_width(950);
         $fc->set_height(400);
         $this->display_module($fc);
         print '<br>';
     }
     if ($curr) {
         $y_ax = new OFC_Elements_Axis_X();
         $y_ax->set_range(0, $maxc2);
         $y_ax->set_steps($maxc2 / 10);
         $fc2->set_y_axis($y_ax);
         $fc2->set_width(950);
         $fc2->set_height(400);
         $this->display_module($fc2);
         print '<br>';
     }
 }
コード例 #3
0
ファイル: chart.php プロジェクト: rorteg/fengoffice
function render_chart($options = array())
{
    $genid = array_var($options, 'genid', gen_id());
    $title = array_var($options, 'title', '');
    $width = array_var($options, 'width', 700);
    $height = array_var($options, 'height', 500);
    $type = array_var($options, 'type', 'line');
    $x_range = array_var($options, 'x_range', array());
    $y_range = array_var($options, 'y_range', array());
    $x_labels = array_var($options, 'x_labels', array());
    $y_axis_right = array_var($options, 'y_axis_right');
    $y_values = array_var($options, 'data');
    $shapes = array_var($options, 'shapes', array());
    $label_step = array_var($options, 'label_step', 7);
    $title = new OFC_Elements_Title($title);
    $max = 0;
    $chart_values = array();
    foreach ($y_values as $y_values_array) {
        $data_object = create_chart_data_object($type, $y_values_array);
        $values_data = array_var($y_values_array, 'values', array());
        $max = count($values_data) > $max ? count($values_data) : $max;
        $chart_values[] = $data_object;
    }
    $x_range_start = array_var($x_range, 'start', 0);
    $x_range_end = array_var($x_range, 'end', 10) - $x_range_start > $max ? $max + $x_range_start - 1 : array_var($x_range, 'end', 10);
    $labels = array();
    $coef = floor(count($x_labels) / $label_step);
    if ($coef > 0) {
        $k = 0;
        foreach ($x_labels as $label) {
            $labels[] = $k % $coef == 0 ? $label : "";
            $k++;
        }
    } else {
        $labels = $x_labels;
    }
    $x_axis = new OFC_Elements_Axis_X();
    $x_axis->set_colours(array_var($options, 'x_axis_color', '#87C4FA'), array_var($options, 'x_grid_color', '#D4E8FA'));
    if (array_var($x_range, 'step')) {
        $x_axis->set_range($x_range_start, $x_range_end, array_var($x_range, 'step', 1));
    }
    $x_axis->set_labels_from_array($labels);
    $y_axis = new OFC_Elements_Axis_Y();
    $y_axis->set_colours(array_var($options, 'y_axis_color', '#87C4FA'), array_var($options, 'y_grid_color', '#D4E8FA'));
    if (array_var($y_range, 'step')) {
        $y_axis->set_range(array_var($y_range, 'start', 0), array_var($y_range, 'end', 10), array_var($y_range, 'step', 1));
    }
    $chart = new OFC_Chart();
    $chart->set_title($title);
    foreach ($chart_values as $cv) {
        $chart->add_element($cv);
    }
    $chart->set_x_axis($x_axis);
    $chart->set_y_axis($y_axis);
    $chart->set_bg_colour(array_var($options, 'back_color', '#FFFFFF'));
    if ($y_axis_right) {
        $chart->set_y_axis_right($y_axis);
    }
    foreach ($shapes as $s) {
        $shape = new shape(array_var($s, 'color', '#FA6900'));
        $points = array_var($s, 'points', array());
        foreach ($points as $p) {
            $shape->append_value(new shape_point($p['x'], $p['y']));
        }
        if (array_var($s, 'text')) {
            $shape->set_text(array_var($s, 'text'));
        }
        if (array_var($s, 'alpha')) {
            $shape->set_alpha(array_var($s, 'alpha'));
        }
        $chart->add_element($shape);
    }
    $filename = 'tmp/' . gen_id() . '.json';
    file_put_contents(ROOT . "/{$filename}", $chart->toPrettyString());
    open_flash_chart_object($width, $height, ROOT_URL . "/{$filename}", $genid);
    //	unlink(ROOT . "/$filename");
}