基本的にはPieレンダラープラグインを読み込み、それをレンダラーに指定すればOKなはずだ。
早速いってみよう。
まずは円グラフのプラグインであるPieRendererを読み込む。headタグ内を以下のように編集する。
- <!--[if IE]><script language="javascript" type="text/javascript" src="excanvas.min.js"></script><![endif]-->
- <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
- <script type="text/javascript" src="jquery.jqplot.min.js"></script>
- <script type="text/javascript" src="plugins/jqplot.pieRenderer.min.js"></script>
次にデータを指定してみようと思う。
円グラフだからといって、データの合計が100になっている必要はない。好きなパラメータを好きなだけ指定することが出来るので、とりあえず以下のように設定してみた。
- $(document).ready(function(){
- var data1 = [5,1,6,5,7,3];
- plot = $.jqplot('graph', [data1]);
- });
後で凡例を表示させるなど、編集をする場合、適宜サイズを調整しておこう。
- <body>
- <h1>jqPlot Test 3</h1>
- <div id="graph" style="width:400px;height:400px;margin:30px;"></div>
- </body>
plotオブジェクトにrendererプロパティを設定し、PieRendererプラグインで描画させてみよう。
今回は全体設定であるseriesDefaultsプロパティを使ってみた。
- plot = $.jqplot('graph', [data1],{
- seriesDefaults:{
- renderer:$.jqplot.PieRenderer
- }
- });
折れ線グラフや棒グラフに対して、シェイプが視覚的に単純なため、かなりそっけないデザインで描画されている。ここら辺を何とかしようと思う。
まずは色を変更してみる。色を変更するには、seriesColorsプロパティを使い、配列で16進数指定すればよい。データが6個あるので、6種類のみ用意してみた。
- plot = $.jqplot('graph', [data1],{
- seriesDefaults:{
- renderer:$.jqplot.PieRenderer
- },
- seriesColors:[
- '#002244',
- '#224466',
- '#446688',
- '#6688aa',
- '#88aacc',
- '#aaccee'
- ]
- });
この状態でブラウザで見てみると、こうなった。
冬にみたくない色合いになった。個人的に好きな配色ではないが、とりあえずこの状態でいろいろ進めてみよう。
次に、よくある円グラフの分断をやってみようと思う。隣り合ったデータにマージンをつけることが出来る。
具体的には、rendererOptionsでsliceMarginプロパティを設定するだけでOKだ。
- plot = $.jqplot('graph', [data1],{
- seriesDefaults:{
- renderer:$.jqplot.PieRenderer,
- rendererOptions:{
- sliceMargin:10
- }
- },
- seriesColors:[
- '#002244',
- '#224466',
- '#446688',
- '#6688aa',
- '#88aacc',
- '#aaccee'
- ]
- });
円グラフはそもそもがそっけないモデルでもあるので、rendererOptionsでいろいろ設定することにより、にぎやかしを行うとよいだろう。さらにいろいろいじってみる。今度はパイの塗りつぶしをやめてみる。fillプロパティに対してfalseを設定だ。
- plot = $.jqplot('graph', [data1],{
- seriesDefaults:{
- renderer:$.jqplot.PieRenderer,
- rendererOptions:{
- sliceMargin:10,
- fill:false
- }
- },
- seriesColors:[
- '#002244',
- '#224466',
- '#446688',
- '#6688aa',
- '#88aacc',
- '#aaccee'
- ]
- });
中心が少々不安定なレンダリングになってしまうが、かなり興味深い見せ方になった。ただこのままだとパイの線が細いので、少々太くしてみる。線の太さはrendererOptionsにlineWidthプロパティで設定可能だ。ここでは5にしてみた。
- plot = $.jqplot('graph', [data1],{
- seriesDefaults:{
- renderer:$.jqplot.PieRenderer,
- rendererOptions:{
- sliceMargin:10,
- fill:false,
- lineWidth:5
- }
- },
- seriesColors:[
- '#002244',
- '#224466',
- '#446688',
- '#6688aa',
- '#88aacc',
- '#aaccee'
- ]
- });
やはり中心がおかしくなってしまう。これはcanvasの限界か、ロジックの問題だろうか。
何れにせよ、ここまで簡単な設定で複雑なグラフを描画出来るという意味では、業務にも個人的にもかなり有用だと思うので、気にせず次に進もう。
さすがに円グラフだけ「ドォォォォン!」と表示されても、何の意味があるのかが不明になってしまうので、凡例をつけてみようと思う。
jqPlotの解説初期にやったように、データ内にラベルを追加してみる。
- var data1 = [['PS2',5],['PS3',1],['DSi',6],['XBox360',5],['Wii',7],['PSP',3]];
次に凡例の指定だ。これは以前行ったとおり、legendプロパティを設定することで表示が可能になる。
※先ほど行ったオプション指定は見た目が悪いので、塗りつぶしと線の太さ部分は削除してある。
- plot = $.jqplot('graph', [data1],{
- seriesDefaults:{
- renderer:$.jqplot.PieRenderer,
- rendererOptions:{
- sliceMargin:10
- }
- },
- seriesColors:[
- '#002244',
- '#224466',
- '#446688',
- '#6688aa',
- '#88aacc',
- '#aaccee'
- ],
- legend:{
- show:true
- }
- });
なお、上記グラフの凡例はフィクションである。
ところで、各パイの上にパラメータを表示させたいのだが、時間がないため一旦ここで終わりにしておく。
ひとまずこれでjQueryグラフライブラリ「jqPlot」の説明は終わりにして、次回からはPHP(CakePHP)からグラフを表示させる内容を書いていこうと思う。
まだつづく。
facebook
twitter
google+
fb share