2010-02-24 25 views
6

कैसे जोड़ें मैं कोर-प्लॉट में निम्न छवि के समान डेटा सूचक रेखा जोड़ना चाहता हूं।कोर-प्लॉट प्रश्न: डेटा इंडिकेटर

Plot Image http://img203.imageshack.us/img203/9412/plota.png

किसी भी विचार कैसे मैं इस का उपयोग करते हुए कोर-भूखंड प्राप्त कर सकते हैं। मैंने कोर-प्लॉट को समझना शुरू कर दिया है, इसलिए कोई भी युक्ति बहुत उपयोगी होगी।

धन्यवाद

संपादित करें:

मैं एक स्क्रीनकास्ट बनाया है बेहतर समझ के लिए दिखाने के लिए मैं क्या मतलब है:

http://www.screencast.com/users/GauravVerma/folders/Jing/media/78fbef04-8785-46d6-9347-4f35d257109c

जोड़ा 26 वें फरवरी:

मेरे पास solv है दो डेटाप्लॉट्स का उपयोग करके आंशिक समस्या को संपादित करें। यहां वर्तमान कार्यान्वयन है:

http://www.screencast.com/users/GauravVerma/folders/Jing/media/02a1e685-8bf8-41a9-aaa6-5ea6445f6a6c

मैं दो dataplots का इस्तेमाल किया है, एक मुख्य एक & एक दूसरे भूखंडों जो पुनः लोड किया जाता है जब स्लाइडर मूल्य परिवर्तन केवल एक डेटा बिंदु है।

यहाँ मेरी डेटा स्रोत तरीके हैं (किसी की मदद कर सकते):

-(NSUInteger)numberOfRecordsForPlot:(CPPlot *)plot { 
    if ([(NSString *)plot.identifier isEqualToString:@"Blue Plot"]){ 
     return [dataForPlot count]; 
    }else { 
     return 1; 
    } 

} 

-(NSNumber *)numberForPlot:(CPPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index 
{ 
    if ([(NSString *)plot.identifier isEqualToString:@"Green Plot"]) { 
     index = floor((double)[slider value]); 
     if (index > [dataForPlot count] -1) { 
      index = [dataForPlot count] -1; 
     } 
     NSLog(@"Green plot index : %f",index); 
    } 
    NSNumber *num = [[dataForPlot objectAtIndex:index] valueForKey:(fieldEnum == CPScatterPlotFieldX ? @"x" : @"y")]; 
    num = [NSNumber numberWithDouble:[num doubleValue] + 1.0]; 
    return num; 
} 

अब केवल समस्या बनी हुई है लाइन आकर्षित करने के लिए एक आसान तरीका पता लगाने के लिए है। कोई विचार ??

+1

आपके द्वारा दिखाए जा रहे छवि में कौन सा तत्व "डेटा सूचक" है? –

+0

लाल रेखा, जो वर्तमान मूल्य दिखाती है। जब उपयोगकर्ता स्लाइडर को ले जाता है, तो लाल रेखा भी वर्तमान मान को शीर्ष पर दिखाती है। कार्यान्वयन के लिए कृपया रोम्बी एप्लिकेशन (http://www.roambi.com/) –

उत्तर

6

कोर प्लॉट में इस प्रकार की बातचीत करने के लिए वास्तव में कोई प्रत्यक्ष तरीका नहीं है, हालांकि भविष्य में शामिल करने के लिए इसकी योजना बनाई गई है।

ऐसा करने का एक तरीका ग्राफ के शीर्ष पर अपना स्वयं का UIView रखना होगा, और माउस मूव ईवेंट प्राप्त करने के लिए इसका उपयोग करना होगा।

फिर आप लाल रेखा को दिखाने के लिए कुछ विकल्प हो सकता है:

1) एक दूसरे y अक्ष जोड़े और स्थिति यह माउस घटनाओं

2) के अनुसार ठीक एक के साथ एक बार साजिश जोड़े बार, जो पूरे ऊर्ध्वाधर स्थान

3) एक स्कैटर प्लॉट जोड़ें जिसमें दो बिंदु हैं, नीचे एक और शीर्ष पर एक है।

ये सभी हैक्स हैं, लेकिन उन्हें सभी काम करना चाहिए।

+0

के कार्डएक्स व्यू को देखें, क्या आप इस पर थोड़ा सा विस्तार कर सकते हैं और ग्राफ़ पर स्पर्श ईवेंट का पता लगाने के तरीके के बारे में बता सकते हैं क्योंकि यह समर्थित नहीं है .. –

+0

यह प्रतिक्रिया अब काफी पुरानी है। कोर प्लॉट में इवेंट हैंडलिंग के लिए अब हमारे पास कुछ समर्थन है। CPTPlotSpace क्लास में कई प्रतिनिधि विधियां हैं जो आपको ईवेंट प्राप्त करने की अनुमति देती हैं।बस साजिश की जगह के प्रतिनिधि को सेट करें, और अपनी लाल रेखा की स्थिति को अपडेट करने के तरीकों को लागू करें। –

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