【问题标题】:Multi-axis line chart with Chart.js使用 Chart.js 的多轴折线图
【发布时间】:2020-02-24 00:25:31
【问题描述】:

以下代码我尝试在折线图上显示两个 y 轴,并在两个数据源中添加了yAxisID。但是,它没有什么可显示的。我可以知道我的代码有什么问题吗?谢谢。

function BuildChart(labels, valuesa, valuesb, chartTitle) {
  var ctx = document.getElementById("myChart").getContext('2d');
  var myChart = new Chart(ctx, {
    type: 'line',
    data: {
      labels: labels,
      datasets: [{
        label: 'Temperature',
        fill: false,
        data: valuesa,
        yAxisID: 'y1',
        backgroundColor: 'red',
        borderColor: 'red',
      }, {
        label: 'Relative Humidity',
        fill: false,
        data: valuesb,
        yAxisID: 'y2',
        backgroundColor: 'blue',
        borderColor: 'blue',
      }]
    },
    options: {
      responsive: true,
      maintainAspectRatio: false,
      scales: {
        y1: {
          type: 'linear',
          display: true,
          position: 'left',
          },
        y2: {
          type: 'linear',
          display: true,
          position: 'right',
        },
        xAxes: [{
          ticks: {
            beginAtZero: true,
            scaleLabel: {
              display: false,
              labelString: ''
            }
          }
        }],
        yAxes: [{
            scaleLabel: {
            display: false,
            labelString: '',
          }
        }]

      }
    }
  })
  return myChart;
};


var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var json = JSON.parse(this.response);

    // Map json labels  back to values array
    var labels = json.feed.entry.map(function(e) {
      return e.gsx$tag.$t;
    });

    // Map json values back to values array
    var valuesa = json.feed.entry.map(function(e) {
      return e.gsx$dailytemperature.$t
    });

    // Map json values back to values array
    var valuesb = json.feed.entry.map(function(e) {
      return e.gsx$dailyrh.$t
    });

    BuildChart(labels, valuesa, valuesb, "Temperature", "Relative Humidity");
  }
};
xhttp.open("GET", "https://spreadsheets.google.com/", false);
xhttp.send();

【问题讨论】:

    标签: javascript charts chart.js yaxis


    【解决方案1】:

    在代码的options 图表中,yAxes 的定义太多(xAxis 之前和之后)。

    为了让它发挥作用,整个图表options 基本上可以简化为您在下面看到的。

    options: {
      responsive: true,
      maintainAspectRatio: false,
      scales: {
        yAxes: [{
            type: 'linear',
            position: 'left',
            id: 'y1',
          },
          {
            type: 'linear',
            position: 'right',
            gridLines: {
              drawOnChartArea: false
            },
            id: 'y2',
          }
        ]
      }
    }
    

    更多信息,请咨询Create Multiple Axis Chart.js 文档。

    【讨论】:

      最近更新 更多