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(数据),看起来我使用的是旧版本。需要先用较新的版本进行测试。您试用过最新的版本吗?在你的项目中尝试一下。如果这不是一个选项,也许可以尝试创建一个代码笔示例。