Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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 活动纱布Highchart数据标签_Javascript_Highcharts - Fatal编程技术网

Javascript 活动纱布Highchart数据标签

Javascript 活动纱布Highchart数据标签,javascript,highcharts,Javascript,Highcharts,我正在创造一个新的世界。除了在管理数据标签方面遇到困难之外,一切都很好 正如您可以看到的,如果运行下面的代码,数据标签将很好地呈现,甚至可以随序列路径旋转。但它们只是因为序列值很小而搞砸了 是否有任何方法可以将其隐藏在较小的系列中,或者将其保留在弧外(参见此处以供参考) Highcharts.chart('container'{ 图表:{ 类型:“solidgauge”, }, 标题:{ 文本:“活动”, 风格:{ 字体大小:“24px” } }, 窗格:{ startAngle:0, 端角:

我正在创造一个新的世界。除了在管理数据标签方面遇到困难之外,一切都很好

正如您可以看到的,如果运行下面的代码,数据标签将很好地呈现,甚至可以随序列路径旋转。但它们只是因为序列值很小而搞砸了

是否有任何方法可以将其隐藏在较小的系列中,或者将其保留在弧外(参见此处以供参考)

Highcharts.chart('container'{
图表:{
类型:“solidgauge”,
},
标题:{
文本:“活动”,
风格:{
字体大小:“24px”
}
},
窗格:{
startAngle:0,
端角:360,
背景:[{//移动轨迹
外层:112%,
内半径:“88%”,
backgroundColor:Highcharts.color(Highcharts.getOptions().color[0])
.setOpacity(0.3)
.get(),
边框宽度:0
},{//运动轨迹
外层:87%,
内半径:“63%”,
backgroundColor:Highcharts.color(Highcharts.getOptions().color[1])
.setOpacity(0.3)
.get(),
边框宽度:0
},{//看台轨道
外层:62%,
内半径:“38%”,
backgroundColor:Highcharts.color(Highcharts.getOptions().color[2])
.setOpacity(0.3)
.get(),
边框宽度:0
}]
},
亚克斯:{
分:0,,
最高:100,
线宽:0,
位置:[]
},
打印选项:{
solidgauge:{
数据标签:{
格式化程序:函数(){
返回“真长数据标签”;
},
启用:对,
allowOverlap:是的,
zIndex:10,
作物:假,
溢出:“允许”,
文本路径:{
启用:对,
属性:{
textAnchor:'开始',
起始时间:5,
dy:15
}
}
},
线头:“圆形”,
粘滞跟踪:错误,
四舍五入:对
}
},
系列:[{
名称:'移动',
数据:[{
颜色:Highcharts.getOptions().color[0],
半径:“112%”,
内半径:“88%”,
y:80
}]
}, {
名称:"运动",,
数据:[{
颜色:Highcharts.getOptions().color[1],
半径:“87%”,
内半径:“63%”,
y:65
}]
}, {
名称:'站',
数据:[{
颜色:Highcharts.getOptions().colors[2],
半径:62%,
内半径:“38%”,
y:10
}]
}]
});
#容器{
宽度:300px;
}

您可以使用。在calback中,此关键字引用

大概是这样的:

dataLabels: {
    formatter: function(options){
        if(this.series.name === 'Stand') {
            return null;
        } else {
            return this.y;
        }
    }
}

我发现,
solidgauge
系列尚未实现
getDataLabelPath
函数。我在Highcharts GitHub问题频道上报道了它作为功能增强,您可以在那里分享您的观点

下面是我实现此功能的基本尝试:

(功能(H){
H.seriesTypes.solidgauge.prototype.pointClass.prototype.getDataLabelPath=函数(标签){
var renderer=this.series.chart.renderer,
shapeArgs=this.shapeArgs,
上半部分=this.angle<0 | | this.angle>Math.PI,
start=shapeArgs.start,
end=shapeArgs.end,
弧度=结束-开始;
如果(!this.dataLabelPath){
this.dataLabelPath=渲染器
.arc({
开放:是的
})
//将其添加到数据标签组中,以便将其销毁
//带着标签
.添加(标签);
}
this.dataLabelPath.attr({
x:shapeArgs.x,
y:shapeArgs.y,
r:(shapeArgs.r.)+
(this.dataLabel.options.distance | | 0)),
开始:开始,
完:完,,
顺时针:1,
});
this.outerArcLength=弧度*this.dataLabelPath.r
返回this.dataLabelPath;
}
})(高图)

但标签是动态的。我不知道哪个标签不适合这个系列。
(function(H) {
  H.seriesTypes.solidgauge.prototype.pointClass.prototype.getDataLabelPath = function(label) {
    var renderer = this.series.chart.renderer,
      shapeArgs = this.shapeArgs,
      upperHalf = this.angle < 0 || this.angle > Math.PI,
      start = shapeArgs.start,
      end = shapeArgs.end,
      radians = end - start;
    if (!this.dataLabelPath) {
      this.dataLabelPath = renderer
        .arc({
          open: true
        })
        // Add it inside the data label group so it gets destroyed
        // with the label
        .add(label);
    }

    this.dataLabelPath.attr({
      x: shapeArgs.x,
      y: shapeArgs.y,
      r: (shapeArgs.r +
        (this.dataLabel.options.distance || 0)),
      start: start,
      end: end,
      clockwise: 1,
    });

    this.outerArcLength = radians * this.dataLabelPath.r

    return this.dataLabelPath;
  }
})(Highcharts)