2017-03-19 16 views
0

私はYii2でチャートを作りたいですが、チャートを正しく作る方法がわかりません。Yii2でハイチャートを正しく作成する方法は?

ここenter image description here

は私がこのようYii2でグラフを作ったMicrosoft Excel

enter image description here

で作られたチャートです:

は、これが私のテーブル

TableGenderです

HighchartController

<?php 
namespace app\controllers; 

use yii\web\Controller; 
use app\models\Jeniskelaminreal; 
use yii\helpers\Json; 

class HighchartsController extends Controller 
{ 
    public function actionIndex() 
    { 

     $masuk= Jeniskelaminreal::find(); 
     $awal = $masuk->orderBy('TahunMasuk ASC')->one()->TahunMasuk; 
     $akhir = $masuk->orderBy('TahunMasuk DESC')->one()->TahunMasuk; 
     // $data = $masuk->all(); 
     $arr_l = []; 
     $arr_p = []; 
     $tahun = []; 


     for($i=$awal;$i<=$akhir;$i++){ 

       if($awal == $i){ 
        $jum_l = count($masuk->where(['TahunMasuk'=>$awal,'JenisKelamin'=>'Perempuan'])->all()); 
        $jum_p = count($masuk->where(['TahunMasuk'=>$awal,'JenisKelamin'=>'Laki-laki'])->all()); 

       }elseif($i > $awal && $i <= $akhir){ 
        $jum_l = count($masuk->where(['TahunMasuk'=>$i,'JenisKelamin'=>'Perempuan'])->all()); 
        $jum_p = count($masuk->where(['TahunMasuk'=>$i,'JenisKelamin'=>'Laki-laki'])->all()); 
       } 
       array_push($arr_l,$jum_l); 
       array_push($arr_p,$jum_p); 
       array_push($tahun,$i); 
       }    


     $data['tahun'] = json_encode($tahun); 
     $data['data_p'] = json_encode($arr_p); 
     $data['data_l'] = json_encode($arr_l); 



     return $this->render('index',$data); 
    } 

    /*public function actionData() 
    { 
     return $this->render('data'); 
    }*/ 
} 

ここで図のindex.php

<?php 
use app\assets\HighchartsAsset; 

HighchartsAsset::register($this); 
$this->title = 'Highcharts Test'; 
?> 


<div class="container"> 
     <div class="row"> 
       <div class="col-md-6 col-sm-6 col-xs-12"> 
       <div class="x_panel"> 
        <div id="my-chart" style="min-width: 310px; height: 400px; margin: 0 auto"></div> 



<?php $this->registerJs(" 
$(function() { 
    $('#my-chart').highcharts({ 
     title: { 
      text: 'Jenis Kelamin', 
      x: -20 //center 
     }, 

     xAxis: { 
      categories: $tahun 
     }, 
     yAxis: { 
      title: { 
       text: 'Jumlah' 
      }, 
      plotLines: [{ 
       value: 0, 
       width: 1, 
       color: '#808080' 
      }] 
     }, 
     tooltip: { 
      valueSuffix: '' 
     }, 
     legend: { 
      layout: 'vertical', 
      align: 'right', 
      verticalAlign: 'middle', 
      borderWidth: 0 
     }, 
     series: [{ 
      name: 'Laki-laki', 
      data: $data_l 
     }, { 
      name: 'Perempuan', 
      data: $data_p 
     }] 
    }); 
}); 
")?> 
</div> 
</div> 

これらのコードは、データベースから、いくつかのテーブルを照会することです。しかし、私が今必要とするのは、TableGenderをYii2のハイチャートにすることです。 Yii2に表示するにはどうすればよいですか?

+0

[このモジュール](https://github.com/miloschuman/yii2-highcharts)を使用してください。 – gmc

答えて

0

Highchartsはjavascriptライブラリなので、パラメータの配列からパラメータを渡すには、json形式にエンコードする必要があります。あなたはPHP関数json_encode、またはyy2関数Json::encodeで構築することができます。だから、私はあなたのコードはこのように見えるべきです:

use yii\helpers\Json; 

... 

<?php $this->registerJs(" 
$(function() { 
    $('#my-chart').highcharts({ 
     ... 
     xAxis: { 
      categories:" . Json::encode($tahun) . " 
     }, 
     ... 
     series: [{ 
      name: 'Laki-laki', 
      data:" . Json::encode($data_l) . " 
     }, { 
      name: 'Perempuan', 
      data:" . Json::encode($data_p) . " 
     }] 
    }); 
}); 
")?> 

希望します。

ハッピーコーディング。 :)

関連する問題