好きなときに好きなことをしたいブログ

好きなときに好きなことをしたい性格です。

C3.jsで複合グラフを描く(サンプル)

例えば、jsファイルはこんな感じ。

var data = {
  x_A:['0101','0102','0103','0104','0105','0106','0107','0108','0109','0110','0111','0112'],
  x_Z:['0101','0102','0103','0104','0105','0106','0107','0108','0109','0110','0111','0112','0213','0313','0413'],
  y_A:[20,25,11,33,7,38,6,35,8,31,12,24],
  y_Z:[6,35,8,31,12,24,25,11,33,7,38,150,218,38,104]
}

var chart = c3.generate({
    bindto: '#chart',
    data: {
        json: data,            // specify that our above json is the data    
        xs: {
            y_A: 'x_A',
            y_Z: 'x_Z'
        },
        xFormat: '%m%d',
        types: {
            y_A: 'scatter', y_Z: 'spline'
        },            // specfify type of plot
    },
    // 軸
    axis: {
        x: {
            type: 'timeseries',   // this needed to load string x value
            label: 'x軸',
            tick: {
                format: '%m/%d',
                rotate: 90 // 90度回転
            }
        },
        y: {label: 'y軸'}
    },
    // グリッド
    grid: {
        x: {
            show: true,
            lines: [
                {value: '0113', text: '黒のx軸グリッド線', class: 'nowPosition'}
            ]
        },
        y: {
            show: true,
            lines: [
                {value: 120, text: '赤のy軸グリッド線', class: 'signalRed'},
                {value:  80, text: '普通のy軸グリッド線'},
                {value:  50, text: '普通のy軸グリッド線'}
            ]
        }
    },
    // ズーム
    zoom: {
        enabled: true
    }
});

cssファイルはこんな感じ。

.c3-xgrid-line.nowPosition line {
    stroke: black;
}
.c3-xgrid-line.nowPosition text {
    fill: black;
}
.c3-ygrid-line.signalRed line {
    stroke: red;
}
.c3-ygrid-line.signalRed text {
    fill: red;
}