如果标题有误导性,我很抱歉,我会尽量弄清楚我的意思。
我有这样一个对象列表:
[
{ 'a': 10, 'b': 5, 'c': 15},
{ 'a': 12, 'b': 3, 'c': 15},
{ 'a': 14, 'b': 6, 'c': 15},
{ 'a': 8, 'b': 2, 'c': 15},
]
每个对象表示每条线随时间变化的y值 a, b, c
. 通过阅读文档,我了解到要创建多行图表,我需要以下内容:
{
label: 'a',
data: [10, 12, 14, 8],
},
{
label: 'b',
data: [5, 3, 6, 2],
},
{
label: 'c',
data: [15, 15, 15, 15],
}
我是否必须将每个对象“解包”到列表中,或者我可以做其他事情?
4条答案
按热度按时间fnvucqvd1#
如果还提供了数据对象的x值,则只需将数据数组按原样传递给数据字段,并指定每个数据集chart.js获取y值所需的属性,如下所示:
您可以在此处阅读有关chart.js数据结构的更多信息:https://www.chartjs.org/docs/master/general/data-structures.html#data-结构
cbeh67ev2#
1) 我想这是一种分离每个元素并返回数组的简单方法
然后,按如下方式调用数组:
2) 一种更复杂的返回对象的方法,可以直接附加到图表中
编辑:第二个答案仅适用于矩形对象,如您在示例中放置的矩形对象。如果对象在每个索引中具有不同的长度,它将无法工作。例子:
这会管用的
这不起作用(“d”元素不会附加到图表中)
祝你好运
8e2ybdfx3#
您可能需要将原始数据转换为您概述的兼容数据结构。
可以使用二维缩减器缩减数据。创建组后,将它们Map为条目。这将处理数据中未定义的键值对或孔。例如,如果第二个项目没有
b
值,然后是b
小组将有一个null
作为索引1
.beq87vna4#
是的,您必须将数据分组如下:
然后您可以按照这里的指示操作