在 Highcharts 中仅显示第一个和最后一个 xAxis 标签

Show only first and last xAxis label in Highcharts

我只想在 xAxis 上显示第一个和最后一个标签。这将为用户提供足够的 »frame«。但是,我没有成功。我正在使用同步图表,可以找到 here。是(较小的)图表的第二和第三列«,我的目标是。

我尝试使用 »startOnTick« 和 »endOnTick«,但它不会。

    xAxis: {
      crosshair: true,
      events: {
        setExtremes: syncExtremes
      },
      visible: i === 1,
      showFirstlabel: true,
      showLastlabel: true,
      startOnTick: true,
      endOnTick: true,
      labels: {
        step: 500,
        format: '{value}'
      }
    },

强制 Highcharts 只显示第一个和最后一个标签的正确方法是什么?

Here 是一个简短的 fiddle(不知道为什么没有出现该行;它显示了鼠标悬停的值...)。

感谢任何提示。

  • 您可以使用 xAxis.labels.formatter 回调来显示想要的报价:

演示:https://jsfiddle.net/BlackLabel/m2Ln8sdg/

    xAxis: {
    tickAmount: 10,
        labels: {
        formatter() {
        if(this.isFirst || this.isLast) {
            return this.value
        } else {
            return ''
        }
      }
    }
  },

API: https://api.highcharts.com/highcharts/xAxis.labels.formatter

  • 如果您想对其进行更多控制(如隐藏标签和刻度),您可以使用 load 回调方法和适当的逻辑来 hide/show 刻度:

演示:https://jsfiddle.net/BlackLabel/fbcdskmv/

  chart: {
    events: {
      load() {
        let chart = this;

        for (let i in chart.xAxis[0].ticks) {
            //hide all
          chart.xAxis[0].ticks[i].label.hide()
          chart.xAxis[0].ticks[i].mark.hide()
                    // show first and last tick
          if (chart.xAxis[0].ticks[i].isFirst || chart.xAxis[0].ticks[i].isLast) {
            chart.xAxis[0].ticks[i].mark.show()
            chart.xAxis[0].ticks[i].label.show()
          }
        }
      }
    }

API: https://api.highcharts.com/highcharts/chart.events.load

上面的答案很好,但我只是想展示另一种效果很好的方法。

在我的造型中我这样做了;

.highcharts-xaxis-labels > text:not(:first-child):not(:last-child) {
    visibility: hidden !important;
}

总结@luftikus143 and @Sebastian Wędzel条评论:

const data = [
    ['Jan 2020', 167],
    ['Feb 2020', 170],
    ['Mar 2020', 172]
];

xAxis: {
  type: 'category',
  tickPositions: [0, data.length - 1]
}

将只输出第一个和最后一个标签。 @martinethyl 的解决方法可能需要一些额外的调整,特别是如果您有多个数据点。建议(可能不适用于较小的媒体类型):


    xAxis: {
      type: 'category',
      labels: {
        rotation: 0,
        x: 5, // Optional: moves labels along the x-axis
        style: {
          textOverflow: 'none', // Removes ellipsis
          whiteSpace: 'nowrap', // Gets the label text in one line
        },
      },