我正在努力做到这个正式的HighCharts小提琴:http://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/members/renderer-label-on-chart/
然而,示例"标签"函数已对x(270)和y(50)参数进行了硬编码:
function (chart) { // on complete
var point = chart.series[0].points[8];
chart.renderer.label('Max observation', 270, 50, 'callout',
point.plotX + chart.plotLeft, point.plotY + chart.plotTop)
我的图表显然需要不同的参数。我尝试使用point的plotX等。但是这些都没有记录。事实上,这些都不是API的一部分,因为(大概)HighCharts开发人员在另一个答案中指出 - 它们只是获取坐标的内部属性。换句话说,没有证件。
使用它们是从点获取值的简写:
http://api.highcharts.com/highcharts#Point.x http://api.highcharts.com/highcharts#Point.y 并通过以下方式转换为位置:
http://api.highcharts.com/highcharts#Axis.toPixels()
上述链接似乎完全不相关。
我试过这个来判断那些坐标提供了什么
}, function (chart) { // on complete
var point = chart.series[0].points[8];
chart.renderer.label('.'
, point.plotX.toFixed(0), point.plotY.toFixed(0), 'callout', point.plotX + chart.plotLeft, point.plotY + chart.plotTop)
.add();
});
似乎plotX是一个点位于图表系列点左侧的一组随机像素,提供它(约60ish)并且似乎取决于您使用的字体。
答案 0 :(得分:0)
这似乎就是你要找的东西:
var point = chart.series[0].points[8];
var pxX = chart.xAxis[0].toPixels(point.x, true);
var pxY = chart.yAxis[0].toPixels(point.y, true);
chart.renderer.label('Max observation', pxX, pxY, 'callout', point.plotX + chart.plotLeft, point.plotY + chart.plotTop);
Fiddle - 注意.toPixels
每轴 ,因此您需要分别确定点X和点Y的像素表示。函数的true
参数根据其点而不是标注的左上角来定位标注。