2016-05-14 2 views
1

Я пытаюсь создать диаграмму и линейную диаграмму с использованием Chart.js, но я хотел, чтобы на диаграмме отображался другой набор «меток».Chart.js Бар и линейная диаграмма

данные для линейной диаграммы находятся на первой и последней точке [2800, 1300], и я хотел, чтобы линия рисовала по меткам гистограммы.

Возможно ли это?

Ожидаемое enter image description here

Результат enter image description here

+0

Mine обмен * результат * с помощью сниппета или скрипки? –

+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>

Смежные вопросы