gpt4 book ai didi

chart.js - 在 Chart.js 2.0 中绘制水平线

转载 作者:行者123 更新时间:2023-12-04 00:34:36 25 4
gpt4 key购买 nike

你能帮我扩展 Chart.js v2.0。我需要在图表中绘制一些水平线,类似于:http://jsfiddle.net/vsh6tcfd/3/

var originalLineDraw = Chart.controllers.bar.prototype.draw;

Chart.helpers.extend(Chart.controllers.bar.prototype, {
draw: function() {
originalLineDraw.apply(this, arguments);

var chart = this.chart;
var ctx = chart.chart.ctx;

var index = chart.config.data.lineAtIndex;
if (index) {
var xaxis = chart.scales['x-axis-0'];
var yaxis = chart.scales['y-axis-0'];

ctx.save();
ctx.beginPath();
ctx.moveTo(xaxis.getPixelForValue(undefined, index), yaxis.left);
ctx.strokeStyle = '#ff0000';
ctx.lineTo(xaxis.getPixelForValue(undefined, index), yaxis.right);
ctx.stroke();
ctx.restore();
}
}
});

var config = {
type: type,
data: jQuery.extend(true, {}, data),
options: this.chartdata.options,
lineAtIndex: 2
};

new Chart(ctx, config);

最佳答案

选项
使用 chart.js,您有 2 个选择。

  • 您可以创建混合图表类型 ( Example Here )。这将允许您添加折线图来创建您的线条。
  • 您可以创建一个插件(参见下面的示例)。

  • 选项 2 是我推荐的选项,因为它可以让您更好地控制线条的外观。
    修复
    demo of the plugin
    Chart.js 现在 supports plugins .这允许您向图表添加任何您想要的功能!
    要创建插件,您需要在事件发生后运行代码并根据需要修改图表/ Canvas 。
    下面的代码应该给你一个很好的起点:
    var horizonalLinePlugin = {
    afterDraw: function(chartInstance) {
    var yValue;
    var yScale = chartInstance.scales["y-axis-0"];
    var canvas = chartInstance.chart;
    var ctx = canvas.ctx;
    var index;
    var line;
    var style;

    if (chartInstance.options.horizontalLine) {
    for (index = 0; index < chartInstance.options.horizontalLine.length; index++) {
    line = chartInstance.options.horizontalLine[index];

    if (!line.style) {
    style = "rgba(169,169,169, .6)";
    } else {
    style = line.style;
    }

    if (line.y) {
    yValue = yScale.getPixelForValue(line.y);
    } else {
    yValue = 0;
    }

    ctx.lineWidth = 3;

    if (yValue) {
    ctx.beginPath();
    ctx.moveTo(0, yValue);
    ctx.lineTo(canvas.width, yValue);
    ctx.strokeStyle = style;
    ctx.stroke();
    }

    if (line.text) {
    ctx.fillStyle = style;
    ctx.fillText(line.text, 0, yValue + ctx.lineWidth);
    }
    }
    return;
    }
    }
    };
    Chart.pluginService.register(horizonalLinePlugin);

    关于chart.js - 在 Chart.js 2.0 中绘制水平线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38324238/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com