Highcharts drilldown下钻如何实现父级数据标签带%、子级不带%
Highcharts drilldown下钻父/子级数值后缀区分配置方案
你原有实现逻辑的方向是正确的,仅需要调整判断条件写法、确保数据结构匹配即可实现需求,下面是修正后的完整可用配置:
方案1:仅可下钻的父级点带%后缀
如果你的需求是只有点击能下钻的父级数据点展示%,不能下钻的父级点和下钻后的子级点都不带%,直接使用修正后的原有逻辑即可:
plotOptions: { series: { borderWidth: 0, dataLabels: { enabled: true, formatter: function() { // 判断当前点是否存在drilldown属性(即可下钻的父级点) if(this.point.hasOwnProperty("drilldown")) { return this.series.name + ", " + this.y + '%'; } else { return this.series.name + ", " + this.y; } } } } },
同时需要确保你的父级数据配置符合规范,可下钻的点必须显式声明drilldown属性对应下钻序列的id,示例数据结构参考:
// 顶层父级序列 series: [{ name: "品类占比", data: [ {name: "数码类", y: 35, drilldown: "digital"}, // 带drilldown属性,可下钻 {name: "服饰类", y: 40, drilldown: "clothing"}, // 带drilldown属性,可下钻 {name: "食品类", y: 25} // 无drilldown属性,不可下钻,不带% ] }], // 下钻子序列配置 drilldown: { series: [ {id: "digital", name: "数码类明细", data: [["手机",12],["电脑",18],["配件",5]]}, {id: "clothing", name: "服饰类明细", data: [["男装",15],["女装",22],["童装",3]]} ] }
方案2:所有顶层父级点都带%后缀
如果你的需求是所有顶层父级序列的点不管能不能下钻都带%,所有下钻后的子级点都不带%,可以直接通过Highcharts下钻序列自带的isDrilldown标识判断,实现更稳定:
plotOptions: { series: { borderWidth: 0, dataLabels: { enabled: true, formatter: function() { // 判断当前序列不是下钻生成的子序列,即为顶层父级序列 if(!this.series.options.isDrilldown) { return this.series.name + ", " + this.y + '%'; } else { return this.series.name + ", " + this.y; } } } } },
内容的提问来源于stack exchange,提问作者fguru
相关产品推荐
相关产品推荐

