棒グラフで複数の要素を重ねてカッコよく見せる方法

棒グラフで複数の要素を重ねてカッコよく見せる方法

みなさんごきげんよう、この前MX4Dを体験してきたyamashitaです。
座席の座りにくさと始めだけ揺れが気になりましたが楽しかったです。
さて、今回はそんなMX4Dとは関係ないですが、表題の通りグラフを少しカッコよくする方法を紹介したいと思います。
使用するライブラリはjqPlotです。

やりたいこと

この二つの要素が並んでる棒グラフを・・・・ 棒グラフ1.JPG
重ねてしまう! 棒グラフ2.JPG
いかがでございましょうか。比較するグラフとしてなんだかそれっぽい雰囲気を醸し出していませんか。

さて気になるやり方です

導入方法まで書くと長くなりそうなので割愛しますが、ライブラリ内のプラグインが機能毎に必要になるので適宜読み込みを忘れないようにしましょう。
Javascriptのコードはこんな感じです。

function getGraph() {
    var zenki = [
        ['12月', 900000000], ['1月', 700000000], ['2月', 500000000], ['3月', 1000000000]
    ];
    var konki = [
        ['12月', 500000000], ['1月', 600000000], ['2月', 900000000], ['3月', 2000000000]
    ];
    var data = [zenki,konki];
    jQuery.jqplot(
        'plot', //html内でターゲットにする部分のID
        data,
        {
            axes: {
                xaxis: {
                    renderer: jQuery.jqplot.CategoryAxisRenderer
                }
            },
            seriesDefaults: {
                renderer: jQuery.jqplot.BarRenderer,
                rendererOptions: {
                    barPadding: -10,//barwidthより小さい値でマイナスにすると重なる
                    barWidth: 30
                }//棒のデザインとか位置
            },
            series: [
                {
                    color: '#AAAAAA'
                },
                {
                    color: "#AAAA44"
                }
            ]//棒の色
        }
    );
}

HTMLに任意のIDを用意して、以上のコードをonloadか何かで呼び出してください。
今回の重ねるやり方の肝はこの部分です。

rendererOptions: {
    barPadding: -10,//barwidthより小さい値でマイナスにすると重なる
    barWidth: 30
}//棒のデザインとか位置

barPaddingは二つの要素の間の距離です。単純ですが、これが0なら密着しマイナスなら重なるというわけです。
barWidthに-1をかけた値ならピッタリ重なるので、それもいつか使う時が来るかもしれませんね。
その場合二つの要素の関係が常にA>Bでないと見えなくなってしまいますが・・・
棒グラフ4.JPG
もちろんbarPaddingの値をどんどん下げていけばお互いの距離が近付くばかりか反対方向に離れていきます。
要素の値や色もひっくり返せば棒の前後だけ逆になるので「二つ目の要素が上に被さってるのは違和感がある!」という方は試してみてください。
個人的にはこちらがしっくり来ました。 棒グラフ3.JPG

今回の話は以上になります。
少々強引な力技のような気もしてますが、調べても実現できそうなオプションが見つからなかったので、このような形で紹介させていただきました。
もし同じような事をしたかったという方がいらっしゃったら是非試してみてください。



  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ