D3:将数据转换为数字
D3: Convert data to number
我在D3中有一个条形图,我想在x轴上显示一些日期。我从数据库中得到的是两个字段,我必须将它们连接起来才能得到年和月。见下文。这个想法是,对于d.date字段,我得到NaN,尽管我已将其转换为数字。
data.forEach(function (d) {
d.date = "20" + d.yy + "/" + d.mm;
// coerce to number
d.value = +d.value;
d.date = +d.date;
console.log(d.value);
console.log(d.date);
});
x.domain(data.map(function (d) {
console.log("HEelllppp!!!!",d.date);
return d.date;
}));
y.domain([0, d3.max(data, function (d) {
return d.value;
})]);
有人有什么想法吗?提前感谢!
可以使用一元加号将字符串转换为数字:
console.log(+"12345")
console.log(+true)
console.log(+"17.9876")
但是,您正在尝试将字符串转换为非数字字符,如"2016/02"。它将返回NaN:
console.log(+"2016/01")
console.log(+"1a2b3c")
解决方案:对日期使用序数刻度,将它们作为字符串传递(懒惰的解决方案),或者使用D3(最好)解析日期:
var dateString = "2016/04";//this is a string
var format = d3.time.format("%Y/%m");
var date = format.parse(dateString);//this is a date
var dateTick = format(date);
console.log("date is: " + date)
console.log("but you can show it as: " + dateTick)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
不应转换为数字,而应转换为日期:
var dates = data.map(function(d){ return new Date(d.yy + "/" + d.mm); })
var xScale = d3.time.scale().domain(d3.extent(dates))
如果我使用var data = [ { yy: 2016, mm: 01}, {yy: 2016, mm: 02 }];
,我从d3.min(xScale.domain())
中得到以下内容:
Mon Feb 01 2016 00:00:00 GMT-0500 (EST)
相关文章:
- 将数字转换为一定数量的硬币
- 将数字转换为字符串数字
- $.get将数字转换为字符串
- 这个javascript代码有什么错误,它有将数字转换为单词的功能
- Java脚本插件,用于将数字转换为特定于区域性的货币格式,并将具有特定货币格式的非格式化数字转换为普通数字
- 在JavaScript中,有没有一种方法可以解析JSON,将数字转换为字符串
- 可以避免在JavaScript中对isNaN()函数进行内部数字转换
- 阻止jQuery Flot将数字转换为十进制
- 将数字转换为16位浮点(存储为字节)并返回
- 如何将一串数字转换为数组
- 将数字转换为名称
- 将数字转换为印度本地语言格式
- 将数字转换为字符串(提供字符集)JavaScript
- 将浮点数字转换为RGBA CSS颜色的有效Alpha值
- 将数字转换为反转的数字数组
- 数字转换器JQuery
- 将数字转换为十进制
- 如何在excel中将数字转换为文本;datatables.js”;下载
- 在没有科学记数法的情况下将大数字转换为字符串
- 将数字转换为字母