我使用Chart.js 2.1.3版制作了一个折线图。
var canvas = $('#gold_chart').get(0);
var ctx = canvas.getContext('2d');
var fillPatternGold = ctx.createLinearGradient(0, 0, 0, canvas.height);
fillPatternGold.addColorStop(0, '#fdca55');
fillPatternGold.addColorStop(1, '#ffffff');
var goldChart = new Chart(ctx, {
type: 'line',
animation: false,
data: {
labels: dates,
datasets: [{
label: '',
data: prices,
pointRadius: 0,
borderWidth: 1,
borderColor: '#a97f35',
backgroundColor: fillPatternGold
}]
},
title: {
position: 'bottom',
text: '\u7F8E\u5143 / \u76CE\u53F8'
},
options: {
legend: {
display: false
},
tooltips: {
callback: function(tooltipItem) {
return tooltipItem.yLabel;
}
},
scales: {
xAxes: [{
ticks: {
maxTicksLimit: 8
}
}]
}
}
});
输出如下所示:
如您所见,我通过maxTicksLimit
将最大刻度数限制为8。然而,分布并不均匀。如何使刻度均匀分布?
p.s.数据集中总有289条记录,每5分钟记录一次数据,prices
变量示例值为:
[
{"14:10", 1280.3},
{"14:15", 1280.25},
{"14:20", 1282.85}
]
我尝试了maxTicksLimit
的不同值,结果仍然分布不均匀。
3条答案
按热度按时间vs91vp4v1#
js使用整数
skipRatio
(计算要跳过的标签数)。预览
脚本
小提琴-http://jsfiddle.net/bh63pe1v/
bkhjykvo2#
一个更简单的解决方案是在
maxTicksLimit
中包含一个小数,直到Chart JS贡献者永久修复了这个问题。例如:
会在最后产生巨大的缺口。
并不会在最后产生巨大的落差。
根据您要将maxTicksLimit设置为什么,您需要使用不同的小数来查看哪一个产生最佳结果。
anhgbhbe3#
只需执行以下操作:
10 =分笔成交点的数量
5 =将分笔成交点值四舍五入到最接近的5 -所有y值将平均递增
类似的方法也适用于xAxes。