我想在饼图上垂直图例的最后一项下方添加一个文本链接。我尝试在LabelFormatter中使用一个函数,但是没有使用javascript进行所需的功能的经验。有人可以帮助您完成此操作吗?
Highcharts.chart('container', {
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie'
},
title: {
text: 'Browser market shares in January, 2018'
},
tooltip: {
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
},
accessibility: {
point: {
valueSuffix: '%'
}
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: false
},
showInLegend: true
}
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
labelFormatter: function() {
if (this.isLast) {
return this + "<br> <a href=\"link\">Text</a>";
}
},
},
series: [{
name: 'Brands',
colorByPoint: true,
data: [{
name: 'Chrome',
y: 61.41,
sliced: true,
selected: true
}, {
name: 'Internet Explorer',
y: 11.84
}, {
name: 'Firefox',
y: 10.85
}, {
name: 'Edge',
y: 4.67
}, {
name: 'Safari',
y: 4.18
}, {
name: 'Other',
y: 7.05
}]
}]
});
在labelFormatter
功能内,您可以访问this
。
💡作为提示,如果在函数内部使用
console.log(this)
,它将在调试器控制台中显示您可以访问的所有内容。
对于您的情况,如果您想知道自己是否在最后一个图例项上,则可以将this.index
(图例的索引)与this.series.data.length - 1
(数据项的数量进行比较... - 1是因为索引偏移到零)。
👉工作示例:https://codesandbox.io/s/javascript-stackoverflow-60908009-o3ftp
labelFormatter: function() {
// if current legend is the last one
// display the legend name
// followed by a link on a second line
if (this.index === this.series.data.length - 1) {
return (
this.name +
'<br> <a style="color: #0c6def; text-decoration: underline;" href="link">Clickable link!</a>'
);
}
// otherwise just display the legend name
return this.name;
}
我在链接中添加了一些样式,以便它实际上看起来像一个链接,否则它看起来像图例的其他元素。