Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击饼图切片图例时设置不同点的颜色_Javascript_Jquery_Highcharts - Fatal编程技术网

Javascript 单击饼图切片图例时设置不同点的颜色

Javascript 单击饼图切片图例时设置不同点的颜色,javascript,jquery,highcharts,Javascript,Jquery,Highcharts,我想将饼图切片的所有颜色设置为灰色,但图例中单击的颜色饼图切片除外。我只知道如何只更改单击的图例项的颜色,而不更改其他项的颜色 我曾尝试将id设置为数据点,并使用e.target,但没有提供正确的访问 谢谢你的帮助 这是我的名片 $(文档).ready(函数(){ var myCharts={ 图表:{ renderTo:'容器', 键入“pie”, 背景色:“rgba(255,255,255,0.1)”, 边框颜色:“rgba(255,255,255,0.1)”, 保证金:[38,20,20,

我想将饼图切片的所有颜色设置为灰色,但图例中单击的颜色饼图切片除外。我只知道如何只更改单击的图例项的颜色,而不更改其他项的颜色

我曾尝试将id设置为数据点,并使用e.target,但没有提供正确的访问

谢谢你的帮助

这是我的名片

$(文档).ready(函数(){
var myCharts={
图表:{
renderTo:'容器',
键入“pie”,
背景色:“rgba(255,255,255,0.1)”,
边框颜色:“rgba(255,255,255,0.1)”,
保证金:[38,20,20,20],
宽度:300,
身高:300,
影子:没错,
},
颜色:[
"0066FF",,
"33CC33",,
#FF0000",,
"FFFF00",,
],
学分:{
已启用:false
},
图例:{
布局:“水平”,
对齐:'居中',
垂直排列:“顶部”,
x:0,,
y:0
},
标题:{
文本:“网络激活”,
垂直排列:“底部”,
y:10
},
副标题:{
正文:“7%”,
垂直排列:'中间',
y:30,
风格:{
颜色:'黑色',
字体大小:“40px”
}
},
亚克斯:{
勾选颜色:'#FF0000',
宽度:3,
间隔时间:5
},
xAxis:{
勾选颜色:'#FF0000',
宽度:3,
间隔时间:5
},
打印选项:{
馅饼:{
国家:{
悬停:{
已启用:false
}
},
要点:{
活动:{
legendItemClick:函数(){
这是graphic.attr({
填写:“#中交”
});
返回错误
}
}
},
数据标签:{
启用:对,
距离:0.1,
颜色:'黑色',
格式化程序:函数(){
返回“+this.point.name+”:“+this.percentage+”%”;
},
},
内部尺寸:“60%”,
影子:没错,
大小:“100%”,
allowPointSelect:true,
卷发:10,
}
},
工具提示:{
已启用:false
},
系列:[{
数据:[],
showInLegend:是的,
}]
};
myCharts.chart.renderTo='container';
myCharts.title.text='Net Activations';
var实际值=52,
目标=73-实际值,
ATB=100-目标-实际值;
myCharts.series[0]。数据=[{
名称:'实际',
y:实际的,
身份证号码:0
}, {
名称:“目标”,
y:目标,
身份证号码:1
}, {
名称:“ATB”,
y:ATB,
身份证号码:2
}];
新海图。海图(myCharts);
});

好吧,我可以帮你实现50%的目标:

point: {
   events: {
       click: function () {
           if (event.point.sliced) {
               $.each(this.series.data, function (i, e) {
                   if (!e.sliced) {
                       this.graphic.attr({
                           fill: '#CCCCCC'
                       });
                   }
               });
           }
        }
    }

当您重新单击该切片以将其重新插入时,此操作仍会中断-在单击其他切片之前,其他切片的颜色仍为灰色。您需要对此进行更多的研究。

与其直接使用
this.graphic.attr
攻击SVG,不如使用API更新切片。在这方面效果很好:

legendItemClick: function () {
    var series = this.series;
    for (var i=0; i < series.data.length; i++){
        var point = series.data[i];
        if (point == this){
            // set back to old color
            point.update({color: series.chart.options.colors[this.id]});
        }else{
            // make it gray
            point.update({color: '#CCCCCC'});
        }
     }
     return false;
 }
legendItemClick:函数(){
var系列=本系列;
对于(变量i=0;i

更新了小提琴。

我希望当我悬停在legend上时会发生这种情况。请给我答案。谢谢
legendItemClick: function () {
    var series = this.series;
    for (var i=0; i < series.data.length; i++){
        var point = series.data[i];
        if (point == this){
            // set back to old color
            point.update({color: series.chart.options.colors[this.id]});
        }else{
            // make it gray
            point.update({color: '#CCCCCC'});
        }
     }
     return false;
 }