【问题标题】:How to dynamically change the x-axis in ApexCharts to dates?如何将 ApexCharts 中的 x 轴动态更改为日期?
【发布时间】:2020-07-25 00:11:13
【问题描述】:

如何将 x 轴的最大值动态更改为今天的日期?以及 15 周前的最小值?如何更改 x 轴以动态执行此操作?

chart:{
    animations:{
        enabled: false,
    },
    toolbar: {
        show: false,
    },
    height:450,
    width: '100%',
    type: 'bar',
    background:'#ffffff',
    forColor: '#333'
},
series:[{
    name:'Calories',
    data:[80,81,83,85,82,89,90]
        }],
dataLabels:{
    enabled:false
},
markers: {
    size:0,
},
xaxis:{
    type: 'datetime',
      categories: [
         sevenWeeksBack,date
      ],
    // datetimeUTC:true,
    // datetimeFormatter:{
    //     year: 'yyyy',
    //     month:"Mmm",
    //     day: "dd"
    // },
    //   labels:{
    //       show:true,
    //   },
    //min: new Date(sevenWeeksBack).getTime(),
     //max: new Date().getTime(),
     //range: new Date(sevenWeeksBack).getTime(),
    // min:new Date(Date.now()-604800000),
     // tickAmount: 'dataPoints' 
},
yaxis:[{
        title:{
            text: ''
        }
}],
plotOptions:{
    bar:{
    horizontal: false
    }
},
fill:{
    colors: ['#33e400']
},
title:{
    text: 'Food Calories',
    align: 'left',
    margin: 20,
    offsetY: 20,
    style:{
        fontSize: '25px'
    }
},
tooltip: {
    enabled:false,
    x: {
        format: 'dd MMM yyyy'
      }
  },
  states: {
    hover: {
        filter: {
            type: 'none',
        }
    }
}

};

传入的数据将包含长达 90 天的数据(90 个值)。 如何显示 x 轴来做日期?

此图表最多可显示 90 天。我曾尝试使用 momentjs 动态更改最大值和最小值,但没有成功

【问题讨论】:

    标签: javascript arrays json date apexcharts


    【解决方案1】:

    我不会将type: 'datetime'categories 混合使用,如果您使用categories,您可能最好使用type: 'category'。也就是说,我相信您可以采取两种方法:

    1. 如果您已经格式化了日期并将它们放入类别数组中并且,您就会知道您将始终收到 90 天的值 - 那么它将按照您的预期进行格式化。这种方法有一个很好的例子here,在docs 的“1). Single values”中提到。 (这种方法目前不适用于您,因为据我所知,您的 series.data 中只有 7 个值。)

    2. 使用type: 'datetime' 并删除类别。这将允许您按照您的尝试使用x.minx.max 进行格式化。这里需要注意的是,在传递到 ApexCharts 时,您需要在每个数据点中包含时间戳,因此您可能需要进行一些预处理。这在docs 中称为“3). 时间线系列”。我整理了一个codepen 展示了这种方法,同时使用了两种时间线系列格式。

    【讨论】:

    • 嗨,Oscar,感谢您对这个问题的一些了解,我对实施的许多疑问已经得到澄清。关于正在显示的数据。我有一个传入数组,可以保存多达 90 天的数据(即过去 90 天内每天消耗的卡路里)。由于很多“要显示的信息”是用户输入,我不能保证 90 个数据点,但最多 90 个,至少 0 个。解决这个问题的方法是什么?传入的数组每天都会更新。截至目前,我正在使用一个数组,该数组保存自今天以来的最后 13 周,并且每天都在更新。谢谢!
    • 在不偏离原始问题的情况下,'datetime' 方法听起来更合适。在将这些数据点传递给 ApexCharts 并知道哪个数据点对应于哪个日期之前,您需要找出一种处理这些数据点的方法。稍微偏离主题-但也许Object 会比数组更好,或者找到填充数组的方法?但我会让你决定。
    猜你喜欢
    • 2017-07-26
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多