2011-07-20 12 views
6

मैं डेटा को बदलकर और उन्हें दोबारा बदलकर समय के साथ "एनिमेटिंग" आरेख हूं।jQuery और jQplot (डेटा अपडेट करने) के साथ चित्रों को एनिमेट करने के लिए कैसे करें

// initialization 
var data = ... 
var targetPlot = $.jqplot('#diagram', data, diagramOptions); 

अब कुछ समय बाद मैं डेटा को किसी भी तरीके से बदल दूंगा और आरेख को अपडेट करना चाहता हूं। निम्नलिखित समाधान काम करता है:

// update Data 
targetPlot.data = ...; 
// remove old diagram 
$('#<%= "diagram" + diagram.id.to_s %>container').empty(); 
// redraw 
targetPlot = $.jqplot('#diagram', data, diagramOptions); 

बिट यह एक पूर्ण पुनरावृत्ति है। बहुत सारे डेटा और एक छोटे अंतराल के साथ jQPlot बहुत मेमोरी लेता है और आरेख झटकेदार है।

यह कैसे सही करें?

// update Data 
targetPlot.data = ...; 
targetPlot.redraw(); 

उत्तर

15

इस तरह से मैं जांच के बहुत सारे के बाद पाया है:

समाधान मेरे लिए redraw-समारोह का उपयोग कर केवल पुराने चित्र खींचता है। मैं इस प्रश्न को पढ़ने में मदद करने के लिए इसे लिख रहा हूं।

डेटा अद्यतन करने के लिए सही जगह श्रृंखला संपत्ति में है, डेटा को अद्यतन करने के बाद आप साजिश पुनः बनाने कर सकते हैं:

targetPlot.series[0].data = myData; 
targetPlot.redraw(); 

अपने अक्ष बदल है, तो आप उन्हें replot() बजाय redraw() का उपयोग करके rescale कर सकते हैं :

targetPlot.replot({resetAxes:true}); 

यह हर बार एक नई साजिश को फिर से निकालने से कहीं अधिक तेज़ है।

+3

यदि आप कर सकते हैं तो प्रतिकृति –

+0

प्लस 300 पर थोड़ा एनीमेशन प्राप्त करने के लिए आप ['animateReplot'] (http://www.jqplot.com/deploy/dist/examples/barLineAnimated.html) को भी सक्रिय कर सकते हैं ... चार्ट पर पुनर्निर्मित करने के लिए उपरोक्त टिप्पणी कुंजी है। धन्यवाद। –