C3.js传说重叠

时间:2016-03-02 16:53:40

标签: javascript d3.js c3.js

我尝试创建折线图,例如here,但图例重叠。

enter image description here

我使用的JavaScript代码:

var chart = c3.generate({
    data: {
        columns: [
            ['Country 1', 6, 5.95, 6.69, 7.47, 3.53, 0.92, 7.21, 4.02, 3.97, 4.18, 4.27],
            ['Country 2', 7.45, 7.31, 8.69, 8.74, 5.7, -6.15, 4.4, 4.67, 3.8, 2.02, 3.04],
            ['Country 3', 3.82, 3.06, 2.56, 4.43, 2.2, 1.23, 2.53, 2.4, 3.53, 2.62, 2.58],
            ['Country 4', 7.58, 8.57, 8.24, 7.54, 4.69, 3.68, 7.62, 6.55, 3.64, 4.02, 4.63],
            ['Country 5', 6.48, 5.78, 6.1, 6.51, 4.27, 1.15, 8.04, 4.57, 5.51, 4.99, 5.1]
        ],
    },
    legend: {
        show: true
    }
});
d3.selectAll("#chart .c3-legend-item").style("font-size","20px"); 

2 个答案:

答案 0 :(得分:1)

c3基础部分定位于font-size。由于您在图表渲染后设置字体大小,因此无法将其考虑在内。因此,您最好将字体大小设置为常规CSS:

.c3-legend-item{
  font-size: 20px;
}

更新了fiddle

<强> EDITS

要进行设置,您必须&#34;修复&#34;你自己的所有职位。像这样:

var runW = 24;
d3.selectAll("#chart .c3-legend-item")
    .style("font-size","20px")
  .each(function(d){
    var node = this,
        self = d3.select(this);
    setTimeout(function(){
      self.selectAll('rect').attr('x', runW);
        self.select('text').attr('x', runW + 10);
      runW += node.getBBox().width + 10;
    }, 300);
  });

更新了fiddle

答案 1 :(得分:1)

您可以使用自定义图例。 首先,您需要关闭生成函数中的默认图例

传奇:{     show:false }

然后定义以下功能。它基本上渲染了我们想要显示的自定义图例及其行为。

 //Defines the toggle function.   
function toggle(id) {
        chart.toggle(id);
    }
  //.container is the container of the chart , .chart is the container where our // chart renders. span is used to wrap our custom legends.
    d3.select('.container').insert('div', '.chart').attr('class', 'legend').selectAll('span')
        .data(['data1', 'data2', 'data3'])
      .enter().append('span')
        .attr('data-id', function (id) { return id; })
        .html(function (id) { return id; })
        .each(function (id) {
            d3.select(this).style('background-color', chart.color(id));
        })
        .on('mouseover', function (id) {
            chart.focus(id);
        })
        .on('mouseout', function (id) {
            chart.revert();
        })
        .on('click', function (id) {
//This toggles the animation for selected and not selected 
 $(this).toggleClass("c3-legend-item-hidden")
            chart.toggle(id);
        });

参考链接:http://c3js.org/samples/legend_custom.html https://jsfiddle.net/yasu47b/3fk72ay5/