有什么方法可以在单击时突出显示特定节点 | Highcharts 桑基
Is there any way to highlight specific node on click | Highcharts Sankey
我想知道是否可以像 states in hover(linkOpacity) 一样在单击时突出显示特定节点,并在单击另一个 node/series 时将其替换为以前的颜色。
简而言之,加载图表时,最上面的节点最初会高亮显示,当用户单击另一个节点时,该特定选定节点会高亮显示(并且最初高亮显示的节点会恢复为正常颜色).
请在下面找到类似的 JSFiddle,它突出显示了点击时的特定系列(这是通过在 JavaScript 的帮助下添加 class 完成的)。
events: {
click: function (event) {
event.target.classList.add('additionalClass');
}
}
Highcharts 中是否有任何功能可以在最终用户不进行任何 DOM 操作的情况下实现这一点?
您可以在 click
事件中简单地更新点的颜色:
point: {
events: {
click: function(event) {
this.update({
color: 'red'
});
}
}
}
实时工作示例: http://jsfiddle.net/kkulig/dg2uf8d0/
API参考:https://api.highcharts.com/highcharts/plotOptions.sankey.point.events
您可以简单地从上一个元素中删除 additionalClass
,然后放入点击的元素中:
events: {
click: function (event) {
let old_HL = document.querySelector('#container .highcharts-link.highcharts-point.additionalClass');
if (old_HL) old_HL.classList.remove('additionalClass');
event.target.classList.add('additionalClass');
}
}
编辑: 没有 DOM 功能的变体:
plotOptions: {
series: {
animation: false,
dataLabels: {
enabled: true,
nodeFormat: "{point.name}mm"
},
allowPointSelect: true,//you need this to allow selection
colorByPoint: false,
point: {
events: {
select: function(event) {
if (typeof this.isNode !== 'undefined') return;//to disable selecting the root node
this.custom_old_color = this.color;//save old color
this.update({
color: 'red'
});
},
unselect: function(event) {
if (typeof this.isNode !== 'undefined') return;
this.update({
color: this.custom_old_color//restore old color
});
}
}
}
}
我想知道是否可以像 states in hover(linkOpacity) 一样在单击时突出显示特定节点,并在单击另一个 node/series 时将其替换为以前的颜色。
简而言之,加载图表时,最上面的节点最初会高亮显示,当用户单击另一个节点时,该特定选定节点会高亮显示(并且最初高亮显示的节点会恢复为正常颜色).
请在下面找到类似的 JSFiddle,它突出显示了点击时的特定系列(这是通过在 JavaScript 的帮助下添加 class 完成的)。
events: {
click: function (event) {
event.target.classList.add('additionalClass');
}
}
Highcharts 中是否有任何功能可以在最终用户不进行任何 DOM 操作的情况下实现这一点?
您可以在 click
事件中简单地更新点的颜色:
point: {
events: {
click: function(event) {
this.update({
color: 'red'
});
}
}
}
实时工作示例: http://jsfiddle.net/kkulig/dg2uf8d0/
API参考:https://api.highcharts.com/highcharts/plotOptions.sankey.point.events
您可以简单地从上一个元素中删除 additionalClass
,然后放入点击的元素中:
events: {
click: function (event) {
let old_HL = document.querySelector('#container .highcharts-link.highcharts-point.additionalClass');
if (old_HL) old_HL.classList.remove('additionalClass');
event.target.classList.add('additionalClass');
}
}
编辑: 没有 DOM 功能的变体:
plotOptions: {
series: {
animation: false,
dataLabels: {
enabled: true,
nodeFormat: "{point.name}mm"
},
allowPointSelect: true,//you need this to allow selection
colorByPoint: false,
point: {
events: {
select: function(event) {
if (typeof this.isNode !== 'undefined') return;//to disable selecting the root node
this.custom_old_color = this.color;//save old color
this.update({
color: 'red'
});
},
unselect: function(event) {
if (typeof this.isNode !== 'undefined') return;
this.update({
color: this.custom_old_color//restore old color
});
}
}
}
}