HIGHCHARTS:Export can'上的事件;t访问x轴标签

HIGHCHARTS:Export can'上的事件;t访问x轴标签,highcharts,Highcharts,我正在使用“渲染”事件更改x轴标签在highchart上的位置。它工作得很好-在日期时间x轴上的刻度之间居中标签并移除最后一个标签 使用相同的设置导出图表时,会调用该函数(请参见下面的centerTimelineLabels),但它无法访问渲染的x轴标签。请参阅下面的图片,这些图片显示了DOM中不同的x轴标签以及导出的PNG 请点击此处: 具体来说,this.container在函数内部,是导出时的空包装器。。。没有孩子 导出时是否有方法访问和操作highchart中的x轴标签? expor

我正在使用“渲染”事件更改x轴标签在highchart上的位置。它工作得很好-在日期时间x轴上的刻度之间居中标签并移除最后一个标签

使用相同的设置导出图表时,会调用该函数(请参见下面的centerTimelineLabels),但它无法访问渲染的x轴标签。请参阅下面的图片,这些图片显示了DOM中不同的x轴标签以及导出的PNG

请点击此处:

具体来说,
this.container
在函数内部,是导出时的空包装器。。。没有孩子

导出时是否有方法访问和操作highchart中的x轴标签?

  exporting: {
    chartOptions: { // specific options for the exported image
      chart: {
        backgroundColor: '#ffffff',
        events: {
          render: centerTimelineLabels
        }
      }
    },
   ...
通过WEB校正X轴

通过导出的X轴不正确
谢谢您的演示

尝试使用此配置-请注意,每次重新绘制图表后都会触发渲染事件:

"events": {
  render() {
    let chart = this,
      xAxis = chart.xAxis[0],
      ticks = xAxis.ticks,
      firstTick = ticks[xAxis.tickPositions[0]],
      secondTick = ticks[xAxis.tickPositions[1]],
      ticksDistance = secondTick.mark.getBBox().x - firstTick.mark.getBBox().x;

    for (let i in ticks) {
      let tick = ticks[i];
      if (!tick.isLast) {
        tick.label.translate(ticksDistance / 2, 0)
      }
    }
  }
}
演示:

要隐藏最后一个标签,请将
xAxis.showLastLabel
属性设置为false


API:

你能在我可以使用的某个在线编辑器上复制你的案例吗?@SebastianWędzel我在上面添加了一个JSFIDLE的链接谢谢,效果很好!我注意到该解决方案还需要删除xAxis标签设置下的“useHTML”:true和“align”:“left”。
"events": {
  render() {
    let chart = this,
      xAxis = chart.xAxis[0],
      ticks = xAxis.ticks,
      firstTick = ticks[xAxis.tickPositions[0]],
      secondTick = ticks[xAxis.tickPositions[1]],
      ticksDistance = secondTick.mark.getBBox().x - firstTick.mark.getBBox().x;

    for (let i in ticks) {
      let tick = ticks[i];
      if (!tick.isLast) {
        tick.label.translate(ticksDistance / 2, 0)
      }
    }
  }
}