【问题标题】:How to rotate datalabels in Charts.js with plugins?如何使用插件在 Chartjs 中旋转数据标签?
【发布时间】:2020-12-15 15:50:06
【问题描述】:

我正在尝试使用 Charts.js 在画布图中绘制风速。数据(风速和风向)来自 JSON URL。代码一切正常,情节如下所示:

我可以通过使用 Charts.js 中的插件、formatterrotation 函数来添加箭头,但我想做的是让箭头根据风向角度旋转来自 JSON。

JSON 文件的格式如下所示:

到目前为止,部分代码如下所示:

Current = Date.now();
$.getJSON("https://api.openweathermap.org/data/2.5/onecall?lat={LAT}&lon={LONG}&dt=" + Current + "&appid={MY API CODE}", function(data) {
      $.each(data.hourly, function(key, value) {
        var d = new Date(value.dt * 1000);
        minutes = "0" + d.getMinutes()
        var date_corrected = d.getFullYear() + "-" + [d.getMonth() + 1] + '-' + d.getDate() + ' ' + [d.getHours()] + ':' + minutes.substr(-2);
        dataOpen1.push({
          x: date_corrected,
          y: value.wind_speed
        });
        dataOpen2.push({
          x: date_corrected,
          y: value.wind_deg
        });

      });
      var WIND = new Chart(vant, {
          plugins: [ChartDataLabels],
          type: 'line',
          data: {
            labels: dataOpen1.map(x => x.x),
            datasets: [{
              data: dataOpen1.map(y => y.y),
              label: 'Viteza vantului ',
              borderColor: "#3e95cd",
              fill: true
            }, ]
          },
          options: {
            plugins: {
              datalabels: {
                backgroundColor: 'white',
                borderRadius: 20,
                borderWidth: 3,
                borderDashOffset: 20,
                color: 'black',
                font: {
                  size: 18
                },
                formatter: function(value) {
                  return '\u27a3'
                },
                rotation: function(ctx) {
                  return ctx.dataset.data[ctx.dataIndex] * 25;
                },
                padding: 0
              }
            },
          });
      });

所以我想从dataOpen2(风向)中获取值,并用它来设置每个数据集的箭头旋转角度。我知道代码必须在这里:

rotation:
  function(ctx) {
.......
    return ctx.dataset.data[ctx.dataIndex] * 25;
  },

但我真的不知道该怎么做。

【问题讨论】:

    标签: javascript html jquery charts chart.js


    【解决方案1】:

    根据 github 存储库中 CHARTJS 的问题 https://github.com/chartjs/Chart.js/issues/5667

    您可能需要通过以下方式调整数据:

    dataOpen1.push({
              x: date_corrected,
              y: value.wind_speed
              d: value.wind_deg
    });
    

    然后你可以使用 datalable 插件修改你的函数

    rotation: function(ctx) { return ctx.dataset.data[ctx.dataIndex].d; }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多