javascript - 我想在 Chart.js 中显示一个折线栏,其中的数据自动从 mockapi 获取

标签 javascript arrays api chart.js

我在chart.js 中处理第二个图表时遇到了困难,我找不到问题的答案...我有一个包含日期和金额的数组。我想将这些值从数组自动放入图表中。我尝试过简单的方法,但它不起作用...... Months 是一个数组,其中包含收到金额的日期, myData 是一个包含捐赠金额的数组。 这就是代码:

let DonationChart2 = new Chart(myChart2, {
    type: 'bar',
    data: {
        labels: [Months],
        datasets: [{
            data: [myData]

        }]
    },
})

月份是可见的,但遗憾的是不是作为单独的标签 - 仅在 1 列中...我希望将它们视为每个金额下的底部描述...仅当我写入 myData[此处为位置时,捐赠金额才可见在数组中],否则为空....我假设我分配了错误的这些值..也许我应该以某种方式指示将每个值显示为单独的?但我不知道怎么...这是我使用 Chart.js 的第一天...因此出现了这些问题...

最佳答案

使用您的 MonthsmyData 变量,您将它们包装在另一个数组中(变量名称周围的 [])。因此,图表只看到 1 个标签和 1 个数据点,这不是您想要的。

我删除了外部的[],以便只有您的数组被设置为配置上的标签和数据。

我预计的另一件事是,您将处理长标签名称(例如Mon Dec 17 2018 16:36:04 GMT+0100(中欧标准时间)),这看起来不会在你的图表上很好。

为了解决这个问题,我通过创建一个新的日期对象并使用 toLocaleString 来缩短日期。在上面。我还读到,如果标签表示为数组而不是单个字符串,那么每个部分都将位于新行上。

这就是 .split(",")可以帮助。例如,toLocaleString() 返回字符串“12/20/2018, 12:00:00 PM”,因此 split 函数会在存在逗号并将结果插入数组。生成的数组的索引 0 为 12/20/2018,索引 1 为 12:00:00 PM,因此每个数组都将在图表中独占一行。

const myData = ["60", "80", "5", "100", "60"];
const months = ["Mon Dec 17 2018 16:36:04 GMT+0100 (Central European Standard Time)", "Mon Dec 17 2018 17:36:34 GMT+0100 (Central European Standard Time)", "Thu Dec 20 2018 09:34:18 GMT+0100 (Central European Standard Time)", "Thu Dec 20 2018 09:37:16 GMT+0100 (Central European Standard Time)", "Thu Dec 20 2018 12:41:51 GMT+0100 (Central European Standard Time)"];

let newMonths = months.map(function(date){
  return new Date(date).toLocaleString().split(",");
});

let myChart2 = document.getElementById("myChart2").getContext('2d');
let DonationChart2 = new Chart(myChart2, {
  type: 'bar',
  data: {
    labels: newMonths,
    datasets: [{
      label: 'Amount',
      data: myData
    }]
  },
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.bundle.min.js"></script>

<canvas id="myChart2" width="1000" height="900"></canvas>

关于javascript - 我想在 Chart.js 中显示一个折线栏,其中的数据自动从 mockapi 获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54096729/

相关文章:

javascript - string.indexOf(searchValue[, fromIndex]) 的语法在方括号内显示逗号?

javascript - 当 redux 状态更新时在组件上调用 forceUpdate()

javascript - 使用鼠标滚轮和按钮循环水平滚动两个 div

java - 打印数组条目时出现空指针异常

javascript - Facebook 视频播放器 API

azure - 使用函数中的值设置 AzApiManagementPolicy

javascript - 通过单击按钮将 JSON var 加载到现有的 HTML 表中

ruby - 将数字分配给数组中的字母

c - 具有给定元素数量的动态创建的数组

ruby-on-rails - 在 Rails 应用中缓存对外部 API 的调用