2014-04-07 8 views
7

मैं एक quiver plot बनाने रहा तरकश तीर सिर को भरने के लिए:मैटलैब कैसे

[x,y] = meshgrid(0:0.2:2,0:0.2:2); 
u = cos(x).*y; 
v = sin(x).*y; 
figure 
quiver(x,y,u,v) 

मैं तीर सिर भरे जाने के लिए चाहते हैं (यानी enter image description here और नहीं enter image description here)

प्रलेखन से, यह बहुत होना चाहिए

quiver(...,LineSpec,'filled') 

का उपयोग कर हालांकि द्वारा सरल है, मैं अभी भी सही वाक्य रचना को समझ नहीं सकता है - इन काम नहीं करते:

quiver(x,y,u,v,'LineWidth','filled'); 
quiver(x,y,u,v,'LineWidth',1,'filled'); 

आपकी मदद के लिए धन्यवाद!


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

quiver(x,y,u,v) %Original 

enter image description here

quiver(x,y,u,v,'-sk','filled') %With line specifiers 

enter image description here

+2

[LineSpec] (http://www.mathworks.co.uk/help/matlab/ref/linespec.html) आम तौर पर इस तरह के ' 'एक काले के लिए -k'' के रूप में एक स्ट्रिंग है रेखा, और '' भर'' बिंदु चिह्नकों को संदर्भित करता है जिन्हें निर्दिष्ट किया जा सकता है। उदाहरण के लिए '' -sk'' जो वर्ग प्रदान करता है हालांकि ये तीर सिर को क्विवर से बदल देगा। क्विवर को संशोधित करने के लिए मेरा सुझाव है कि आप [इस पिछले प्रश्न] पर एक नज़र डालें (http://stackoverflow.com/questions/18776172/in-matlab-how-do-i-change-the-arrow-head-style-in -quiver-प्लाट)। – RTL

+0

@ आरटीएल: दूसरे प्रश्न के संदर्भ के लिए धन्यवाद यह वास्तव में सहायक है, लेकिन मुझे लगता है (जैसा कि दस्तावेज़ों द्वारा सुझाया गया है) ऐसा करने का एक आसान तरीका होना चाहिए।लाइनस्पेक के बारे में, यह एक अच्छी दिशा है लेकिन विनिर्देशकों में सामान्य रूप से सभी नियमित चश्मे शामिल नहीं होते हैं और विशेष रूप से: "क्विवर (एक्स, वाई, यू, वी, 'लिनस्टाइल', '- एसके')" ऐसा नहीं लगता है वैध वाक्यविन्यास। –

+0

'क्विवर (x, y, u, v,' - sk ')' 'linestyle' की आवश्यकता नहीं है। मुझे डर है कि मुझे एक आसान तरीके से पता नहीं है ... (भरे हुए प्रभाव को देखने के लिए 'क्विवर (एक्स, वाई, यू, वी,' - एसके ',' भरे ') की तुलना में इसकी लायकता – RTL

उत्तर

3

मैं एक MATLAB पेशेवर है, तो बहाना कृपया मेरा उत्तर है अगर नहीं कर रहा हूँ: का उपयोग करते हुए लाइन विनिर्देशक निम्नलिखित करता है भद्दा। मुझे यकीन है कि इसे हल करने के लिए और अधिक सुरुचिपूर्ण तरीके हैं - निम्नलिखित मुझे मिला है।

मैंने तीर युक्तियों की स्थिति को पुनर्प्राप्त करने, उन्हें हटाने और fill (जैसा कि डीवी सुझाव दिया गया) के साथ उन्हें पुनर्निर्मित करने का निर्णय लिया। मैंने देखा कि मैं fill बता सकता हूं कि एक बहुभुज समाप्त होता है और अगला NaN मानों को डालने के माध्यम से शुरू होता है (जिस तरह से मूल तीर युक्तियाँ खींची जाती हैं, जैसा कि आप मूल XData का निरीक्षण देख सकते हैं)। ऐसा करने से मैंने वस्तुओं के रंग को प्रभावित करने की संभावना खो दी और वे भरे नहीं गए। एक काम के रूप में मैंने एक लूप में नए तीर-सुझावों को चित्रित किया - मुझे पता है कि ऐसा करने का एक बेहतर तरीका हो सकता है, इसलिए मैं किसी भी अतिरिक्त के बारे में खुश हूं।

मैंने आपके द्वारा दिए गए उदाहरण का उपयोग किया, केवल साजिश को संभालने के लिए HANDLE = quiver(x,y,u,v); द्वारा अंतिम पंक्ति को प्रतिस्थापित किया। वहां से:

children=get(handle,'children'); % retrieve the plot-children - 
           % second element are the arrow tips 

XData=get(children(2),'XData'); % retrieve the coordinates of the tips 
YData=get(children(2),'YData'); 

hold on 
delete(children(2)) % delete old arrow tips 

for l=1:4:length(XData)-3 % paint new arrow tips, skipping the NaN-values 
    ArrowTips((l-1)/4+1)=fill(XData(l:l+2),YData(l:l+2),'r'); 
end 

तब आप तीर-युक्तियों में तीर-युक्तियों के हैंडल पा सकते हैं। fill पर कॉल में एज- और फेसकलर को क्रमशः काले और लाल होने के लिए स्वतंत्र महसूस करें।

+0

क्षमा करें, विभिन्न दृष्टिकोणों को गड़बड़ कर दिया। मैंने कोड अपडेट किया, अब इसे काम करना चाहिए। सुधारों के लिए धन्यवाद! –

0

यह कोड इसी तरह के प्रश्न के उत्तर में वास्तव में बहुत अच्छा काम करता है। यह एनोटेशन का उपयोग करता है।

In Matlab how do I change the arrow head style in quiver plot?

+1

कृपया उस प्रश्न पृष्ठ की सामग्री के बारे में एक संक्षिप्त विवरण दें और यह इस प्रश्न को कैसे हल करता है। – CPHPython