如何在Chart js中为数据集添加偏移量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Chart js中为数据集添加偏移量相关的知识,希望对你有一定的参考价值。
我能够为X标签添加偏移量,但我想为数据集中的所有点添加偏移量。可能吗?
这是我正在使用的代码:
var myChart = new Chart.Line(ctx, {
type: 'line',
data: {
labels: ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC", ""],
datasets: [{
data: [5, 10.5, 18.2, 33.9, 121.2, 184.9, 179.9, 196.1, 158.3, 166.3, 66.4, 20.6, null],
pointLabelFontSize : 4,
borderWidth: 2,
fill: false,
lineTension: .3,
borderColor: "#f37029",
borderCapStyle: 'round',
borderDash: [],
borderDashOffset: 0.0,
borderJoinStyle: 'bevel',
pointBorderColor: "#f37029",
pointBackgroundColor: "#f37029",
pointBorderWidth: 1,
pointHoverRadius: 4,
pointHoverBackgroundColor: "rgba(220,220,220,1)",
pointHoverBorderColor: "rgba(220,220,220,1)",
pointHoverBorderWidth: 2,
pointRadius: 4,
pointHitRadius: 10,
spanGaps: false,
}]
},
options: {
scales: {
xAxes: [{
gridLines: {
offsetGridLines: true,
display: false,
borderDash: [6, 2],
tickMarkLength:5
},
ticks: {
fontSize: 8,
labelOffset: 10,
maxRotation: 0
}}],
yAxes: [{
gridLines: {
display:false
},
ticks: {
beginAtZero: true,
max: 200,
min: 0,
stepSize: 20,
fontSize: 8
}
}]
},
legend: {
display: false
},
responsive: false,
maintainAspectRatio: true
}
});
我想将偏移量应用于所有点,在图像中我刚刚向JAN / DEC添加了一个箭头,但我想将它应用于所有这些点。
我尝试添加一个空数据,问题是我不想显示第一个虚线网格。
有任何想法吗?提前致谢。
答案
您可以使用Chart.js插件实现此目的。它们让您处理图表创建过程中触发的特定事件(beforeInit
,afterUpdate
,afterDraw
......),并且易于实现:
Chart.pluginService.register({
afterUpdate: function(chart) {
// This will be triggered after every update of the chart
}
});
现在,您只需循环遍历数据集数据模型(用于绘制图表的属性)并添加所需的偏移量:
Chart.pluginService.register({
afterUpdate: function(chart) {
// We get the dataset and set the offset here
var dataset = chart.config.data.datasets[0];
var offset = 20;
// For every data in the dataset ...
for (var i = 0; i < dataset._meta[0].data.length; i++) {
// We get the model linked to this data
var model = dataset._meta[0].data[i]._model;
// And add the offset to the `x` property
model.x += offset;
// .. and also to these two properties
// to make the bezier curve fits the new graph
model.controlPointNextX += offset;
model.controlPointPreviousX += offset;
}
}
});
你可以看到你的例子工作on this jsFiddle,结果如下:
另一答案
退房 - http://www.chartjs.org/docs/latest/axes/cartesian/。
在“通用配置”一章中,有一个布尔属性offset
。默认值为false
(bar
图表除外)
如果为true,则向两个边添加额外的空间,并缩放轴以适合图表区域。默认情况下,条形图中设置为true。
所以你可以把它设置为true,它应该工作。
以上是关于如何在Chart js中为数据集添加偏移量的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中为表格视图和滚动视图设置偏移量,以便两者一起滚动
JQuery Plugin (Hover-Caption) 在 Internet Explorer 中为图像添加偏移量(所有版本)