Je voudrais créer un graphique en ligne avec Chart.Js
mais que l' Y-Axis
ne bouge pas lorsque je me défile.
Je suppose que je peux utiliser une largeur fixe, et le mettre dans un conteneur div avec overflow:auto
, mais ensuite, l'information de l' Y-axis
est attachée à la toile et se déplace.
Je ne vois pas un paramètre ou une option pour cela dans les documents. Des idées?
Je vous remercie
Vous êtes à peu près sur la bonne voie. Si vous ajoutez un autre wrapper et que l'axe y est terminé.
Aperçu
CSS
.chartWrapper { position: relative; } .chartWrapper > canvas { position: absolute; left: 0; top: 0; pointer-events:none; } .chartAreaWrapper { width: 600px; overflow-x: scroll; }
HTML
<div class="chartWrapper"> <div class="chartAreaWrapper"> <canvas id="myChart" height="300" width="1200"></canvas> </div> <canvas id="myChartAxis" height="300" width="0"></canvas> </div>
Scénario
... new Chart(ctx).Line(data, { onAnimationComplete: function () { var sourceCanvas = this.chart.ctx.canvas; // the -5 is so that we don't copy the edges of the line var copyWidth = this.scale.xScalePaddingLeft - 5; // the +5 is so that the bottommost y axis label is not clipped off // we could factor this in using measureText if we wanted to be generic var copyHeight = this.scale.endPoint + 5; var targetCtx = document.getElementById("myChartAxis").getContext("2d"); targetCtx.canvas.width = copyWidth; targetCtx.drawImage(sourceCanvas, 0, 0, copyWidth, copyHeight, 0, 0, copyWidth, copyHeight); } });
Fiddle – http://jsfiddle.net/mbhavfwm/