javascript - 当 X 轴为时间时,堆积折线图无法正确显示

标签 javascript chart.js vue-chartjs

我尝试制作一个以时间为 X 轴的堆积折线图。 问题是“堆栈”部分似乎是在每个系列的开头累积的:

https://codesandbox.io/s/chartjs-idbzk?file=/src/index.js

我正在使用带有vue的chartjs。我使用“vue-chartjs”:“^ 3.5.0”,“chart.js”:“^ 2.9.3”,“vue”:“^ 2.6.11”,“vuetify”:“^ 2.2.11”

我做错了什么? 提前非常感谢

最佳答案

查看您的代码,我发现一些建议您更改的内容:

  • 使用 data.labels 属性定义 xAxes 值:
var myChart = new Chart(ctx, {
  type: "line",
  data: {
    labels: [
       new Date("2020-07-01T00:00:00.000Z").toLocaleDateString(),
       ...
       ...
       new Date("2020-07-31T00:00:00.000Z").toLocaleDateString()

您应该定义 xAxes 的从 minmax 值的所有标签。 如果您想格式化日期,您可以使用可用的 native 日期格式方法(如我用作示例的方法),甚至使用像 moment.js 这样的库来管理格式: Moment.js Documentation

现在取决于您想要的输出图表:

堆叠 y 轴

  • 您可以从 options.scales 中删除以下 xAxes block :
xAxes: [{
   type: 'time',
   time: {
      unit: 'day'
   },
   distribution: 'series',
   offset: true,
   ticks: {
      major: {
         enabled: true,
         fontStyle: 'bold'
      },
      source: 'data',
      autoSkip: true,
      autoSkipPadding: 75,
      maxRotation: 0,
      sampleSize: 100
   }
}]

那么你的输出应该是一个正确的yAxes堆叠折线图,如下所示:

Stacked Line Chart

注意:xAxes 仅显示两个值,因为我只在 data.labels 上添加了这些值,但正如我之前提到的,您应该添加那里的所有值。

堆叠 xAxes

  • 您可以从 option.scales 中删除以下 yAxes block :
yAxes: [{
   stacked: false
}]

那么你的输出应该是这样的图表:

enter image description here

关于javascript - 当 X 轴为时间时,堆积折线图无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63199077/

相关文章:

javascript - 使用 Date.UTC 转换时返回日期时间的正确月份

javascript - 图表最小值 (Chart.js)

javascript - x 轴的 Chart.js 标签在图表区域中产生无用空间

javascript - 如何在 AngularJS 中的另一个文件中存储 Chart.js 图表选项

vue.js - 在 Nuxt (3.0.0-rc.4) 中使用 vue-chartjs (4.1.1) 无法构建 |如何在 nuxt 项目中使用简单的饼图?

javascript - 在 HTML5 canvas 准备就绪时调用函数

javascript - 我想在使用 javascript 正则表达式时忽略方括号

javascript - 如何解决需要适当加载器的 npm 错误?

vue.js - VueJs,Vue-chartjs - 变异 Prop

javascript - 在 React Native 中获取 TextInput 值和复选框状态