Javascript 如何在图表顶部设置数据标签?

Javascript 如何在图表顶部设置数据标签?,javascript,jquery,graph,charts,highcharts,Javascript,Jquery,Graph,Charts,Highcharts,下面是一个启用数据标签的样条曲线图的简单示例: dataLabels: {enabled: true} 我希望将数据标签放在图表的顶部,而不是线上。 请参见此处的示例(我刚刚使用绘制编辑器移动了数据标签:): 我该怎么做?知道当我们调整窗口大小时,数据标签应该是响应的 谢谢。这是我的想法 将图表作为svg对象加载后执行此代码 $(function(){ var fixedYPos = -25; var extractXValue = function(value) { var my

下面是一个启用数据标签的样条曲线图的简单示例:

dataLabels: {enabled: true}

我希望将数据标签放在图表的顶部,而不是线上。 请参见此处的示例(我刚刚使用绘制编辑器移动了数据标签:):

我该怎么做?知道当我们调整窗口大小时,数据标签应该是响应的

谢谢。

这是我的想法

将图表作为svg对象加载后执行此代码

$(function(){
var fixedYPos = -25;
var extractXValue = function(value) {
    var myString = value;
    var myRegexp = /^translate\(([0-9]+)\,.*?\)$/g;
    var match = myRegexp.exec(myString);
    return match[1];
};
var $el = $("svg.highcharts-root .highcharts-data-label");
$el.each(function(index, value) {
    var elTransformX = extractXValue($($el[index]).attr("transform"));
    $($el[index]).attr("transform", "translate(" + elTransformX + "," + fixedYPos + ")");
});
});

我认为最好是在load和redraw events函数中移动数据标签,因为即使在图表上,数据标签也可能位于正确的位置

在这里,您可以看到有助于您的代码:

  var positionLabels = function(chart) {
    var series = chart.series[0],
      dataLabelsGroup = series.dataLabelsGroup,
      xVal;
    Highcharts.each(dataLabelsGroup.element.children, function(d) {
      xVal = (d.attributes.transform.value).substring((d.attributes.transform.value).indexOf('(') + 1, (d.attributes.transform.value).indexOf(','));
      $(d).attr('transform', 'translate(' + xVal + ',-20)')
    })
  };

在这里,您可以找到它如何工作的实例:

是的,这就是我想要做的。不幸的是,在调整数据标签的大小时,它们又回到了初始位置:/非常感谢!