5

x 軸のグリッド線を c3js 棒グラフのコンテンツの背後に配置しようとしています。

うまくいかなかった z-index をいじりました。不透明度も試しましたが、うまくいきませんでした。

これが、私が使用していたコードを含む JSFiddle です。

https://jsfiddle.net/chaitanya81/rvhb0fy4/1/

var chart = c3.generate({
        bindto: '#chart',
        data: {
            x : 'x',
            columns: [
                ['x', 'M','T','W','TH','F','SA','SU'],
                ['revenue', 200, 300, 200, 400, 500, 700, 600.56]
            ],
            type: 'bar'
        },
        color: {
            pattern: ["#ff9900"]
        },
        axis: {
            x: {
                type: 'category', // this needed to load string x value
                tick: {
                    outer: false
                }
            },
            y: {
                tick: {
                    outer: false
                }
            }
        },
        grid: {
            x: {
                lines: [
                    {value: "M"},
                    {value: "T"},
                    {value: "W"},
                    {value: "TH"},
                    {value: "F"},
                    {value: "SA"},
                    {value: "SU"}
                ]
            }
        },
        bar: {
            width: {
                ratio: 0.4
            }
        },
        legend: {
            hide: true
        },
        tooltip: {
            contents: function (data, defaultTitleFormat, defaultValueFormat, color) {
                    var $$ = this, config = $$.config,
                        titleFormat = config.tooltip_format_title || defaultTitleFormat,
                        nameFormat = config.tooltip_format_name || function (name) { return name; },
                        valueFormat = config.tooltip_format_value || defaultValueFormat,
                        text, i, title, value;

                        for (i = 0; i < data.length; i++) {
                            if (! (data[i] && (data[i].value || data[i].value === 0))) { continue; }

                            if (! text) {
                              title = titleFormat ? titleFormat(data[i].x) : data[i].x;
                              text = "<div id='tooltip' class='d3-tip'>";
                            }
                            value = valueFormat(data[i].value, data[i].ratio, data[i].id, data[i].index);
                            text += "<span class='value'>$" + value + "</span>";
                            text += "</div>";
                        }

                    return text;
            }
        },
        transition: {
            duration: 1000
        }
});

c3jsチャートでこれを試した人はいますか?

前もって感謝します。

4

2 に答える 2

10

grid.lines.front を false に設定できます

var chart = c3.generate({
    bindto: '#chart',
    data: {
      ...
    },
    grid: {
      lines: {
        front: false
      }
    }
  });

https://jsfiddle.net/Yosephsol/bwu70xgq/

于 2016-07-13T06:59:38.323 に答える
1

グリッド ライン レイヤーはチャート要素 (バー) レイヤーの上にあり、SVG の z-index はドキュメント内の要素の順序によって設定されます。

リージョンを使用して同じ効果を得ることができます。一つの方法は

CSS

.border {
    stroke: #000;
    fill: transparent;
}

.whiteborder {
    stroke: white;
    fill: transparent;
}

脚本

regions: [
        { axis: 'x', start: -0.5, end: 0, class: 'border' },
        { axis: 'x', start: -0.5, end: 1, class: 'border' },
        { axis: 'x', start: -0.5, end: 2, class: 'border' },
        { axis: 'x', start: -0.5, end: 3, class: 'border' },
        { axis: 'x', start: -0.5, end: 4, class: 'border' },
        { axis: 'x', start: -0.5, end: 5, class: 'border' },
        { axis: 'x', start: -0.5, end: 6, class: 'border' },
        { axis: 'x', start: -0.5, end: 6.5, class: 'whiteborder' },
],

最後の行は、上部の境界線を取り除くことです (四角形の異なる境界線を異なる方法でスタイルすることはできません - ストロークダッシュアレイを使用する代替 [ハック] がありますが、それは領域の相対的な高さと幅に依存します)


フィドル - https://jsfiddle.net/d611yq7x/

于 2015-07-11T14:41:49.510 に答える