首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Chart.js中获取竖条的长度(高度)

问如何在Chart.js中获取竖条的长度(高度)
EN

Stack Overflow用户
提问于 2020-04-08 13:14:31
回答 2查看 479关注 0票数 2

我在我的项目中有一个竖条(我使用chart.js)。我需要知道它的长度/高度(像素)。我试着这样得到它:

代码语言:javascript
复制
afterDraw: chart => {      
      var yAxis = chart.scales['y-axis-0'];   
      chart.config.data.datasets[0].data.forEach((value, index) => {
        console.log(Math.round(yAxis.getPixelForValue(value))); 
      });      
    }

但是我得到了不正确的值。对于水平条,它可以正常工作(使用var xAxis = chart.scales['x-axis-0'])。有什么问题吗?该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2020-04-08 13:18:43

尝试使用getDatasetMeta()获取元数据。

代码语言:javascript
复制
var meta = myChart.getDatasetMeta(0);
var height = meta.data[0]._model.height;
票数 0
EN

Stack Overflow用户

发布于 2020-12-22 22:53:46

Y轴的原点(零值)位于top of the canvas处。因此,需要从yAxis.bottom中减去通过yAxis.getPixelForValue(value)获得的值,如下所示:

代码语言:javascript
复制
afterLayout: chart => {      
  var yAxis = chart.scales['y-axis-0']; 
  chart.data.datasets[0].data.forEach(value => {
    console.log(Math.round(yAxis.bottom - yAxis.getPixelForValue(value))); 
  });      
}

请看下面的示例,看看它是如何工作的(代码是从Chart.js Bar documentation page派生的)。

​

代码语言:javascript
复制
new Chart('myChart', {
  type: "bar",
  plugins: [{
    afterLayout: chart => {      
      var yAxis = chart.scales['y-axis-0']; 
      chart.data.datasets[0].data.forEach(value => {
        console.log(Math.round(yAxis.bottom - yAxis.getPixelForValue(value))); 
      });      
    }
  }],
  data: {
    labels: ["January", "February", "March", "April", "May", "June", "July"],
    datasets: [{
      label: "My First Dataset",
      data: [65, 59, 80, 81, 56, 55, 40],
      fill: false,
      backgroundColor: ["rgba(255, 99, 132, 0.2)", "rgba(255, 159, 64, 0.2)", "rgba(255, 205, 86, 0.2)", "rgba(75, 192, 192, 0.2)", "rgba(54, 162, 235, 0.2)", "rgba(153, 102, 255, 0.2)", "rgba(201, 203, 207, 0.2)"],
      borderColor: ["rgb(255, 99, 132)", "rgb(255, 159, 64)", "rgb(255, 205, 86)", "rgb(75, 192, 192)", "rgb(54, 162, 235)", "rgb(153, 102, 255)", "rgb(201, 203, 207)"],
      borderWidth: 1
    }]
  },
  options: {
    scales: {
      yAxes: [{
        ticks: {
          min: 0,
          stepSize: 20
        }
      }]
    }
  }
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js"></script>
<canvas id="myChart" height="90"></canvas>

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61093755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档