Javascript Highcharts大值的粘性标签超出图表范围

Javascript Highcharts大值的粘性标签超出图表范围,javascript,css,highcharts,Javascript,Css,Highcharts,我有两件事需要帮助 海图有问题,看起来需要对海图进行一些计算,但无法计算出实际情况。 请看这个,在这个例子中,右边的标签$500位于正确的位置,这是可以的,但是当值大/大时,比如$5555,那么 图表标签超出图表范围。现在看看这把小提琴 错误: 应该发生的是,5555美元应该只在图表中,与第一小提琴中显示的位置相同 我试过的 用+30加/减字符串点.y的长度 var chart = new Highcharts.Chart({ ... .... /*********RIG

我有两件事需要帮助

海图有问题,看起来需要对海图进行一些计算,但无法计算出实际情况。 请看这个,在这个例子中,右边的标签$500位于正确的位置,这是可以的,但是当值大/大时,比如$5555,那么 图表标签超出图表范围。现在看看这把小提琴

错误:

应该发生的是,5555美元应该只在图表中,与第一小提琴中显示的位置相同

我试过的

用+30加/减字符串点.y的长度

var chart = new Highcharts.Chart({
    ...
    ....
    /*********RIGHT SIDE CPM*******************/     
    var point = chart.series[0].data[7];
    var text = chart.renderer.text(
        '$'+point.y, 
        point.plotX + chart.plotLeft - 30, 
    //  point.plotX + chart.plotLeft - ( ((point.y).toString().length) + 30 ), //My change 
    ...
});
但当值再次从$5555更改为$5时,此point.plotX+chart.plotLeft-point.y.toString.length+30不受支持

因此,当标签的长度较大/较小时,位置基本上不应发生变化

我的下一个问题,图表从两边的小位移开始。 请看下图

你可以看到两条红线之间的间隙,在图像的两个角落,我需要删除它,这可能是一个填充问题,但我无法找出它

请在这两个问题上帮助我

谢谢你提前帮忙

问题:对齐渲染文本

因此,通过阅读您的代码,我认为您试图根据内容的长度调整文本和框的位置。这里的问题是,当每个字符减去一个常量值时,字体的宽度是可变的。此外,renderer.text方法始终固定在左下角,这对您不利

这里我要做的是利用text.getBBox知道文本元素的确切边界框。你也许可以让它看起来更好一些,但这里有一个粗略的例子:

/*********RIGHT SIDE CPM*******************/

var point = chart.series[0].data[7];
// Draw dummy text, just to get bounding box
var text = chart.renderer.text('$'+point.y, 0, 0)
    .attr({
        zIndex: 5
    }).add();
// Get bounding box
var box = text.getBBox();
// Destroy dummy text
text.destroy();

// Draw actual text based on bounding box
text = chart.renderer.text(
        '$'+point.y, 
        point.plotX + chart.plotLeft - box.width + 2 ,
        point.plotY + chart.plotTop - 10
    ).attr({
        zIndex: 5
    }).add();

// Get actual box
box = text.getBBox();
// Draw actual box
chart.renderer.rect(box.x - 5, box.y - 5, box.width + 10, box.height + 10, 5)
    .attr({
        fill: '#FFFFEF',
        stroke: 'gray',
        'stroke-width': 1,
        zIndex: 4
    })
    .add();
我只是费心修好你的右侧CPM,但你明白了

问题:图形两侧的间距

使用代码将x轴的最小值和最大值设置为特定值,如中所示:

xAxis: {
    ...,
    min: 1,
    max: 8
}

嘿,哥们,非常感谢你,这是你应得的,我可以再请你一个建议或帮助吗,我换了你的小提琴,所以如果最后的值都变成了“55555”,那么它是相互重叠的,请告诉我你有什么想法,或者修改代码会很好。再次感谢,先生,我不确定。如果您开始移动它们,可能会给人y轴的错误印象。为了避免文本重叠,我只给每个文本+框一个单独的zIndex。也许你可以找出哪一个值最高,然后给它一个更大的zIndex,让它位于顶部。先生,你能看看这个吗。请在哪一点上帮助我