2011-03-28 13 views
5

मैं एक नाव ग्राफ जाता है कि पहले से ही एक डेटा श्रृंखला प्रतिपादन है पर एक नई श्रृंखला, यानीप्लॉट पहले से प्रदान की गई jQuery flot ग्राफ

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

एक बाद बिंदु पर, मैं कुछ नए डेटा है कि मैं चाहता हूँ प्राप्त होगा एक अलग डेटा श्रृंखला के रूप में, इस ग्राफ पर भी साजिश करने के लिए। क्या कोई तरीका है कि मैं इस नए डेटा श्रृंखला को मौजूदा ग्राफ में जोड़ सकता हूं, और पूरे ग्राफ को फिर से बनाना नहीं है? जो है, मैं इस तरह एक और कॉल करने के लिए होने से बचने के लिए चाहते हैं:

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

और इसके बजाय इस तरह एक फोन करना:

plot.addSeries([data2], option); 

धन्यवाद!

उत्तर

1

एक ajax कॉल कि आपकी जानकारी खींचती है और एक विधि ग्राफ की जानकारी रीसेट करके एकाधिक रेखांकन से निपटने में सक्षम को भेज देता है बनाएँ। सबसे पहले, उस तत्व को पकड़ें जो आपके ग्राफ़ को रखता है और इसे एक चर में संग्रहीत करता है, फिर एक अजाक्स कॉल बनाएं जो आपके ग्राफ़ को बनाने के लिए आवश्यक जानकारी खींच लेता है। सफलता पर, रीसेटग्राफ को कॉल करें और इसे जानकारी पास करें।

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 बॉक्स संचालन काफी अच्छी तरह से सामान्य विवरण है। वहाँ स्मृति के साथ नवीनतम संस्करण (0.7) से पहले कुछ समस्या है जब आप बार-बार $.plot(...) फोन लीक है। या तो नवीनतम संस्करण में नवीनीकृत, या plot.setData(), plot.setupGrid() और plot.draw()

कर आप setData, setupGrid का विवरण प्राप्त कर सकते हैं पर गौर है, और से API.txt

+0

धन्यवाद @Black बॉक्स संचालन और @Ryley तरीकों आकर्षित। तो, मैं अपने उत्तरों कह मैं करता हूँ * * के रूप में है के साथ संभावित सर्वाधिक प्रभावशाली रास्ता जा रहा है पूरी साजिश पुनः बनाने का, की व्याख्या कर रहा हूँ: वर newResult = plot.getData() –

+0

हाँ, वहाँ निश्चित रूप से कोई रास्ता नहीं एक श्रृंखला को जोड़ने के लिए है सबकुछ फिर से निकाले बिना ... आप * सेटअप को छोड़ने में सक्षम हो सकते हैं अगर आप जानते हैं कि नया डेटा अधिकतम/न्यूनतम x/y मानों को नहीं बदल रहा है। – Ryley

+0

धन्यवाद @ ब्लैक बॉक्स ऑपरेशंस और @Ryley। तो, मैं कह रहा मैं *, पूरी साजिश पुनः बनाने का है * के रूप में अपने उत्तरों की व्याख्या कर रहा हूँ संभवतः के साथ सबसे कुशल मार्ग कुछ किया जा रहा है की तरह: plot.setData(plot.getData().push(data2)); plot.draw()

संबंधित मुद्दे