2010-01-11 7 views
21

मैं बड़ी संख्या में डेटा पॉइंट्स के साथ संचयी वितरण कार्यों की साजिश कर रहा हूं। मैं एक ही साजिश पर कुछ लाइनों की साजिश कर रहा हूं, जिन्हें मार्करों के साथ पहचाना जाता है क्योंकि इसे काले और सफेद रंग में मुद्रित किया जाएगा। मैं जो चाहता हूं वह एक्स-आयाम में समान रूप से दूरी वाले मार्कर हैं। जो मुझे मिल रहा है वह एक मार्कर प्रति डेटा पॉइंट है (और अंक की संख्या दी गई है, वे सभी ओवरलैप हैं)डेटा पॉइंट्स (या सीडीएफ प्लॉट करने के लिए बेहतर तरीका) की तुलना में कम मार्करों के साथ प्लॉट करें [मैटलप्लिब, या सामान्य साजिश सहायता]

मुझे यकीन नहीं है कि यह अच्छी तरह से साजिश करने के बारे में मेरी समझ है या केवल matplotlib समझने की कमी है। मुझे 'मार्कर फ्रीक्वेंसी' सेटिंग नहीं मिल रही है।

एक लाइन के लिए एक आसान समाधान लाइन से प्रत्येक एनएच मूल्य लेना होगा, और लिनस्टाइल = '' के साथ एक अलग पंक्ति के रूप में उपयोग करना होगा, लेकिन मैं मार्करों को लंबवत रूप से गठबंधन करना चाहता हूं, और अलग एक्स सरणी अलग लंबाई है। किसी भी अंतर्निहित भी अंतराल पर निशान स्थापित करने के लिए समर्थन

# in reality, many thousands of values 
x_example = [ 567, 460, 66, 1034, 275, 26, 628, 99, 287, 157, 705, 421, 1093, \ 
    139, 204, 14, 240, 179, 94, 139, 645, 670, 47, 520, 891, 450, 56, 964, \ 
    1728, 99, 277, 356, 1628, 745, 364, 88, 112, 810, 816, 523, 401, 89,  \ 
    278, 917, 370, 53, 39, 90, 853, 356 ] 
x = sort(x_example) 
y = linspace(0,1,len(x)) 

ax = subplot(1,1,1) 
plots[w] = ax.plot(x,y, marker='o') 
+0

arclength मार्कर रिक्ति के लिए संबंधित समाधान: http://stackoverflow.com/questions/17406758/plotting-a-curve-with-equidistant-arc-length-markers –

उत्तर

31

आप हर पांचवें बिंदु चिह्नित करने के लिए plot(x,y,marker='o',markevery=5) कर सकते हैं, लेकिन मुझे नहीं लगता है है। आप उन एक्स स्थानों पर निर्णय ले सकते हैं जहां आप अंक चाहते हैं, उदाहरण के लिए उपयोग करें। numpy.searchsorted यह पता लगाने के लिए कि कौन से डेटा बिंदुओं के बीच गिरते हैं, और फिर y निर्देशांक खोजने के लिए पड़ोसी बिंदुओं के बीच अंतरण करते हैं।

+0

खैर, कि निश्चित रूप से अच्छे से मेरे दृष्टिकोण हो गया होता है। खोज के लिए समय देखने के लिए समय! –

+0

वैकल्पिक रूप से, मार्कवेरी एक फ्लोट इनपुट का समर्थन करता है जो 'मार्करों को लाइन के साथ लगभग बराबर दूरी पर रखा जाएगा; मार्करों के बीच की रेखा के साथ दूरी मूल्य 'http://matplotlib.org/api/lines_api.html#matplotlib.lines.Line2D.set_markevery द्वारा अक्ष अक्षांश-बॉक्स विकर्ण की डिस्प्ले-समन्वय दूरी को गुणा करके निर्धारित की जाती है। – Erik

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