chart制作

chart.class.php

<?php

class Chart {
        
        private static $_first = true;
        private static $_count = 0;
        
        private $_chartType;
        
        private $_data;
        private $_dataType;
        private $_skipFirstRow;
        
        /**
         * sets the chart type and updates the chart counter
         */
        public function __construct($chartType, $skipFirstRow = false){
                $this->_chartType = $chartType;
                $this->_skipFirstRow = $skipFirstRow;
                self::$_count++;
        }
        
        /**
         * loads the dataset and converts it to the correct format
         */
        public function load($data, $dataType = 'json'){
                $this->_data = ($dataType != 'json') ? $this->dataToJson($data) : $data;
        }
        
        /**
         * load jsapi
         */
        private function initChart(){
                self::$_first = false;
                
                $output = '';
                // start a code block
                $output .= '<script type="text/javascript" src="https://www.google.com/jsapi"></script>'."\n";
                $output .= '<script type="text/javascript">google.load(\'visualization\', \'1.0\', {\'packages\':[\'corechart\']});</script>'."\n";
                
                return $output;
        }
        
        /**
         * draws the chart
         */
        
        public function draw($div, Array $options = array()){
                $output = '';
                
                if(self::$_first)$output .= $this->initChart();
                
                // start a code block
                $output .= '<script type="text/javascript">';

                // set callback function
                $output .= 'google.setOnLoadCallback(drawChart' . self::$_count . ');';
                
                // create callback function
                $output .= 'function drawChart' . self::$_count . '(){';
                
                $output .= 'var data = new google.visualization.DataTable(' . $this->_data . ');';
                
                // set the options
                $output .= 'var options = ' . json_encode($options) . ';';
                
                // create and draw the chart
                $output .= 'var chart = new google.visualization.' . $this->_chartType . '(document.getElementById(\'' . $div . '\'));';
                $output .= 'chart.draw(data, options);';
                
                $output .= '} </script>' . "\n";
                return $output;
        }
                
        /**
         * substracts the column names from the first and second row in the dataset
         */
        private function getColumns($data){
                $cols = array();
                foreach($data[0] as $key => $value){
                        if(is_numeric($key)){
                                if(is_string($data[1][$key])){
                                        $cols[] = array('id' => '', 'label' => $value, 'type' => 'string');
                                } else {
                                        $cols[] = array('id' => '', 'label' => $value, 'type' => 'number');
                                }
                                $this->_skipFirstRow = true;
                        } else {
                                if(is_string($value)){
                                        $cols[] = array('id' => '', 'label' => $key, 'type' => 'string');
                                } else {
                                        $cols[] = array('id' => '', 'label' => $key, 'type' => 'number');
                                }
                        }
                }
                return $cols;
        }
        
        /**
         * convert array data to json
         * info: http://code.google.com/intl/nl-NL/apis/chart/interactive/docs/datatables_dataviews.html#javascriptliteral
         */
        private function dataToJson($data){
                $cols = $this->getColumns($data);
                
                $rows = array();
                foreach($data as $key => $row){
                        if($key != 0 || !$this->_skipFirstRow){
                                $c = array();
                                foreach($row as $v){
                                        $c[] = array('v' => $v);
                                }
                                $rows[] = array('c' => $c);
                        }
                }
                
                return json_encode(array('cols' => $cols, 'rows' => $rows));
        }
        
}
?>

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP class for Google Chart Tools</title>

<?php
include('chart.class.php');

// demonstration of a line chart and formatted array
$chart = new Chart('LineChart');

$data = array(
        'cols' => array(
                array('id' => '', 'label' => 'Year', 'type' => 'string'),
                array('id' => '', 'label' => 'Net income', 'type' => 'number'),
                array('id' => '', 'label' => 'Revenue', 'type' => 'number')
        ),
        'rows' => array(
                array('c' => array(array('v' => '1990'), array('v' => 150), array('v' => 100))),
                array('c' => array(array('v' => '1995'), array('v' => 300), array('v' => 50))),
                array('c' => array(array('v' => '2000'), array('v' => 180), array('v' => 200))),
                array('c' => array(array('v' => '2005'), array('v' => 400), array('v' => 100))),
                array('c' => array(array('v' => '2010'), array('v' => 300), array('v' => 600))),
                array('c' => array(array('v' => '2015'), array('v' => 350), array('v' => 400)))
        )
);
$chart->load(json_encode($data));

$options = array('title' => 'revenue', 'theme' => 'maximized', 'width' => 500, 'height' => 200);
echo $chart->draw('revenue', $options);


// demonstration of pie chart and simple array
$chart = new Chart('PieChart');

$data = array(
        array('mushrooms', 'slices'),
        array('onions', 2),
        array('olives', 1),
        array('cheese', 4)
);
$chart->load($data, 'array');

$options = array('title' => 'pizza', 'is3D' => true, 'width' => 500, 'height' => 400);
echo $chart->draw('pizza', $options);

// demonstration of a line chart and formatted array
$chart1 = new Chart('ColumnChart');

$data = array(
        'cols' => array(
                array('id' => '', 'label' => '日付', 'type' => 'string'),
                array('id' => '', 'label' => '前人数', 'type' => 'number'),
                array('id' => '', 'label' => '後人数', 'type' => 'number')
        ),
        'rows' => array(
                array('c' => array(array('v' => '2013年8月25日'), array('v' => 2), array('v' => 1))),
                array('c' => array(array('v' => '2013年8月26日'), array('v' => 3), array('v' => 5))),
                array('c' => array(array('v' => '2013年8月27日'), array('v' => 5), array('v' => 3))),
                array('c' => array(array('v' => '2013年8月28日'), array('v' => 8), array('v' => 7))),
                array('c' => array(array('v' => '2013年8月29日'), array('v' => 7), array('v' => 4)))
        )
);
$chart1->load(json_encode($data));

$options = array('title' => 'This is my column test');
echo $chart1->draw('column', $options);

?>

</head>
<body>

<div id="revenue"></div>

<div id="pizza"></div>

<div id="column"></div>
</body>
</html>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园悬赏任务平台对字典管理、论坛管理、任务资讯任务资讯公告管理、接取用户管理、任务管理、任务咨询管理、任务收藏管理、任务评价管理、任务订单管理、发布用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行校园悬赏任务平台程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。校园悬赏任务平台的开发让用户查看任务信息变得容易,让管理员高效管理任务信息。 校园悬赏任务平台具有管理员角色,用户角色,这几个操作权限。 校园悬赏任务平台针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理任务信息,管理任务资讯公告信息等内容。 校园悬赏任务平台针对用户设置的功能有:查看并修改个人信息,查看任务信息,查看任务资讯公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看任务,删除任务操作,新增任务操作,修改任务操作。任务资讯公告信息管理页面提供的功能操作有:新增任务资讯公告,修改任务资讯公告,删除任务资讯公告操作。任务资讯公告类型管理页面显示所有任务资讯公告类型,在此页面既可以让管理员添加新的任务资讯公告信息类型,也能对已有的任务资讯公告类型信息执行编辑更新,失效的任务资讯公告类型信息也能让管理员快速删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值