如何在PHP中使用charts-js-zoom插件



我正在使用一个有超过200个数据的数据库。我只需要显示最后的5个数据,但他们可以在图表中滚动。

这些是我使用的脚本

<!-- JQUERY -->
<script src="<?= base_url() ?>assets/js/jquery.js"></script>
<script src="<?= base_url()?>assets/js/jquery/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/hammerjs@2.0.8"></script>
<script src="https://cdn.jsdelivr.net/npm/hammerjs@2.0.8/hammer.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js@3.8.0/dist/chart.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-zoom@1.2.1/dist/chartjs-plugin-zoom.min.js"></script>

这是给我数据的函数

function datagrafico(base_url){

$.ajax({
url: base_url + "index.php/Admin/getDataDias",
type:"POST",
dataType:"json",
success:function(data){
var dias = new Array();
var montos = new Array();
$.each(data,function(key, value){
dias.push(value.fecha_actualizacion);
valor = Number(value.monto);
montos.push(valor);
});
grafica2(dias,montos);
}
});
}

这里我画了一个图形

function grafica2(dias, montos) {

const ctx = document.getElementById('myChart').getContext('2d');
const myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: dias,
datasets: [{
label: 'Monto',
data: montos,
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255, 99, 132, 1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1,

}]
},
options: {
scales: {
y: {
beginAtZero: true
},
plugins: {
zoom: {
pan: {
enabled: true,
mode: 'xy'
},
zoom: {
enabled: true,
mode: 'xy'
}
},
}
}
}
});
}

不适合我的选项是当用鼠标滚轮放大图形或从手机

这是因为您将缩放插件的配置放在了错误的空间。这些选项需要在options.plugins.zoom命名空间中配置,而您将它们放置在options.scales.plugins.zoom命名空间中。

将options对象更改为this将解决问题:

options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
},
plugins: {
zoom: {
pan: {
enabled: true,
mode: 'xy'
},
zoom: {
enabled: true,
mode: 'xy'
}
},
}
}

缩放插件也使用hammer.js识别手势。因此,对于移动使用,您可能还需要导入hammer.js

<script src="https://cdn.jsdelivr.net/npm/hammerjs@2.0.8"></script>

作为最后一部分,你的规模配置是错误的,你在使用V2时使用V3语法,我已经为你更新了

最新更新