如何在Chart.js上自定义边框样式

甲虫汁

如何在Chart.js上自定义边框样式

Chart.js 2.2.1

默认情况下,条和点的边框是实线。如果可能的话,我想通过将边框变成虚线来引起对特定条形或线条的注意。

浏览文档并没有发现任何有用的信息。以下是我认为可能有效的方法

var ctx = document.getElementById("myChart");
var borderColors = ['red','blue','black']
var myChart = new Chart(ctx, {
    type: 'bar',
    data: {
        labels: ["Red", "Blue", "Black"],
        datasets: [{
            label: '# of Votes',
            data: [12, 19, 3],
            borderColor:borderColors,
            borderWidth:3,
            borderStyle:'dash'//has no effect
        }]
    }
});

它在这里直播如何使边框变为虚线?

编辑:我的问题不同于这个类似的问题有两个原因

  1. 该解决方案用虚线替换了所有条形边框,而正如我指出的那样,我只想设置数据集中特定条形的样式
  2. 该解决方案专用于条形图(它覆盖了rectangle.draw函数,而我提到我还想对数据集中的特定点用点划线(在折线图中)。
技术

与其像重复一样编辑所有图表和矩形,不应该只对要用虚线显示的每个条进行编辑。

如果您看一下控制台(console.log(myChart) 如果您敢于深入了解该对象,则会为您提供很多信息),您会看到每个条形图都实例化了即数据集的第x条形图。myChart.config.data.datasets[0]._meta[0].data[x]x


知道应该去哪里后,您现在可以编辑该 .draw() 方法。

这是一个简单的函数,可以用来使其工作:

function dashedBorder(chart, dataset, data, dash) {

    // edit the .draw() function
    chart.config.data.datasets[dataset]._meta[0].data[data].draw = function() {
        chart.chart.ctx.setLineDash(dash);
        Chart.elements.Rectangle.prototype.draw.apply(this, arguments);

        // put the line style back to the default value
        chart.chart.ctx.setLineDash([1,0]);
    }
}

您可以在此jsFiddle中看到结果

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章