Javascript Charts.js动态刻度

Javascript Charts.js动态刻度,javascript,jquery,chart.js,Javascript,Jquery,Chart.js,我使用Charts.js并使用它显示不同时间段的数据,时间段基于用户输入。我在x轴上显示日期标签,但有时这些标签的范围可能超过0-12个月。我想动态地改变它,这样如果日期范围超过2个月,那么标签将显示每月?此外,该范围内的数据将按月分组。就像使用谷歌分析一样 下面是我用来生成图形的Javascript <script> var ctx = document.getElementById('directtraffic').getContext('2d');

我使用Charts.js并使用它显示不同时间段的数据,时间段基于用户输入。我在x轴上显示日期标签,但有时这些标签的范围可能超过0-12个月。我想动态地改变它,这样如果日期范围超过2个月,那么标签将显示每月?此外,该范围内的数据将按月分组。就像使用谷歌分析一样

下面是我用来生成图形的Javascript

<script>
            var ctx = document.getElementById('directtraffic').getContext('2d');
            var directtraffic = new Chart(ctx, {
                type: 'line',
                data: {
                    labels: ["2017-05-01","2017-05-02","2017-05-03","2017-05-04","2017-05-05","2017-05-06","2017-05-07","2017-05-08","2017-05-09","2017-05-10","2017-05-11","2017-05-12","2017-05-13","2017-05-14","2017-05-15","2017-05-16","2017-05-17","2017-05-18","2017-05-19","2017-05-20","2017-05-21","2017-05-22","2017-05-23","2017-05-24","2017-05-25","2017-05-26","2017-05-27","2017-05-28","2017-05-29","2017-05-30","2017-05-31"],
                    datasets: [{
            label: 'Sessions (01/05/2017 - 31/05/2017)',
            data: ["169","278","287","223","252","129","97","246","266","285","262","203","107","121","319","261","336","291","227","110","94","237","263","259","239","172","79","77","111","257","233"],
            responsive: true,
            tooltips: {
                mode: 'index',
                intersect: false,
            },
            legend: {
                display: false,
            },
            hover: {
                mode: 'nearest',
                intersect: true
            },
            backgroundColor: '#5cbae6',
            borderColor: '#5cbae6',
            fill: false
        },{
            label: 'Sessions (01/04/2017 - 30/04/2017)',
            data: ["103","100","261","280","258","250","197","70","94","248","206","239","198","113","113","108","99","248","245","250","225","107","86","244","245","268","299","223","98","119"],
            responsive: true,
            tooltips: {
                mode: 'index',
                intersect: false,
            },
            legend: {
                display: false,
            },
            hover: {
                mode: 'nearest',
                intersect: true
            },
            backgroundColor: '#b6d957',
            borderColor: '#b6d957',
            fill: false
        }]
                },
                options: {
                    animation: false,
                    scales: {
                        xAxes: [{
                            gridLines: {
                                display:false
                            }
                        }],
                        yAxes: [{
                            gridLines: {
                                display:false
                            }  
                        }]
                    }
                }
            });
            </script>

var ctx=document.getElementById('directtraffic').getContext('2d');
var directtraffic=新图表(ctx{
键入:“行”,
数据:{
标签:[“2017-05-01”、“2017-05-02”、“2017-05-03”、“2017-05-04”、“2017-05-05”、“2017-05-06”、“2017-05-07”、“2017-05-08”、“2017-05-09”、“2017-05-10”、“2017-05-11”、“2017-05-12”、“2017-05-13”、“2017-05-14”、“2017-05-15”、“2017-05-16”、“2017-05-17”、“2017-05-18”、“2017-05-19”、“2017-05-20”、“2017-05-21”、“2017-05-22”、“2017-05-23”、“2017-05-05-24”、“2017-05-05-26”,"2017-05-27","2017-05-28","2017-05-29","2017-05-30","2017-05-31"],
数据集:[{
标签:“会议(2017年5月1日-2017年5月31日)”,
数据:[“169”,“278”,“287”,“223”,“252”,“129”,“97”,“246”,“266”,“285”,“262”,“203”,“107”,“121”,“319”,“261”,“336”,“291”,“227”,“110”,“94”,“237”,“263”,“259”,“239”,“172”,“79”,“77”,“111”,“257”,“233”],
回答:是的,
工具提示:{
模式:“索引”,
交集:错,
},
图例:{
显示:假,
},
悬停:{
模式:“最近的”,
交集:对
},
背景颜色:“#5cbae6”,
边框颜色:“#5cbae6”,
填充:假
},{
标签:“会议(2017年4月1日-2017年4月30日)”,
数据:[“103”,“100”,“261”,“280”,“258”,“250”,“197”,“70”,“94”,“248”,“206”,“239”,“198”,“113”,“113”,“108”,“99”,“248”,“245”,“250”,“225”,“107”,“86”,“244”,“245”,“268”,“299”,“223”,“98”,“119”],
回答:是的,
工具提示:{
模式:“索引”,
交集:错,
},
图例:{
显示:假,
},
悬停:{
模式:“最近的”,
交集:对
},
背景颜色:“#b6d957”,
边框颜色:'#b6d957',
填充:假
}]
},
选项:{
动画:错,
比例:{
xAxes:[{
网格线:{
显示:假
}
}],
雅克斯:[{
网格线:{
显示:假
}  
}]
}
}
});

如果我正确理解了您的问题,您需要在scales和xAxes下添加刻度。在刻度中,您可以指定步长。步长是每次递增的量。在步长中,您可以调用确定所需步长的函数。因此,您可以创建一个名为CalculateStepsize的函数如果超过2个月,则传入日期,然后返回步长1。下面是一些伪代码

ticks: {
        stepSize: calcualteStepSize(data)
       }

function calcualteStepSize(data) {
  if data range is greater than 2 months
    return 1 
  else return some other calculation
}