Kumaran
Kumaran

Reputation: 3650

How to highlight only one datapoint in c3.js line graph?

Using point show as false hides all the data points.
But what to do if I want to hide all but one datapoint.

For Example,

var chart = c3.generate({
    data: {
        columns: [
            ['data1', 30, 200, 100, 400, 150, 250],
            ['data2', 50, 20, 10, 40, 15, 25]
        ]
    }
});

In the above line chart, how to highlight the data point where value is 100 and hide every other data point?

Upvotes: 2

Views: 1143

Answers (1)

Gerardo Furtado
Gerardo Furtado

Reputation: 102188

In C3, those circles have a class named c3-circle. So, using a D3 selection, you can set the opacity based on the bound datum:

var circles = d3.selectAll(".c3-circle")
    .style("opacity", function(d){
        return d.value === 100 ? 1 : 0;
    })

Thus, only the circle corresponding to 100 is visible.

Here is the demo:

var chart = c3.generate({
    data: {
        columns: [
            ['data1', 30, 200, 100, 400, 150, 250],
            ['data2', 50, 20, 10, 40, 15, 25]
        ]
    }
});

var circles = d3.selectAll(".c3-circle").style("opacity", function(d){
	return d.value === 100 ? 1 : 0;
})
<script src="https://d3js.org/d3.v3.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://rawgit.com/masayuki0812/c3/master/c3.css">
<script src="https://rawgit.com/masayuki0812/c3/master/c3.js"></script>
<div id="chart"></div>

Upvotes: 3

Related Questions