У меня есть круговая диаграмма и диаграмма, показывающая те же данные.На круговой диаграмме показаны сводные данные арешарта.Теперь я хочу показать всплывающую подсказку / выделить данные другого графика, если выбраны соответствующие данные.
jsfiddle: http://jsfiddle.net/gothmogg/m59poqcd/18/
Я нашел подсказку, что мне следует использовать
onmouseover: function (d) {
chart2.tooltip.show({ x: d.x });
}
В качестве примера мой код будет выглядеть (как в jsfiddle)
var columns = ['data1', 'data2', 'data3', 'data4'];
var data = [];
data.push([20, 40, 30, 10, 50]);
data.push([50, 50, 50, 40, 60]);
data.push([10, 40, 60, 25, 30]);
data.push([80, 60, 30, 25, 35]);
var pieChart = c3.generate({
bindto: d3.select('#pie-chart'),
data: {
columns: [
[columns[0]].concat(data[0])
],
type: 'pie',
onmouseover: function(d, i) {
if (areaChart)
areaChart.tooltip.show({
x: d.x
});
},
}
});
var areaChart = c3.generate({
bindto: d3.select('#area-chart'),
data: {
columns: [
[columns[0]].concat(data[0])
],
type: 'area-spline',
onmouseover: function(d, i) {
if (pieChart)
pieChart.tooltip.show({
x: d.x
});
},
}
});
for (i = 1; i < columns.length; i++) {
setTimeout(function(column) {
pieChart.load({
columns: [
[columns[column]].concat(data[column]),
]
});
areaChart.load({
columns: [
[columns[column]].concat(data[column]),
]
});
}, (i * 5000 / columns.length), i);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/c3/0.6.9/c3.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.6.9/c3.min.js"></script>
<div id="area-chart"></div>
<div id="pie-chart"></div>
Подсветка / всплывающая подсказка, конечно, не работают таким образом ...
Любые идеи, кроме ручной подсветки с помощью d3?