chartjs-plugin-zoom是一个用于Chart.js的缩放和平移插件
可以调用chart.resetZoom()以编程方式将缩放重置为默认状态。参见this example on jsfiddle。
HTML:
<div class="myChartDiv">
<canvas id="myChart" width="600" height="400"></canvas>
</div>
<button id="reset_zoom">
Reset zoom
</button>JavaScript:
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3]
}]
},
options: {
pan: {
enabled: true,
mode: 'x',
},
zoom: {
enabled: true,
mode: 'x',
}
}
});
$('#reset_zoom').click(function(){
myChart.resetZoom();
});看起来是这样的:

但是,我不想在一开始就显示重置缩放按钮。相反,我想先隐藏它,然后侦听缩放事件(在chartjs-plugin-zoom事件是鼠标滚轮和触摸屏的按压)来显示它。
因此,问题是,在chartjs中,有没有办法通过chartjs-plugin-zoom向图表添加缩放事件处理程序(轮子和夹点事件)?谢谢。
发布于 2017-06-15 03:26:25
不幸的是,您不能将鼠标滚动事件添加到图表中,因为chartjs-plugin-zoom默认情况下会阻止这样做。
但是,您可以使用以下图表插件,它将为您完成工作……
plugins: [{
beforeDraw: function(c) {
var reset_zoom = document.getElementById("reset_zoom"); //reset button
var ticks = c.scales['x-axis-0'].ticks.length; //x-axis ticks array
var labels = c.data.labels.length; //labels array
if (ticks < labels) reset_zoom.hidden = false;
else reset_zoom.hidden = true;
}
}]添加此插件,然后添加图表选项。
基本上,chartjs- plugin -zoom的工作方式是,它在鼠标滚动上的ticks数组中删除/添加元素,上面的插件将检查这一点,从此以后相应地显示/隐藏rest缩放按钮。
xᴡᴏʀᴋɪɴɢᴇᴀᴍᴘʟᴇ⧩
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3]
}]
},
options: {
pan: {
enabled: true,
mode: 'x',
},
zoom: {
enabled: true,
mode: 'x',
}
},
plugins: [{
beforeDraw: function(c) {
var reset_zoom = document.getElementById("reset_zoom"); //reset button
var ticks = c.scales['x-axis-0'].ticks.length; //x-axis ticks array
var labels = c.data.labels.length; //labels array
if (ticks < labels) reset_zoom.hidden = false;
else reset_zoom.hidden = true;
}
}]
});
$('#reset_zoom').click(function() {
myChart.resetZoom();
});.myChartDiv {
max-width: 600px;
max-height: 400px;
}<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
<script src="https://npmcdn.com/Chart.Zoom.js@0.3.0/Chart.Zoom.min.js"></script>
<div class="myChartDiv">
<canvas id="myChart" width="600" height="400"></canvas>
</div>
<button id="reset_zoom" hidden>
Reset zoom
</button>
发布于 2020-04-10 16:57:16
另一种方法是使用缩放插件onZoomComplete事件。
首先,您应该将样式应用于缩放按钮,默认情况下会将其隐藏。
.reset-zoom {
display: none;
}和按钮
<button id="reset_zoom" class="reset-zoom">
Reset zoom
</button>然后在图表的缩放选项中添加
zoom: {
enabled: true,
mode: 'x',
onZoomComplete: function(myChart) {
$('#reset_zoom').show();
}
}为了在调用resetZoom后再次隐藏缩放按钮,您可以添加
$('#reset_zoom').click(function(){
myChart.resetZoom();
$('#reset_zoom').hide();
});因此,每次放大时都会显示“重置缩放”按钮,一旦重置缩放,它就会再次隐藏。
https://stackoverflow.com/questions/44551904
复制相似问题