2017-02-16 137 views
0

我想使用Chart.js在图表中绘制水平线。但我无法做到。Chart.js使用限制线绘制堆积条形图

我发现这个example,但我已经遇到了麻烦,将其转换为条形图,因为它是用点来确定在何处放置线和条形图似乎并没有使用“点”

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,你可以看到如下:

enter image description here

在这个例子中,下限为负值等等它在自己的实线以下绘制了自己,这可能会令人困惑,但主要的是该线被绘制为我选择的值。 :)

回答

1

如果仍然有这个问题,看看这个问题关于drawing a custom horizontal line in Chart.js 2

在回答我链接的queston,它被定义在chart.js之一个新的插件(在Chart.js更多的相关信息“的网站),使你画一个条形图和一条自定义线。还有一个jsfiddle可以更好地理解插件是如何工作的