Проблема со структурой данных, это не то же самое, что и данные в указанной вами ссылке. Вы можете использовать данные в своей текущей структуре, но вам нужно будет сделать некоторую работу. Для меня похоже, что вы хотите построить несколько серий по client ip
, поэтому вам нужно будет упорядочить свои данные на client ip
. С d3
это можно сделать с помощью d3.nest. Таким образом, вы используете что-то вроде:
var clients = d3.nest()
.key(function(d) { return d.client_ip; })
.entries(data);
Этой функция даст вложенный объект, организованный client_ip
с timestamp
и bytes_transfered
организованных под values
. Какой будет выглядеть, что-то вроде:
{ "Objectkey": "92.239.29.77", "values": [ { "bytes_transfered": "577818", "client_ip": "92.239.29.77", "timestamp": "WedOct01201406: 30: 00" }, { "bytes_transfered": "108257", "client_ip": "92.239.29.77", "timestamp": "WedOct01201407: 30: 00" } ] }
Следующая проблема в том, что переменная timestamp
не был правильно принят. Ваши данные в Unix времени, поэтому все, что вам нужно сделать, это передать его JavaScripts new Date
функция, как в:
data.forEach(function(d) {
d.timestamp = new Date(+d.timestamp);
});
Затем необходимо изменить функцию линии, как:
var line = d3.svg.line()
.interpolate("basis")
.x(function(d) { return x(d.timestamp); })
.y(function(d) { return y(d.bytes_transfered); });
А также домен называет
x.domain(d3.extent(data, function(d) { return d.timestamp; }));
y.domain([
d3.min(clients,
function(c) {
return d3.min(c.values, function(v) {
return +v.bytes_transfered;
});
}),
d3.max(clients,
function(c) {
return d3.max(c.values, function(v) {
return +v.bytes_transfered;
});
})
]);
Кроме того, обратите внимание на +
перед v.bytes_transfered
. Это короткая рука для передачи строки в javascript.
И положить его в целом вы получаете this
Любые сообщения в консоли? – mplungjan
Нет сообщения об ошибке, infact я вижу некоторые из графиков, но первый, второй и третий не отображаются. Я вижу некоторые предупреждения, но он показывает только код. – Raghuveer