Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何自定义图表js条形图形状?_Javascript_Chart.js - Fatal编程技术网

Javascript 如何自定义图表js条形图形状?

Javascript 如何自定义图表js条形图形状?,javascript,chart.js,Javascript,Chart.js,如何更改Chart Js的条形图形状,使其顶部和底部都像这张图片一样尖锐 获取三角形的一种方法是制作一个堆叠图表,并在顶部添加一个折线图。为了保持反应性,您需要动态调整线数据上的pointRadius大小 或者在chart.js的第4640行上,您可以将element_rectangle draw函数更改为: draw: function() { var ctx = this._chart.ctx; var vm = this._view; va

如何更改Chart Js的条形图形状,使其顶部和底部都像这张图片一样尖锐


获取三角形的一种方法是制作一个堆叠图表,并在顶部添加一个折线图。为了保持反应性,您需要动态调整线数据上的pointRadius大小

或者在chart.js的第4640行上,您可以将element_rectangle draw函数更改为:

draw: function() {
        var ctx = this._chart.ctx;
        var vm = this._view;
        var rects = boundingRects(vm);
        var outer = rects.outer;
        var inner = rects.inner;

        //ctx.fillStyle = vm.backgroundColor;
        //ctx.fillRect(outer.x, outer.y, outer.w, outer.h);

        if (outer.w === inner.w && outer.h === inner.h) {
            return;
    }
    
    let offset = outer.w / 2;

        ctx.save();
    ctx.beginPath();
    
    ctx.moveTo(outer.x, outer.y);
    ctx.lineTo(outer.x, outer.y + outer.h);
    ctx.lineTo(outer.x + offset, outer.y + outer.h + offset);
    //ctx.lineTo(outer.x + offset, outer.y + outer.h);
    ctx.lineTo(outer.x + outer.w, outer.y + outer.h);
    ctx.lineTo(outer.x + outer.w, outer.y);
    ctx.lineTo(outer.x + offset, outer.y - offset);
    ctx.lineTo(outer.x, outer.y);
    ctx.stroke();


        //ctx.rect(outer.x, outer.y, outer.w, outer.h);
         ctx.clip();
         ctx.fillStyle = vm.borderColor;
        // ctx.rect(inner.x, inner.y, inner.w, inner.h);
         ctx.fill('evenodd');
        ctx.restore();
    },
这就产生了:

更可能从源代码导入chart.js,您需要制作自己的图表类型作为条形图的扩展

(function(Chart) {
  var helpers = Chart.helpers;

    Chart.defaults.triBar = {
        hover: {
            mode: "label"
        },
    dataset: {
      categoryPercentage: 0.8,
      barPercentage: 0.9
    },
        scales: {
            xAxes: [{
                type: "category",
                // grid line settings
                gridLines: {
                    offsetGridLines: true
                }
            }],
            yAxes: [{
                type: "linear"
            }]
        }
    };


  Chart.controllers.triangleBar = Chart.controllers.bar.extend({           
    
    //  
    //  extend element_rectangle draw function here
    //

  });    
}).call(this, Chart);

在这里,您可以看到关于圆角的信息。您可以尝试通过修改此(chart.types.bar.extend)来扩展条形图。这里是从上面链接的问题衍生出来的另一个问题:试试这个。它有助于在Chart.js条形图上进行圆角处理