2013-02-26 4 views
1

У меня есть линейный график, который обновляется по мере того, как данные извлекаются с интервалом 5 секунд из базы данных.Отображать данные в реальном времени в текстовой метке d3.js

https://gist.github.com/Majella/5fc4cd5f41a6ddf2df23

Я хотел бы добавить метку в правом верхнем углу графика, который будет отображать дату/время (хранится в переменной dateTimeTaken) и обновлять эту этикетку, как новые данные тянут в?

Я искал в Интернете и не могу найти пример этого в любом месте - может ли кто-нибудь помочь?

ответ

1

Это должно быть довольно просто. Основываясь на вашей сути, что-то вроде:

d3.json("getdata.php", function(error,data) { 
    data.forEach(function(d) { 
    d.dateTimeTaken = parseDate(d.dateTimeTaken); 
    d.reading = +d.reading; 
    }); 
var maxDate = d3.max(data, function(d) { return d.dateTimeTaken; } 

svg.selectAll(".timeDisplay") 
    .data([maxDate]) 
    .text(function(d) { return d; }) 
    .enter() 
    .append("text") 
    .attr("class", "timeDisplay") 
    .attr("x", width) 
    .attr("y", 0) 
    .attr("text-anchor", "end") 
    .text(dateTimeTaken); 

Поместите это в свою функцию «updateData». Учитывая, что вы получаете несколько элементов данных, вам может потребоваться выполнить вызов «d3.max()» для определения даты, которую вы хотите отобразить.

+0

Спасибо - получение сообщения об ошибке «dateTimeTaken» не определено. Изменил его на d.dateTimeTaken, но затем «d» не определен? – Newbie

+0

Если вы используете d.dateTimeTaken, вы измените его на .text (function (d) {return d.dateTimeTaken;}). Просто зависит от того, как вы хотите получить доступ к переменным. – cmonkey

+0

Я тоже пробовал это и получаю еще одну ошибку. «Object [object Array] не имеет метода« enter » – Newbie

Смежные вопросы