ChartJS/High 图表雷达图 - 悬停时显示的每个类别的不同径向轴标签
ChartJS/High Charts Radar chart - Different radial axis labels for each category that appear on hover
我想知道是否可以对每个类别的径向轴进行不同的标记,这些类别仅在将鼠标悬停在某个值上时才会出现。可能最容易用一个例子来解释。所以在这张图片中,“英语”标记的范围是 50 -100,当我将鼠标悬停在该轴上的一个值上时会弹出
Radar chart axis 1
然后我想要发生的事情是,当我将鼠标悬停在“行为”类别上时,例如显示该类别的径向轴标签,标签不同。
Radar chart Axis 2
我知道这可能很难(或不可能)做到,但在 ChartJS 或 HighCharts 中是否有一种创造性的方法可以做到这一点?
谢谢!
Highcharts 可以做到这一点。你只需要找到一个通用的比例,使用多个 y-axis 和模拟标签和工具提示值,例如:
var yLabels = [
[60, 70, 80, 90, 100],
['Average', 'Satisfactory', 'Good', 'Excellent', 'Outstanding']
];
Highcharts.chart('container', {
yAxis: [...],
xAxis: {
lineWidth: 0,
tickmarkPlacement: 'on',
categories: ['English', 'Behaviour', 'Physics', 'Chemistry', 'Biology', 'History']
},
tooltip: {
shared: true,
formatter: function() {
var points = this.points,
returnStr = this.x;
points.forEach(function(point) {
returnStr += (
'<br />' + point.series.name + ': ' + yLabels[point.point.x][point.y - 1]
);
});
return returnStr;
}
},
plotOptions: {
series: {
point: {
events: {
mouseOver: function() {
this.series.chart.yAxis[this.x].update({
labels: {
enabled: true
}
});
},
mouseOut: function() {
this.series.chart.yAxis[this.x].update({
labels: {
enabled: false
}
}, false);
}
}
}
}
},
...
});
现场演示: http://jsfiddle.net/BlackLabel/82dyogrp/
API参考:
https://api.highcharts.com/highcharts/pane
我想知道是否可以对每个类别的径向轴进行不同的标记,这些类别仅在将鼠标悬停在某个值上时才会出现。可能最容易用一个例子来解释。所以在这张图片中,“英语”标记的范围是 50 -100,当我将鼠标悬停在该轴上的一个值上时会弹出
Radar chart axis 1
然后我想要发生的事情是,当我将鼠标悬停在“行为”类别上时,例如显示该类别的径向轴标签,标签不同。
Radar chart Axis 2
我知道这可能很难(或不可能)做到,但在 ChartJS 或 HighCharts 中是否有一种创造性的方法可以做到这一点?
谢谢!
Highcharts 可以做到这一点。你只需要找到一个通用的比例,使用多个 y-axis 和模拟标签和工具提示值,例如:
var yLabels = [
[60, 70, 80, 90, 100],
['Average', 'Satisfactory', 'Good', 'Excellent', 'Outstanding']
];
Highcharts.chart('container', {
yAxis: [...],
xAxis: {
lineWidth: 0,
tickmarkPlacement: 'on',
categories: ['English', 'Behaviour', 'Physics', 'Chemistry', 'Biology', 'History']
},
tooltip: {
shared: true,
formatter: function() {
var points = this.points,
returnStr = this.x;
points.forEach(function(point) {
returnStr += (
'<br />' + point.series.name + ': ' + yLabels[point.point.x][point.y - 1]
);
});
return returnStr;
}
},
plotOptions: {
series: {
point: {
events: {
mouseOver: function() {
this.series.chart.yAxis[this.x].update({
labels: {
enabled: true
}
});
},
mouseOut: function() {
this.series.chart.yAxis[this.x].update({
labels: {
enabled: false
}
}, false);
}
}
}
}
},
...
});
现场演示: http://jsfiddle.net/BlackLabel/82dyogrp/
API参考:
https://api.highcharts.com/highcharts/pane