2013-03-01 2 views
1

PHP를 사용하여 mySQL 데이터베이스에서 5 초 간격으로 데이터를 가져 와서 d3 다중 선 그래프를 업데이트하려고합니다. 지금은 그래프가 표시되고 있지만 업데이트되지는 않습니다. 저는 updateData 함수가 올바르지 않다고 생각합니다. 그러나 모든 것을 시도해 보았지만 아무것도 작동하지 않습니다. 아무도 도와 줄 수 있습니까?다중 회선 그래프 업데이트 D3.js

https://gist.github.com/Majella/ab32fe0151fd487da3f6

UPDATE : 당신은 X 축선은 산발적으로 표시되고, 선의 일부는 Y 축으로 늘어서되지시피

.

업데이트 요점 :

https://gist.github.com/Majella/ab32fe0151fd487da3f6

enter image description here 업데이트 2 : 일부 기괴한 이유로 선 색상을 변경 - 또는 완전히 이해하지는 이동. 따라서 위의 그래프에서 위쪽 - 파란색, 주황색, 흰색 - 파란색을 업데이트하는 그래프가 맨 아래에 주황색, 가운데에서 흰색으로 바뀔 수 있지만 임의로 발생합니다.

그래프의 원본 도면에서
+0

나는 당신의 데이터가 ID를 기반으로 구속 될 필요가 있다고 생각한다 :

어쨌든, 당신의 업데이트 기능, 당신은이 (테스트되지 않은) 같은 것을 할 수 있습니다. 즉, 데이터가 매번 동일한 DOM 요소에 올바르게 바인딩되도록합니다. 아마도 https://github.com/mbostock/d3/wiki/Selections#wiki-data를 확인하십시오 – cmonkey

+0

고맙습니다 - parameterType 대신 parameterID로 키를 변경하고 트릭을 수행했습니다 :) – Newbie

+0

나는이 똑같은 문제를 장기. 귀하의 질문과 해결책은 저에게 큰 도움이되었습니다 ... 감사합니다! – brianz

답변

3

, 올바르게 사용 요소에 데이터 (데이터)를 결합

var parameter = svg.selectAll(".parameter") 
.data(data, function(d) { return d.key; }) 
    .enter().append("g") 
    .attr("class", "parameter"); 

(g.parameter를)

하여 업데이트 기능하는 동안, 당신이 필요합니다 요소의 업데이트, 삭제 및 추가를 수행하기 위해 데이터를 다시 조인 할 수 있습니다. 3 little circles tutorial은 이에 대해 더 자세히 알기 좋은 곳입니다.

// re-acquire joined data 
var containers = svg.selectAll("g.parameter") 
    .data(data); 

// update existing elements for this data 
containers 
    .select("path.line") 
    .attr("d", function(d) { return line(d.values); }) 
+0

답변 해 주셔서 감사합니다. - 여전히 몇 가지 문제가 있습니다. 위의 업데이트를 참조하십시오. – Newbie