c3 custom legend

c3 custom legend

by nimishgoel056

HTML

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.10/c3.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.10/c3.min.js"></script>
<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
<div class="box">
  <div id="chart"></div>
</div>
<div class="container2"></div>

CSS

#chart,
.container {
  float: left;
}

.legend span {
  display: inline-block;
  margin-left: 7px;
  margin-right: 7px;
  padding: 5px;
}
.container .legned div {
  width: 100%;
}
.container .legend {
  width: 150px;
  height: 230px;
  overflow: scroll;
}

JavaScript

var chart = c3.generate({
  size: {
    width: 200,
    height: 240,
  },
  data: {
    columns: [
      ['data1', 100],
      ['data2', 300],
      ['data3', 200],
      ['data11', 100],
      ['data21', 300],
      ['data31', 200],
      ['data12', 100],
      ['data22', 300],
      ['data32', 200],
      ['data13', 100],
      ['data23', 300],
      ['data33', 200],
      ['data41', 100],
      ['data42', 300],
      ['あいうえおかきくけこさしすそたちつてと', 200],
    ],
    type: 'pie'
  },
  legend: {
    show: false
  }
});

function toggle(id) {
  chart.toggle(id);
}


  
  // example2
d3.select('.container2').insert('div', '.chart').attr('class', 'legend').selectAll('div')
  .data(['data1', 'data2', 'data3', 'data11', 'data21', 'data31', 'data12', 'data22', 'data32', 'data13', 'data23', 'data33', 'data41', 'data42', 'あいうえおか'])
  .enter().append('div')
  .attr('data-id', function(id) {
    return id;
  })
  .html(function(id) {
    return '<span></span>'+id;
  })
  .each(function(id) {
    //d3.select(this).append('span').style
    d3.select(this).select('span').style('background-color', chart.color(id));
  })
  .on('mouseover', function(id) {
    chart.focus(id);
  })
  .on('mouseout', function(id) {
    chart.revert();
  })