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