ChartJS 为什么x-asis上的标签显示不好?

wf82jlnq  于 2023-02-19  发布在  Chart.js
关注(0)|答案(1)|浏览(134)

下面是我的div与画布的折线图:

<div
        x-data="{
     lineChartLabels: @entangle('lineChartLabels'),
     lineChartData: @entangle('lineChartData'),
     init() {
         const labels = `${this.lineChartLabels}`;
         const data = {
             labels: labels,
             datasets: [{
                 backgroundColor: 'lightblue',
                 data: this.lineChartData,
                 fill: true,
                 label: `{{__('site.report.values')}}`,
             }]
         };
         const config = {
             type: 'line',
             data: data,
             options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    y: {
                      ticks: {
                        callback: function (value) {
                          const date = new Date(Number(value) * 1000);
                          return date.toISOString().substring(11,23);
                        }
                      }
                    }
                },
                plugins: {
                    tooltip: {
                      callbacks: {
                        label: function (context) {
                          const date = new Date(Number(context.formattedValue) * 1000);
                          return date.toISOString().substring(11,23);
                        }
                      }
                   }
                }
             }
         };
         const myChart = new Chart(
             this.$refs.canvas,
             config
         );
         Livewire.on('updateTheChart', () => {
             myChart.destroy();
             myChart.data.datasets[0].data = this.lineChartData;
             myChart.data.labels = this.lineChartLabels;
             myChart.update();
         })
     }
 }">
        <canvas id="myChart" x-ref="canvas" style="height: 33vh;width: 50vw;"></canvas>
    </div>

下面是一个值的示例(表示秒):

[49.66,47.26,46.88,49.81]

对于表示日期的x轴:

["04-Feb-17","06-May-17","28-Oct-17","20-Dec-17"]

但当它渲染时,显示如下:

有人能告诉我为什么chartjs不能正确显示x-asis以及如何修复它吗?

eqoofvh9

eqoofvh91#

问题是这一行const labels =${this.lineChartLabels};你正在创建一个脚本,你需要的是数组,所以换句话说:const labels = this.lineChartLabels;删除字符串插值。

    • 免责声明:**我只是猜测,因为我不熟悉laravel-livewirealpine.js,但在我看来,这行代码似乎是罪魁祸首。
    • 这里是两个不同的版本,并排:**
const labels = ["04-Feb-17","06-May-17","28-Oct-17","20-Dec-17"];
 const data = {
     labels: labels,
     datasets: [{
         backgroundColor: 'lightblue',
         data:  [49.66,47.26,46.88,49.81],
         fill: true,
         label: `Correct Version`,
     }]
 };

const config = {
   type: 'line',
   data: data,
   options: {
      responsive: true,
      maintainAspectRatio: false,
      scales: {
          y: {
            ticks: {
              callback: function (value) {
                const date = new Date(Number(value) * 1000);
                return date.toISOString().substring(11,23);
              }
            }
          }
      },
      plugins: {
          tooltip: {
            callbacks: {
              label: function (context) {
                const date = new Date(Number(context.formattedValue) * 1000);
                return date.toISOString().substring(11,23);
              }
            }
         }
      }
   }
};

new Chart(
    document.getElementById('chart'),
    config
);

config.data.labels = `${["04-Feb-17","06-May-17","28-Oct-17","20-Dec-17"]}`;
config.data.datasets[0].label = `Incorrect Version`;

let chart2 = new Chart(
    document.getElementById('chart2'),
    config
);
<script src="//cdn.jsdelivr.net/npm/chart.js"></script>  

<div class="chart" style="float:left;height:184px; width:300px;font-family: Arial">
    <canvas id="chart" ></canvas>
</div>
<div class="chart" style="float:left;height:184px; width:300px;font-family: Arial">
    <canvas id="chart2" ></canvas>
</div>

相关问题