1. 程式人生 > >使用echarts 外掛生成圖表柱狀圖

使用echarts 外掛生成圖表柱狀圖

1.下載echarts 得到檔案:echarts.js 檔案 複製到專案中

              

2.建立前端頁面,將下方程式碼複製到html檔案中:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>myProject</title>
    <!-- 引入 lib/echarts.custom.min.js -->
<script src="__COMMON__/Echarts/echarts.js"></script> <script type="text/javascript" src="__ADMIN__/js/jquery-1.10.1.js"></script> </head> <body> <!-- 為ECharts準備一個具備大小(寬高)的Dom --> <div id="main" style="width: 600px;height:400px;"></div> <script type=
"text/javascript"> // 基於準備好的dom,初始化echarts例項 var myChart = echarts.init(document.getElementById('main')); //var $myChart = echarts.init($('#main')); // 指定圖表的配置項和資料 var option = { title: { text: 'ECharts 統計各部門成員數量' }, tooltip: { // trigger: 'axis',
// axisPointer: { // type: 'cross' // } }, legend: { data:['人數'] }, xAxis: { // data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"] data: {$name_json} }, yAxis: {}, series: [{ name: '人數', type: 'bar', //data: [5, 20, 36, 10, 10, 20] data: {$num_json} }] }; // 使用剛指定的配置項和資料顯示圖表。 myChart.setOption(option); </script> </body> </html>

3.在後臺控制器中編寫echarts方法

        思路:獲取資料 -> 轉換成所需資料格式 -> 分配到模板

第一種 方式: 將資料組合成陣列再轉換成json:

function echarts(){
    //1.例項化資料表模型
    $user = D('User');
    //2.讀取到表中資料
    $data = $user
        ->alias('a')
        ->join('left join oa_dept as b on a.user_deptid = b.dept_id')
        ->field('b.dept_name,count(*) as num')
        ->group('user_deptid')
        ->select();
    //dump($data);die;
    //3.遍歷$data二維陣列 分別將dept_name  和 num單獨存放到一個空陣列
        //資料型別示例:data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]
    $name = array();;
    $num = array();
    foreach ($data as $v) {
        array_push($name, $v['dept_name']);
        array_push($num, $v['num']);
    }
    //print_r($name);
   // 4.轉換成json資料型別,供前端使用
    $name_json = json_encode($name);
    $num_json = json_encode($num);
    //dump($name_json);
    //5.分配到模板,呼叫檢視
    $this->assign('name_json', $name_json);
    $this->assign('num_json', $num_json);
    $this->display();
}

第二種 方式:拼接字串方式

function echarts(){
        //1.例項化資料表模型
        $user = D('User');
        //2.讀取到表中資料
        $data = $user
            ->alias('a')
            ->join('left join oa_dept as b on a.user_deptid = b.dept_id')
            ->field('b.dept_name,count(*) as num')
            ->group('user_deptid')
            ->select();
        //dump($data);die;
    //3.遍歷二維陣列,拼接成字串,形成想要的資料型別
            //資料型別示例:data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]
        $result_name="";
        foreach($data as $value){
            $result_name .= '"'.$value['dept_name'].'"'.",";
        }
                $str_name = substr($result_name,0,strlen($result_name)-1);
                $str_names="[".$str_name."]";
                //dump($str_name);die;
                $this->assign('str_names',$str_names);
                $result_num="";
        foreach($data as $value){
           //資料型別示例: data: [5, 20, 36, 10, 10, 20]
            $result_num .= $value['num'].",";
        }
                $str_num = substr($result_num,0,strlen($result_num)-1);
                $str_nums = "[".$str_num."]";
                  //dump($str_num);die;
        $this->assign('str_nums',$str_nums);
        $this->display();
    }

3.產生效果