2016-05-14 234 views
1

我想創建一個酒吧和折線圖使用Chart.js,但我想條形圖有一組不同的'標籤'。Chart.js酒吧和折線圖

折線圖的數據位於第一個和最後一個點[2800,1300],我希望線條在條形圖的標籤上繪製。

這可能嗎?

預期 enter image description here

結果 enter image description here

+0

礦通過片段或撥弄共享* *結果? –

+0

https://jsfiddle.net/anthonyumpad/2tp6uw32/ – watcher

回答

0

https://jsfiddle.net/fgx92Lm5/

對數據線上的數據應該是:

data: [2800,2680,2565,2450,2335,2220,2105,1990,1875,1760,1645,1530,1415,1300] 

換句話說,您需要根據終點計算其他值並根據條數以獲得一條線的方式。

,δ=(2800年至1300年)/ 13 =〜115

+0

謝謝Alex,我能夠解決這個問題。 http://jsfiddle.net/anthonyumpad/956a0Lnd/ – watcher

2

我能夠通過延伸Chartjs解決這個問題。

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, 0), yaxis.getPixelForValue(70)); 
 
     ctx.strokeStyle = '#000000'; 
 
     ctx.lineTo(xaxis.getPixelForValue(undefined, 7), yaxis.getPixelForValue(10)); 
 
     ctx.stroke(); 
 
     ctx.restore(); 
 
    } 
 
    } 
 
}); 
 

 
var config = { 
 
    type: 'bar', 
 
    data: { 
 
    labels: ["January", "February", "March", "April", "May", "June", "July"], 
 
    datasets: [{ 
 
     label: "My First dataset", 
 
     data: [65, 0, 80, 81, 56, 85, 40], 
 
     fill: false 
 
    }], 
 
    lineAtIndex: 2 
 
    } 
 
}; 
 

 
var ctx = document.getElementById("myChart").getContext("2d"); 
 
new Chart(ctx, config);
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.0.0-beta/Chart.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<canvas id="myChart"></canvas>