微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有库的 HTML CANVAS 5 中的水平条形图

如何解决没有库的 HTML CANVAS 5 中的水平条形图

我正在尝试制作具有动态宽度的动态水平条形图,当我更改画布宽度和高度时,它会相应地调整水平条的位置。(Canvas HTML5)没有任何库。 我通过 x 轴和 y 轴的动态步长计算

    // Y-axis label
    var labelonYaxis = 4;
    var StepSizeY = 1;
    for (let index = 0; index < StepSizeOptions.length; index++) {
      var TotalSteps = this.RangeX / StepSizeOptions[index];
      if (TotalSteps <= labelonYaxis) {
        StepSizeY = StepSizeOptions[index];
        break;
      }
       this.SampleLayerContext.fillText(currentY,this.marginLeft / 2,(this.gridHeight + this.marginTop) 
 - y);

无法找到在yaxis公式上找到水平条动态高度和位置的解决方案 到目前为止我做的公式

    var barWidth = this.data.length / this.gridWidth;
    var pixel = (this.gridWidth / this.RangeX);
    this.SampleLayerContext.rect(this.marginLeft,this.gridHeight-Yaxis,Yaxis,barWidth);

解决方法

我不确定这是否是您所等待的。但是您可以使用窗口的高度计算 h。如果您不等待全高的条形,请使用因子乘以 H。示例:H*0.8 //80%。

要计算 y 轴,您需要知道条的高度并减去 y 基数。

pintGraph = function( bars ){
  ctx.clearRect(0,W,H);  
  barw = canvas.width / (bars.length) - marginbar;
  
  for(let i = 0; i < bars.length; i++){
    ctx.fillStyle = color[i];
    barh =  H * (bars[i]/max);
  
    ctx.fillRect( i * (barw + marginbar),Hbase - barh,barw,barh);
    
  }
}

看看我的项目就明白了:https://codepen.io/Luis4raujo/full/ZEBaVbJ

如果这有助于您检查正确或投票。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。