如何在自动换页图

时间:2017-05-31 00:47:32

标签: javascript charts highcharts

我正在努力做到这个正式的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)并且似乎取决于您使用的字体。

1 个答案:

答案 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参数根据其点而不是标注的左上角来定位标注。