是寻求帮助的时候了。我已经学习D3.js好几个星期了,现在才开始觉得自己理解了它的10%(哈哈哈)。我正在尝试生成一个非常简单的线图。只要数据非常简单,我就能做到这一点,但是我的原始数据源有UTC时间戳,以及实数/十进制数字,这些数字总是使任何简单之外的东西崩溃。
原始数据源如下所示:
{
"Links": {},
"Items": [
{
"Timestamp": "2016-07-12T22:21:10Z",
"Value": 1055.6793212890625,
"UnitsAbbreviation": "m3/h",
"Good": true,
"Questionable": false,
"Substituted": false
},
{
"Timestamp": "2016-07-12T22:39:10Z",
"Value": 989.00830078125,
"UnitsAbbreviation": "m3/h",
"Good": true,
"Questionable": false,
"Substituted": false
}
],
"UnitsAbbreviation": "m3/h"
}
使用jQuery和javascript时间格式化函数,我可以组装以下简化的数据集:
var dataset = [
{'theTime': '2016/07/12 15:58:40', 'theValue': 1123.07275390625},
{'theTime': '2016/07/12 16:21:10', 'theValue': 1055.6793212890625},
{'theTime': '2016/07/12 16:45:40', 'theValue': 962.4850463867188},
{'theTime': '2016/07/12 17:14:40', 'theValue': 831.2259521484375},
{'theTime': '2016/07/12 17:55:10', 'theValue': 625.3046875}
];
下面是我的代码:
//~ Populate the 'dataset':
var dataset = [];
$.get(url, function(data){
var itemCount = data.Items.length;
var commaCount = itemCount - 1;
for(i=0; i < itemCount; i++){
if(i == commaCount){
dataset.push("{'theTime': '" + formattedDateTime(data.Items[i].Timestamp) + "', 'theValue': " + data.Items[i].Value + "}");
}
else {
dataset.push("{'theTime': '" + formattedDateTime(data.Items[i].Timestamp) + "', 'theValue': " + data.Items[i].Value + "},");
}
}
var margin = {top: 20, right: 20, bottom: 30, left: 50};
var width = 960 - margin.left - margin.right;
var height = 500 - margin.top - margin.bottom;
var parseDate = d3.time.format("%Y-%m-%d %H:%M:%S").parse;
var x = d3.time.scale()
.range([0, width]);
var y = d3.scale.linear()
.range([height, 0]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.orient("left");
var line = d3.svg.line()
.x(function(d) { return x(d.theTime); })
.y(function(d) { return y(d.theValue); });
var svg = d3.select("#myChart").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
dataset.forEach(function(d) {
d.theTime = parseDate(d.theTime);
d.theValue = +d.theValue;
});
x.domain(d3.extent(data, function(d) { return d.theTime; }));
y.domain(d3.extent(data, function(d) { return d.theValue;}));
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.call(yAxis)
.append("text")
.attr("transform", "rotate(-90)")
.attr("y", 6)
.attr("dy", ".71em")
.style("text-anchor", "end")
.text("return time(ms)");
svg.append("path")
.datum(dataset)
.attr("class", "line")
.attr("d", line);
});
//~~~ Format The Date:
function formattedDateTime(dateAndTime) {
var d = new Date(dateAndTime);
var numDate = d.getDate();
var numMonth = d.getMonth() + 1;
var numYear = d.getFullYear();
var numHours = d.getHours();
var numMinutes = d.getMinutes();
var numSeconds = d.getSeconds();
numDate = (numDate < 10) ? "0" + numDate : numDate;
numMonth = (numMonth < 10) ? "0" + numMonth : numMonth;
numHours = (numHours < 10) ? "0" + numHours : numHours;
numMinutes = (numMinutes < 10) ? "0" + numMinutes : numMinutes;
numSeconds = (numSeconds < 10) ? "0" + numSeconds : numSeconds;
return numYear + "/" + numMonth + "/" + numDate + " " +
numHours + ":" + numMinutes + ":" + numSeconds;
};
第一个错误出现在“dataset.foreach()”函数中,该函数为“uncattled TypeError:Cannot read property'length‘of undefined
”。我在这里解析数据的努力源于代码中“svg.append(”path“)”点出现的另一个错误,即“error:
“。
问题是您所经过的日期格式如下:
'2016/07/12 15:58:40'
而您为解析它所做的parsedate函数是(注意date中没有连字符):
var parseDate = d3.time.format("%Y-%m-%d %H:%M:%S").parse;
var parseDate = d3.time.format("%Y/%m/%d %H:%M:%S").parse;
x.domain(d3.extent(data, function(d) { return d.theTime; }));
y.domain(d3.extent(data, function(d) { return d.theValue;}));
x.domain(d3.extent(dataset, function(d) {
return d.theTime;
}));
y.domain(d3.extent(dataset, function(d) {
return d.theValue;
}));
本文向大家介绍d3.js 使用D3 js创建SVG元素,包括了d3.js 使用D3 js创建SVG元素的使用技巧和注意事项,需要的朋友参考一下 示例 尽管D3并非专门用于处理SVG元素,但它已广泛用于创建和处理基于SVG的复杂数据可视化。D3提供了许多强大的方法,可帮助轻松创建各种几何SVG结构。 建议首先了解SVG规范的基本概念,然后使用大量的D3 js示例创建可视化效果。 D3 JS范例 SV
根据http://bl.ocks.org/mbostock/3883245上的演示 我不知道如何在xAxis上格式化时间 这是我的代码:js: 在svg中,时间是12小时时钟,但在我的数据中时间是24小时时钟。如何在svg和数据上保持相同的格式? 感谢任何帮助。(PS:希望大家不要介意我的英语,太差了。)
预测给定输入序列中的下一个是机器学习中的另一个重要概念。 本章为您提供有关分析时间序列数据的详细说明。 介绍 (Introduction) 时间序列数据表示一系列特定时间间隔内的数据。 如果我们想在机器学习中构建序列预测,那么我们必须处理顺序数据和时间。 系列数据是顺序数据的摘要。 数据排序是顺序数据的重要特征。 序列分析或时间序列分析的基本概念 序列分析或时间序列分析是基于先前观察到的预测给定输
我是时间序列的新手,需要学科专家的帮助。所以我有一个有11个变量的实验室数据,报告了时间。10个变量是可控的,第11个变量是输出。我用LSTM预测了第11个变量的时间序列。结果比预期好得多。第11个变量预测为0.001 RMSE。训练数据有5000个样本,测试数据有4599个。我对预测很满意。现在我需要分析输入10个变量是如何影响第11个输出变量的。请建议一个好的库,类似问题的教程。
我试图用时间序列创建一个简单的折线图。问题是androidplot没有正确显示数组中的时间值,即日期已关闭。日期应为: 2001年1月1日、2001年2月1日、2001年3月1日、2001年4月1日、2001年5月1日 但我得到了: 2001年1月1日、2001年1月30日、2001年3月1日、2001年3月31日、2001年5月1日 您可以从格式化的调试信息中看到androidplot解释了什么
我知道在解析HTML表方面有很多问题。然而,在做了一些研究并研究了Jsoup之后,我有点被它难倒了。 我有时间表 我想解析以取出标记的文本,但要保持某种格式。 我更愿意将数据分割成可管理的块。也许我可以做一个? 但是,这意味着没有演讲时间。除非不需要计算空格和计算时间,假设每个空格是15分钟。