Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在JS中对时间线图中的标签进行分组_Javascript_Jquery_Arrays_Sorting_D3.js - Fatal编程技术网

Javascript 如何在JS中对时间线图中的标签进行分组

Javascript 如何在JS中对时间线图中的标签进行分组,javascript,jquery,arrays,sorting,d3.js,Javascript,Jquery,Arrays,Sorting,D3.js,我真的需要一些帮助。我正在尝试制作自己的时间线图(与谷歌时间线相同)。它已经可以工作了,但我不知道如何创建一个按类型分组标签的函数。我硬编码了这个函数,它适用于3组/类型。我需要的是创建一个通用函数,将所有标签分组,即使有100个标签第二个问题是,如果a.endTime>=b.startTime,则第二组和第三组中的数据不在同一行中。我将非常感谢您的帮助 这是我的密码: var w=800; var h=400; var svg=d3 .select(“.svg”) .append(“svg”


我真的需要一些帮助。我正在尝试制作自己的时间线图(与谷歌时间线相同)。它已经可以工作了,但我不知道如何创建一个按类型分组标签的函数。我硬编码了这个函数,它适用于3组/类型。我需要的是创建一个通用函数,将所有标签分组,即使有100个标签
第二个问题是,如果a.endTime>=b.startTime,则第二组和第三组中的数据不在同一行中。我将非常感谢您的帮助
这是我的密码:

var w=800;
var h=400;
var svg=d3
.select(“.svg”)
.append(“svg”)
.attr(“宽度”,w)
.attr(“高度”,h)
.attr(“类”、“svg”);
//主阵列
可变项目=[{
任务:“概念化”,
类型:“开发”,
开始时间:“2013-1-28”//年/月/日
结束时间:“2013-2-1”,
编号:2,
},
{
任务:“草图”,
类型:“开发”,
开始时间:“2013-2-6”,
结束时间:“2013-2-9”,
编号:2,
},
{
任务:“颜色配置文件”,
类型:“开发”,
开始时间:“2013-2-6”,
结束时间:“2013-2-9”,
编号:2,
},
{
任务:“HTML”,
键入:“编码”,
开始时间:“2013-2-2”,
结束时间:“2013-2-6”,
编号:1,
},
{
任务:“编写JS”,
键入:“编码”,
开始时间:“2013-2-1”,
结束时间:“2013-2-6”,
编号:1,
},
{
任务:“吃”,
类型:“庆祝”,
开始时间:“2013-2-8”,
结束时间:“2013-2-13”,
编号:0,
},
{
任务:“哭泣”,
类型:“庆祝”,
开始时间:“2013-2-13”,
结束时间:“2013-2-16”,
编号:0,
},
];
//数组排序
项目排序((a,b)=>{
返回(
a、 number-b.number | | Date.parse(b.startTime)-Date.parse(a.startTime)
);
});
//这里创建新数组并为每个标签添加索引
var taskArray=[];
var堆栈=[];
项目.地图((e)=>{
var lane=stack.findIndex(
(s) =>s.endTime
d、 类型==“庆祝”?d.yIndex+1:null
);
//这里是基于索引和类型的硬编码分组
var nRows2=d3.max(任务数组,(d)=>
d、 类型==“开发”?(d.yIndex=d.yIndex+1+nRows):空
);
var dateFormat=d3.time.format(“%Y-%m-%d”);
var时间刻度=d3.0秒
.比例尺()
.域名([
d3.min(任务数组,函数(d){
returndateformat.parse(d.startTime);
}),
d3.max(任务阵列,函数(d){
returndateformat.parse(d.endTime);
}),
])
.范围([0,w-150]);
var categories=新数组();
对于(var i=0;i