2011-03-28 4 views
5

가 이미 하나의 데이터 계열을 렌더링하는 플로트 그래프가 이미 렌더링 JQuery와 FLOT 그래프에 새로운 시리즈, 즉플롯 나중에에서

var plot = $.plot($('#placeholder'), [data1], options); 

는, 내가 원하는 새로운 데이터를 수신 할 이 동일한 그래프에 별도의 데이터 계열로 플롯 할 수도 있습니다. 이 새로운 데이터 시리즈를 기존 그래프에 추가하고 전체 그래프를 다시 구성 할 필요가없는 방법이 있습니까?

var plot = $.plot($('#placeholder'), [data1, data2], options); 

을 대신 이런 호출합니다 : 즉,이 같은 다른 통화를하지 않으려

plot.addSeries([data2], option); 

감사합니다!

답변

1

정보를 가져와 그래프 정보를 재설정하여 여러 그래프를 처리 할 수있는 방법으로 보내는 ajax 호출을 만듭니다. 먼저 그래프를 포함하는 요소를 잡고 변수에 저장 한 다음 그래프를 작성하는 데 필요한 정보를 가져 오는 ajax 호출을 작성하십시오. 성공하면 resetGraph를 호출하고 정보를 전달합니다. 당신이 당신의 그래프를 변경해야 할 때

var dataview = $("#placeholder"); 
$.ajax({ 
    url: "index.php", 
    data: "stuff&junk&things", 
    method: 'GET', 
    dataType: 'json', 
    success: function(msg){ 
     resetGraph(msg.dataview, msg.data, msg.data_ticks, msg.) 
    } 
}); 

function resetGraph(dataview, data, data_ticks){ 

    plot = $.plot(dataview, data, { 
     points: { show: true, radius: 5 }, 
     xaxis: { ticks: data_ticks, tickSize: 7 }, 
     yaxis: {labelHeight: 2} 
    }); 

} 

지금, 단순히 정보를 잡아, 스크립트를 호출을 발사 성공 resetGraph로 전송하고, 그에 따라 업데이트됩니다.

2

@Black Box Operations는 일반적인 세부 사항을 잘 설명합니다. $.plot(...)을 반복적으로 호출하면 메모리 누수가있는 최신 버전 (0.7) 이전에 몇 가지 문제가 있습니다. 어느 최신 버전으로 업그레이드하거나 사항 setData, setupGrid의 세부 사항을 얻을 수 있습니다 plot.setData(), plot.setupGrid()plot.draw()

을하고 조사하고 API.txt

+0

감사 @Black 박스 운영 및 @Ryley에서 방법을 그립니다. 그래서, 당신의 대답을 해석 할 때, 가장 효율적인 경로가 전체 줄거리를 다시 그려야한다고 말하고 있습니다 : var newResult = plot.getData() –

+0

분명히 시리즈를 추가 할 방법이 없습니다. 모든 것을 다시 그리지 않고 ... 새 데이터가 최대/최소 x/y 값을 변경하지 않는다는 것을 안다면 setupGrid를 건너 뛸 수 있습니다. – Ryley

+0

@Black Box Operations 및 @Ryley에 감사드립니다. 그래서 저는 여러분의 답을 다음과 같이 해석하고 있습니다 : * * do *는 전체 줄거리를 다시 그려야하며 잠재적으로 가장 효율적인 경로는 다음과 같습니다 : plot.setData(plot.getData().push(data2)); plot.draw()