Highcharts 我可以禁用plotband';超过plotband时的s标签';s边界?;高库存

Highcharts 我可以禁用plotband';超过plotband时的s标签';s边界?;高库存,highcharts,highstock,Highcharts,Highstock,我在一个图表中绘制了几个绘图条带,每个条带都有其标签 但当“时间范围”更改为“所有时间”时,plotband将变窄以包含整个标签,因此标签彼此重叠 当超过plotband的边框时,是否可以禁用plotband的标签?如何禁用?您可以检查标签宽度是否大于事件上的打印带宽,如果大于,则通过将其不透明度设置为0来隐藏标签 用于切换标签不透明度的函数: function togglePlotbands() { this.plotLinesAndBands.forEach(plotband =>

我在一个图表中绘制了几个绘图条带,每个条带都有其标签

但当“时间范围”更改为“所有时间”时,plotband将变窄以包含整个标签,因此标签彼此重叠


当超过plotband的边框时,是否可以禁用plotband的标签?如何禁用?

您可以检查标签宽度是否大于事件上的打印带宽,如果大于,则通过将其不透明度设置为0来隐藏标签

用于切换标签不透明度的函数:

function togglePlotbands() {
  this.plotLinesAndBands.forEach(plotband => {
    const { plotLeft, plotWidth } = this.chart
    const from = Math.max(this.toPixels(plotband.options.from), plotLeft)
    const to = Math.min(this.toPixels(plotband.options.to), plotLeft + plotWidth)

    const plotbandWidth = to - from
    const show = plotband.label.getBBox().width < plotbandWidth

    plotband.label.css({ opacity: Number(show) })
  })
}
在图表加载时可选:

chart: {
  events: {
    load: function() {
      togglePlotbands.call(this.xAxis[0])
    }
  }
},

示例:

您可以检查标签宽度是否大于事件上的打印带宽,如果大于,则通过将其不透明度设置为0来隐藏它

用于切换标签不透明度的函数:

function togglePlotbands() {
  this.plotLinesAndBands.forEach(plotband => {
    const { plotLeft, plotWidth } = this.chart
    const from = Math.max(this.toPixels(plotband.options.from), plotLeft)
    const to = Math.min(this.toPixels(plotband.options.to), plotLeft + plotWidth)

    const plotbandWidth = to - from
    const show = plotband.label.getBBox().width < plotbandWidth

    plotband.label.css({ opacity: Number(show) })
  })
}
在图表加载时可选:

chart: {
  events: {
    load: function() {
      togglePlotbands.call(this.xAxis[0])
    }
  }
},

示例:

我发现了一个问题:此方法在IE7中无效。我已经将您的ES6代码传输到ES5,并在我的网站中使用它:。在Firefox中,它可以正常工作,但在IE7中,长标签文本仍然显示在plotband之外,而且,当我在xAxis中使用鼠标选择某个区域时,第二次单击无法停止选择。你能帮我找出原因吗@morganfree谢谢。ie7不完全支持不透明度。在这种情况下,您可以使用ie6+支持的可见性属性(切换为可见|隐藏)。我不知道你在第二次点击时停止选择是什么意思——我在原来的问题中没有看到它。“第二次点击时,选择永远不会停止”。对不起,我没有正确地表达它,我的意思是:当我想在图表中选择一个区域时,我需要首先单击开始位置,将鼠标移动到结束位置,然后释放鼠标。但在IE7中,该版本将导致另一个选择开始,因此它永远不会结束@莫根弗里德,不透明和这个问题有关系吗?看来你的答案没有用。对不起,我不明白你为什么提到它@morganfreeYes,它用于togglePlotbands函数。你可以用可视性来代替不透明度,这在ie7中应该可以用——我发现了一个问题:这个方法在ie7中无效。我已经将您的ES6代码传输到ES5,并在我的网站中使用它:。在Firefox中,它可以正常工作,但在IE7中,长标签文本仍然显示在plotband之外,而且,当我在xAxis中使用鼠标选择某个区域时,第二次单击无法停止选择。你能帮我找出原因吗@morganfree谢谢。ie7不完全支持不透明度。在这种情况下,您可以使用ie6+支持的可见性属性(切换为可见|隐藏)。我不知道你在第二次点击时停止选择是什么意思——我在原来的问题中没有看到它。“第二次点击时,选择永远不会停止”。对不起,我没有正确地表达它,我的意思是:当我想在图表中选择一个区域时,我需要首先单击开始位置,将鼠标移动到结束位置,然后释放鼠标。但在IE7中,该版本将导致另一个选择开始,因此它永远不会结束@莫根弗里德,不透明和这个问题有关系吗?看来你的答案没有用。对不起,我不明白你为什么提到它@morganfreeYes,它用于togglePlotbands函数。您可以用可视性替换不透明度,这在ie7中应该可以使用-