Javascript Chart.js:将对象而不是int值作为数据传递
是否可以传递对象数组而不是整数数组?以下代码可以工作,但会产生一条平坦的零线:Javascript Chart.js:将对象而不是int值作为数据传递,javascript,charts,chart.js,Javascript,Charts,Chart.js,是否可以传递对象数组而不是整数数组?以下代码可以工作,但会产生一条平坦的零线: var ctx = document.getElementById("a").getContext("2d"); var data = { labels: ["Fri", "Sat", "Sun"], datasets: [{ label: "Chart B", fillColor: "rgba(220,220,220,0.2)", strokeColor: "rgba(150
var ctx = document.getElementById("a").getContext("2d");
var data = {
labels: ["Fri", "Sat", "Sun"],
datasets: [{
label: "Chart B",
fillColor: "rgba(220,220,220,0.2)",
strokeColor: "rgba(150,150,150,1)",
pointColor: "rgba(150,150,150,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,220,220,1)",
data: [{
y: 48,
name: "Value one",
date: "2015-04-30"
}, {
y: 40,
name: "Value two",
date: "2016-05-30"
}, {
y: 19,
name: "Value three",
date: "2016-06-30"
} ]
}]
};
var Chart = new Chart(ctx).Line(data);
简言之,我认为你的例子应该有效。关键是对图表中的y值使用
y
,并将任意属性添加到对象中
看起来这就是你正在做的,但你已经报告它不起作用了。。。不过,这对我很管用
更长的答案 根据,数据可以是一个编号[]:
data: [20, 10]
data: [{
x: 10,
y: 20
}, {
x: 15,
y: 10
}]
…但它也可以是点[]
:
data: [20, 10]
data: [{
x: 10,
y: 20
}, {
x: 15,
y: 10
}]
这旨在用于人口稀少的数据集。通过实验,我发现可以省略x
属性,只需指定y
属性。将一如既往地推断x
值
您还可以添加可以从标签回调访问的任何其他任意属性。所以,你可能会得到这样的结果:
data: [{
y: 20,
myProperty: "Something"
}, {
y: 10,
myProperty: "Something Else"
}]
我可以确认,answer@rinogo提供了最新版本的作品。您可以将自定义特性添加到数据集中,然后在工具提示或其他地方使用它们 首先将数据添加到数据集。在我的情况下,我只有一套,所以我只是推点
chartData.datasets[0].data.push({
y: groupedBooking.distinctCount,
distinctUsers: distinctUsers
});
。。。最后,使用chartOptions覆盖回调:
options: {
tooltips: {
callbacks: {
label(tooltipItem, data) {
console.log(data);
return data.datasets[0].data[tooltipItem.index].distinctUsers;
}
}
}
}
如果您碰巧有多个数据集,那么您也可以从工具提示中获得datasetIndex。。。因此,为了确认,可以从数据点中省略X,并且客户属性保留在对象中。查看图表的创建
var chart=new chart(ctx).Line(数据)代码>,看起来我使用的是旧版本。需要先用较新的版本进行测试。您试用过最新的版本吗?在你的项目中尝试一下。如果这不是一个选项,也许可以尝试创建一个代码笔示例。