Chart.js chartjs动画后如何应用
尝试扩展图表,以便可以绘制到数据点的直线,但这是在默认动画之前发生的。如果在之后使用,它看起来会更平滑 我大部分时间都在工作。。但是我如何在图表动画之后应用这个呢Chart.js chartjs动画后如何应用,chart.js,Chart.js,尝试扩展图表,以便可以绘制到数据点的直线,但这是在默认动画之前发生的。如果在之后使用,它看起来会更平滑 我大部分时间都在工作。。但是我如何在图表动画之后应用这个呢 var originalLineDraw = Chart.controllers.line.prototype.draw; Chart.helpers.extend(Chart.controllers.line.prototype, { draw: function () { originalLineDraw.
var originalLineDraw = Chart.controllers.line.prototype.draw;
Chart.helpers.extend(Chart.controllers.line.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-1']
var points = this.chart.getDatasetMeta(this.index).data;
for (var i = 0; i < points.length; i++) {
// var point_x = points[i]._model.x;
var point_y = points[i]._model.y;
ctx.beginPath();
ctx.setLineDash([5, 5]);/*dashes are 5px and spaces are 3px*/
ctx.moveTo(xaxis.getPixelForValue(undefined, i), point_y);
ctx.strokeStyle = '#fff';
ctx.lineTo(xaxis.getPixelForValue(undefined, i), yaxis.bottom);
ctx.stroke();
}
}
}
});
var originalLineDraw=Chart.controllers.line.prototype.draw;
Chart.helpers.extend(Chart.controllers.line.prototype{
绘图:函数(){
应用(这个,参数);
var chart=this.chart;
var ctx=chart.chart.ctx;
var index=chart.config.data.lineAtIndex;
如果(索引){
var xaxis=图表刻度['x轴-0'];
var yaxis=图表刻度['y轴-1']
var points=this.chart.getDatasetMeta(this.index).data;
对于(变量i=0;i
更新…
虽然黑暗是不正确的,它仍然是动画后播放
var verticalLinePlugin = {
renderVerticalLine: function (chartInstance) {
var chart = chartInstance;
var ctx = chart.chart.ctx;
var maxpoint = [];
//loop the datasets
for (var y = 0; y < chart.config.data.datasets.length; y++) {
var dataset = chart.config.data.datasets[y];
if (dataset.hidden)
continue;
var points = chart.getDatasetMeta(y).data;
for (var i = 0; i < points.length; i++) {
var point_y = points[i]._model.y;
if (point_y < 0)
continue;
var point = maxpoint[i];
if (point == undefined) {
maxpoint.push({ id: i, y: point_y });
} else {
if (point.y > point_y) {
point.y = point_y;
}
}
}
}
var xaxis = chart.scales['x-axis-0'];
var yaxis = chart.scales['y-axis-1']
chart.data.datasets.forEach(function (dataset, i) {
var ds = dataset;
var meta = chart.getDatasetMeta(i);
meta.data.forEach(function (element, index) {
var value = maxpoint[i];
ctx.beginPath();
ctx.setLineDash([5, 5]);
ctx.moveTo(xaxis.getPixelForValue(undefined, i), value.y);
ctx.strokeStyle = '#fff';
ctx.lineTo(xaxis.getPixelForValue(undefined, i), yaxis.bottom);
ctx.stroke();
});
});
},
afterRender: function (chart) {
this.renderVerticalLine(chart);
}
};
Chart.plugins.register(verticalLinePlugin);
var verticalLinePlugin={
RenderTicaline:函数(chartInstance){
var-chart=chartInstance;
var ctx=chart.chart.ctx;
var maxpoint=[];
//循环数据集
对于(变量y=0;y点y){
点y=点y;
}
}
}
}
var xaxis=图表刻度['x轴-0'];
var yaxis=图表刻度['y轴-1']
chart.data.dataset.forEach(函数(dataset,i){
var-ds=数据集;
var meta=chart.getDatasetMeta(i);
meta.data.forEach(函数(元素、索引){
var值=最大点[i];
ctx.beginPath();
ctx.setLineDash([5,5]);
ctx.moveTo(xaxis.getPixelForValue(未定义,i),value.y);
ctx.strokeStyle='#fff';
ctx.lineTo(xaxis.getPixelForValue(未定义,i),yaxis.bottom);
ctx.stroke();
});
});
},
afterRender:函数(图表){
本品为苯妥替卡林(图表);
}
};
Chart.plugins.register(verticalLinePlugin);
我做了一些小改动(非直观!),现在垂直线出现在动画之后
var originalLineDraw = Chart.controllers.line.prototype.draw;
Chart.helpers.extend(Chart.controllers.line.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-1']
var points = this.chart.getDatasetMeta(this.index).data;
for (var i = 0; i < points.length; i++) {
// var point_x = points[i]._model.x;
var point_y = points[i]._model.y;
ctx.beginPath();
ctx.setLineDash([5, 5]);/*dashes are 5px and spaces are 3px*/
ctx.moveTo(xaxis.getPixelForValue(undefined, i), point_y);
ctx.strokeStyle = '#fff';
ctx.lineTo(xaxis.getPixelForValue(undefined, i), yaxis.bottom);
ctx.stroke();
}
}
}
});
var x_point = element._model.x;
或:
中,则垂直线将消失并与数据一起重新显示。(如果数据开始隐藏,三元指定将修复冲突)
var originalLineDraw = Chart.controllers.line.prototype.draw;
Chart.helpers.extend(Chart.controllers.line.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-1']
var points = this.chart.getDatasetMeta(this.index).data;
for (var i = 0; i < points.length; i++) {
// var point_x = points[i]._model.x;
var point_y = points[i]._model.y;
ctx.beginPath();
ctx.setLineDash([5, 5]);/*dashes are 5px and spaces are 3px*/
ctx.moveTo(xaxis.getPixelForValue(undefined, i), point_y);
ctx.strokeStyle = '#fff';
ctx.lineTo(xaxis.getPixelForValue(undefined, i), yaxis.bottom);
ctx.stroke();
}
}
}
});
var x_point = element._model.x;
或:
中,则垂直线将消失并与数据一起重新显示。(如果数据开始隐藏,三元指定将修复冲突)