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

11dmarpk  于 2022-11-23  发布在  Chart.js
关注(0)|答案(1)|浏览(161)

我正在使用一个有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'
                        }
                    },
                }
            }
        }
    });
}

这个选项对我不起作用是当用鼠标滚轮或从手机放大图形时

ifsvaxew

ifsvaxew1#

这是因为您将缩放插件的配置放在了错误的位置。选项需要在options.plugins.zoom名称空间中配置,而您将它们放在了options.scales.plugins.zoom名称空间中。
将选项对象更改为以下对象将解决此问题:

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

zoom插件也使用hammer.js来识别手势。

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

最后,您的扩展配置错误,您在使用V2时使用了V3语法,我也为您更新了该配置

相关问题