Chart.js 绘制带限制线的堆积条形图
Chart.js Draw a Stacked Bar Chart with Limit Line
我想使用 Chart.js 在图表中画一条水平线。但是我做不到。
我找到了这个 example 但我无法将其转换为条形图,因为它使用点来确定放置折线图的位置,而条形图似乎不使用 "points"
var data = {
labels: ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"],
datasets: [{
data: [12, 3, 2, 1, 8, 8, 2, 2, 3, 5, 7, 1]
}]
};
var ctx = document.getElementById("LineWithLine").getContext("2d");
Chart.types.Line.extend({
name: "LineWithLine",
initialize: function () {
Chart.types.Line.prototype.initialize.apply(this, arguments);
},
draw: function () {
Chart.types.Line.prototype.draw.apply(this, arguments);
var point = this.datasets[0].points[this.options.lineAtIndex]
var scale = this.scale
console.log(this);
// draw line
this.chart.ctx.beginPath();
this.chart.ctx.moveTo(scale.startPoint+12, point.y);
this.chart.ctx.strokeStyle = '#ff0000';
this.chart.ctx.lineTo(this.chart.width, point.y);
this.chart.ctx.stroke();
// write TODAY
this.chart.ctx.textAlign = 'center';
this.chart.ctx.fillText("TODAY", scale.startPoint + 35, point.y+10);
}
});
new Chart(ctx).LineWithLine(data, {
datasetFill : false,
lineAtIndex: 2
});
<script src="http://www.chartjs.org/assets/Chart.min.js"></script>
<div>
<canvas id="LineWithLine" width="600" height="400"></canvas>
</div>
在 Chart.js 2 中有更好的方法吗?也许结合使用折线图和条形图还是太过分了?
希望你们能帮我解决这个问题,我已经使用 CSS 和 Javascript 创建了这张图表,如下所示:
在这个例子中,限制是一个负值,所以它在实际线下方绘制了自己的图表,这可能会造成混淆,但主要的是线是根据我选择的值绘制的。 :)
如果您仍然遇到此问题,请查看有关
的问题
在我链接的问题的答案中,chart.js 中定义了一个新插件(更多信息在 Chart.js' 网站)允许您绘制条形图和自定义线。还有一个 jsfiddle 可以更好地理解插件的工作原理
我想使用 Chart.js 在图表中画一条水平线。但是我做不到。
我找到了这个 example 但我无法将其转换为条形图,因为它使用点来确定放置折线图的位置,而条形图似乎不使用 "points"
var data = {
labels: ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"],
datasets: [{
data: [12, 3, 2, 1, 8, 8, 2, 2, 3, 5, 7, 1]
}]
};
var ctx = document.getElementById("LineWithLine").getContext("2d");
Chart.types.Line.extend({
name: "LineWithLine",
initialize: function () {
Chart.types.Line.prototype.initialize.apply(this, arguments);
},
draw: function () {
Chart.types.Line.prototype.draw.apply(this, arguments);
var point = this.datasets[0].points[this.options.lineAtIndex]
var scale = this.scale
console.log(this);
// draw line
this.chart.ctx.beginPath();
this.chart.ctx.moveTo(scale.startPoint+12, point.y);
this.chart.ctx.strokeStyle = '#ff0000';
this.chart.ctx.lineTo(this.chart.width, point.y);
this.chart.ctx.stroke();
// write TODAY
this.chart.ctx.textAlign = 'center';
this.chart.ctx.fillText("TODAY", scale.startPoint + 35, point.y+10);
}
});
new Chart(ctx).LineWithLine(data, {
datasetFill : false,
lineAtIndex: 2
});
<script src="http://www.chartjs.org/assets/Chart.min.js"></script>
<div>
<canvas id="LineWithLine" width="600" height="400"></canvas>
</div>
在 Chart.js 2 中有更好的方法吗?也许结合使用折线图和条形图还是太过分了?
希望你们能帮我解决这个问题,我已经使用 CSS 和 Javascript 创建了这张图表,如下所示:
在这个例子中,限制是一个负值,所以它在实际线下方绘制了自己的图表,这可能会造成混淆,但主要的是线是根据我选择的值绘制的。 :)
如果您仍然遇到此问题,请查看有关
在我链接的问题的答案中,chart.js 中定义了一个新插件(更多信息在 Chart.js' 网站)允许您绘制条形图和自定义线。还有一个 jsfiddle 可以更好地理解插件的工作原理