Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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_Html_Css_D3.js_C3.js - Fatal编程技术网

Javascript 图表弧在刷新后收缩

Javascript 图表弧在刷新后收缩,javascript,html,css,d3.js,c3.js,Javascript,Html,Css,D3.js,C3.js,我有一张油炸圈饼图,图中有些油炸圈饼突出。这是屏幕截图 橙色、红色和蓝色的弧线都很突出,我想让它们永久地突出,但是当我在任何一块上悬停时,它们会收缩,像这样变得正常 我们正在使用一个超时功能,使碎片突出: setTimeout(function () { chart.internal.expandArc(['A', 'B', 'D']) }, 0) 这是我的 我想知道这是否是一个JavaScript问题,或者我如何可能更改它以使弧永久突出。您可以再次调用expandArc函数在mo

我有一张油炸圈饼图,图中有些油炸圈饼突出。这是屏幕截图

橙色、红色和蓝色的弧线都很突出,我想让它们永久地突出,但是当我在任何一块上悬停时,它们会收缩,像这样变得正常

我们正在使用一个超时功能,使碎片突出:

setTimeout(function () {
    chart.internal.expandArc(['A', 'B', 'D'])
}, 0)
这是我的


我想知道这是否是一个JavaScript问题,或者我如何可能更改它以使弧永久突出。

您可以再次调用
expandArc
函数在mouseout上重置它:

onmouseout: function (d, i) {
  chart.internal.expandArc(['A', 'B', 'D']);
}
更新

var电流片;
var图表=c3.0({
数据:{
x:‘x’,
栏目:[
[x',2013-01-01',2013-01-02',2013-01-03',2013-01-04',2013-01-05',2013-01-06'],
[A',30,200,100,400,150,250],
[B',13010014020015050],
[C',50100130240200150],
[D',13010014020015050],
[E',130150200300200100]
],
键入:“甜甜圈”,
onclick:函数(e){
},
onmouseover:函数(d,i){
},
onmouseout:函数(d,i){
chart.internal.expandArc(['A','B','D'])
}
},
轴线:{
x:{
键入:“timeseries”,
勾选:{
格式:“%Y-%m-%d”,
对,,
位置:'右内'
}
}
},
bindto:'破折号',
酒吧:{
宽度:{
比率:0.5//这使得条宽为刻度之间长度的50%
}
},
馅饼:{
是的,
},
工具提示:{
分组:假,
内容:函数(数据、defaultTitleFormat、defaultValueFormat、颜色){
//控制台日志(“Containt”);
//日志(数据、defaultTitleFormat、defaultValueFormat、颜色);
返回“

”+数据[0]。值+”

”; } } }); setTimeout(函数(){ chart.internal.expandArc(['A','B','D']) },0)
p{
线高:1;
字体大小:粗体;
填充物:5px12px;
背景:rgba(0,0,0,0.8);
颜色:#fff;
边界半径:4px;
线高:15px;
字体大小:12px;
最小宽度:91px;
}

您可以覆盖
chart.internal.unexpandArc
以不为要保持扩展的扇区执行任何操作

您的
setTimeout
变为

setTimeout(function() {
  chart.internal.expandArc(['A', 'B', 'D'])
  var originalUnexpandArc = chart.internal.unexpandArc;
  chart.internal.unexpandArc = function(targetIds) {
    if (typeof targetIds === "string") {
      if (['A', 'B', 'D'].indexOf(targetIds) !== -1) {
        return;
      }
    }
    else {  
      targetIds = targetIds.filter(function(id) { return ['A', 'B', 'D'].indexOf(id) === -1; });
    }
    return originalUnexpandArc.apply(this, [ targetIds ]);
  }
}, 0);


更新的fiddle-

也就是说,Mark的解决方案更简单、更好。我之所以发布这篇文章,是因为我在处理工作解决方案时添加了一个.api,从而掩盖了我的原始评论:-)我实际上有一个后续问题,我不知道在使用chart.load时如何解决这个问题。它正在重新加载整个图表,因此圆弧扩展效果消失。如果没有解决,我建议将setTimeout移动到图表的onrendered选项()(您必须将
chart.internal
更改为
chart.api.internal
),有趣的是,这在StackSnippets中不起作用(如果您将鼠标悬停在饼图的中心),但这似乎是一个问题,因为它显然是与SjfDelp工作。当我编辑这个片段时,我遇到了一个问题,在炸圈饼的中间盘旋,所有的东西都会崩溃。现在它似乎已经变形成当我在炸圈饼的中间点。但没关系,运行时一切都很好:-)@Mark我有一个后续问题,来自您和potatopeelings提供的解决方案。我在使用chart.load时遇到问题