如何更新chartjs2选项(scale.tick.max)

Oac*_*tzl 5 chart.js

我有一个带有此选项的条形图

     scales: {
        yAxes: [{
          ticks: {
            display:false,
            beginAtZero:true,
            max: 1150
          }
        }]
      }
Run Code Online (Sandbox Code Playgroud)

现在我改变了我唯一的数据集的值

      barChartData.datasets[0].data = newData;
Run Code Online (Sandbox Code Playgroud)

并更新图表

      window.myBar.update();
Run Code Online (Sandbox Code Playgroud)

我怎样才能更新yAxes的最大比例?

我必须使用最大比例,所以我不能使用suggestMax.

Oac*_*tzl 9

自己找到了解决方案.

更改图表的任何选项:

myBar.config.options
Run Code Online (Sandbox Code Playgroud)

在我的情况下

myBar.config.options.scales.yAxes[0].ticks.max = newValue
Run Code Online (Sandbox Code Playgroud)

在此之后你必须打电话

window.myBar.update();
Run Code Online (Sandbox Code Playgroud)

  • 非常令人沮丧的是,他们的文档详细讨论了每个选项,但对于每个选项在初始对象中的位置以及如何动态更改的上下文几乎没有提供帮助, (6认同)

小智 5

这是我的折线图解决方案。

您可以使用“ beforeFit ”回调函数,您可以在文档中找到该函数http://www.chartjs.org/docs/latest/axes/

  1. scale.chart.config.data.datasets中你有图表数据集
  2. 您必须设置scale.options.ticks.max

例子:

scales: {
        yAxes: [{
          beforeFit: function (scale) {

            // See what you can set in scale parameter
            console.log(scale)

            // Find max value in your dataset
            let maxValue = 0
            if (scale.chart.config && scale.chart.config.data && scale.chart.config.data.datasets) {
              scale.chart.config.data.datasets.forEach(dataset => {
                if (dataset && dataset.data) {
                  dataset.data.forEach(value => {
                    if (value > maxValue) {
                      maxValue = value
                    }
                  })
                }
              })
            }

            // After, set max option !!!
            scale.options.ticks.max = maxValue
          }
        }
Run Code Online (Sandbox Code Playgroud)

我希望我有所帮助。