我有following code。我想要做的是,当鼠标悬停在图例上时,文字应该出现在甜甜圈的中心。
喜欢当mouseOver出现在甜甜圈的单片上时。
var chart = new Highcharts.Chart({
chart: {
renderTo: 'distrubution_of_funds',
type: 'pie',
borderRadius: 0
},
...
series: [ {
name: 'Versions',
data: [{
"name": "№ 123 (manager)",
"y":2709.74,
"color": "#E85620"
},{
"name": "№ 333",
"y":885.5,
"color": "#92B145"
}, {
"name": "other (127)",
"y": 3151.3274920329,
"isOther": true,
"color": "#B6B9BE"
}],
size: '80%',
innerSize: '60%',
showInLegend: true,
dataLabels: {
enabled: false
}
}],
legend: {
align: 'right',
verticalAlign: 'middle',
layout: 'vertical',
useHTML: true,
width: 160,
}
},
function(chart) {
var xpos = '50%';
var ypos = '53%';
var circleradius = 102;
// Render the text
chart.innerText = chart.renderer.text('$$$', 270, 210).css({
color: '#0f1122',
fontSize: '16px',
textAlign: 'center'
}).attr({zIndex: 999}).add();
});
怎么做?
例如工作表at this page
答案 0 :(得分:1)
我添加了jquery
库以便使用更少的代码,因此这不是vanilla javascript
解决方案。我在function(chart) { // on complete
部分添加了以下代码:
$(chart.series[0].data).each(function(i, serie){
$(serie.legendItem.element).hover(function(){
chart.innerText.attr({text: serie.y})
}, function(){
chart.innerText.attr({text: '$$$'});
});
});
这有点棘手,但基本上,您在每个hover
元素上附加一个legendItem
事件,它将图表innerText
属性更改为y
属性serie
。
你可以看到它在这里工作: Here is the error
答案 1 :(得分:0)
它的作品在这里:
http://jsfiddle.net/fw71sxx6/5/
我添加了jquery以在功能图中添加它:
// Render the text
chart.innerText = chart.renderer.text('$$$', 270, 210).css({
color: '#0f1122',
fontSize: '16px',
textAlign: 'center',
display: 'none'
}).attr({
class:'getlegend',
zIndex: 999
}).add();
我添加了这个脚本:
$( document ).ready(function() {
$('.highcharts-series').mouseover(function() {
$('.showlegend').html($('.getlegend').html());
});
});