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