Javascript D3.js趋势线x轴日期
想要建立一个类似于什么的趋势线 数据集中有一个不同点:在第一列,我的数据代表年份(2000),迈克的数据代表日期(2007年4月24日) 我得到的结果如下: 目标:我希望x轴显示年份 问题:出于某种奇怪的原因,它显示了一些其他数字 行动: .index.html:Javascript D3.js趋势线x轴日期,javascript,d3.js,Javascript,D3.js,想要建立一个类似于什么的趋势线 数据集中有一个不同点:在第一列,我的数据代表年份(2000),迈克的数据代表日期(2007年4月24日) 我得到的结果如下: 目标:我希望x轴显示年份 问题:出于某种奇怪的原因,它显示了一些其他数字 行动: .index.html: 我能做些什么来解决这个问题?只要更改时间解析函数(您应该使用大写的Y): 工作演示(我硬编码tsv数据以简化示例): var dataAsTsv=`ano总计 2000 368 2001 365 2002 357 2003 312
我能做些什么来解决这个问题?只要更改时间解析函数(您应该使用大写的
Y
):
工作演示(我硬编码tsv数据以简化示例):
var dataAsTsv=`ano总计
2000 368
2001 365
2002 357
2003 312
2004 306
2005 300
2006 253
2007 276
2008 231
2009 217
2010 208
2011 196
2012 175
2013 160`;
var svg=d3。选择(“svg”),
边距={顶部:20,右侧:20,底部:30,左侧:50},
宽度=+svg.attr(“宽度”)-margin.left-margin.right,
高度=+svg.attr(“高度”)-margin.top-margin.bottom,
g=svg.append(“g”).attr(“transform”、“translate”(+margin.left+)、“+margin.top+”);
var parseTime=d3.timeParse(“%Y”);
var x=d3.scaleTime()
.rangeRound([0,宽度]);
变量y=d3.scaleLinear()
.rangeRound([高度,0]);
var line=d3.line()
.x(函数(d){返回x(d.ano);})
.y(函数(d){返回y(d.total);});
函数processData(d){
d、 ano=解析时间(d.ano);
d、 总计=+d.总计;
返回d;
};
var数据=d3.tsvParse(dataAsTsv,processData);
x、 域(d3.extent(数据,函数(d){return d.ano;}));
y、 域(d3.extent(数据,函数(d){返回d.total;}));
g、 附加(“g”)
.attr(“变换”、“平移(0)”、“高度+”)
.call(d3.axisBottom(x))
.select(“.domain”)
.remove();
g、 附加(“g”)
.呼叫(d3.左(y))
.append(“文本”)
.attr(“填充”、“千”)
.attr(“变换”、“旋转(-90)”)
.attr(“y”,6)
.attr(“dy”,“0.71em”)
.attr(“文本锚定”、“结束”)
.文本(“死亡人数”);
g、 附加(“路径”)
.基准(数据)
.attr(“填充”、“无”)
.attr(“笔划”、“钢蓝”)
.attr(“笔划线条连接”、“圆形”)
.attr(“笔划线头”、“圆形”)
.attr(“笔划宽度”,1.5)
.attr(“d”,行)代码>
<!DOCTYPE html>
<title>Plotting a Trendline with D3.js</title>
<svg width="960" height="500"></svg>
<script src="d3.v4.min.js"></script>
<script>
var svg = d3.select("svg"),
margin = {top: 20, right: 20, bottom: 30, left: 50},
width = +svg.attr("width") - margin.left - margin.right,
height = +svg.attr("height") - margin.top - margin.bottom,
g = svg.append("g").attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var parseTime = d3.timeParse("%y");
var x = d3.scaleTime()
.rangeRound([0, width]);
var y = d3.scaleLinear()
.rangeRound([height, 0]);
var line = d3.line()
.x(function(d) { return x(d.ano); })
.y(function(d) { return y(d.total); });
d3.tsv("data.tsv", function(d) {
d.ano = d.ano;
d.total = +d.total;
return d;
}, function(error, data) {
if (error) throw error;
x.domain(d3.extent(data, function(d) { return d.ano; }));
y.domain(d3.extent(data, function(d) { return d.total; }));
g.append("g")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x))
.select(".domain")
.remove();
g.append("g")
.call(d3.axisLeft(y))
.append("text")
.attr("fill", "#000")
.attr("transform", "rotate(-90)")
.attr("y", 6)
.attr("dy", "0.71em")
.attr("text-anchor", "end")
.text("Numero de acidentes mortais");
g.append("path")
.datum(data)
.attr("fill", "none")
.attr("stroke", "steelblue")
.attr("stroke-linejoin", "round")
.attr("stroke-linecap", "round")
.attr("stroke-width", 1.5)
.attr("d", line);
});
</script>
ano total
2000 368
2001 365
2002 357
2003 312
2004 306
2005 300
2006 253
2007 276
2008 231
2009 217
2010 208
2011 196
2012 175
2013 160
var parseTime = d3.timeParse("%Y");