MATLAB

2010-07-30 9 views
6

में 'टाइमलाइन' शैली ग्राफ़िक बनाना MATLAB में कुछ डेटा प्रोसेसिंग के अंत में, मैं एक प्लॉट बनाना चाहता हूं जो डेटा की श्रृंखला के लिए रंगीन टाइमलाइन बार दिखाता है। मेरे पास कई प्रक्रियाएं हैं जो प्रत्येक समान चरणों के माध्यम से जाती हैं, और विभिन्न समय पर शुरू और बंद और अलग होती हैं। आदर्श रूप में यह कुछ इस तरह (ASCII आर्ट माफ) की तलाश में पहुंचते हैं:MATLAB

 
    | ###***$$$$$$$$$$   Process 1 
    |  ###***$$$$$$$  Process 2 
    |   ###$$$$$   Process 3 
    |    *******$$$$$$ Process 4 
    +------------------------------------------ 
        Time 

कहाँ #* और $ भिन्न रंग (चरण के लिए एक रंग का ठोस, आसन्न ब्लॉकों के लिए खड़े हैं प्रक्रियाओं के माध्यम से जाओ, नोट कुछ वैकल्पिक हैं)।

लेबल कहीं और हो सकते हैं, लेकिन प्रत्येक पंक्ति के बगल में अच्छा है।

मैंने rectangle और text का उपयोग करके एक समाधान को एक साथ हैक किया है, लेकिन ऐसा लगता है कि यह MATLAB के भीतर एक मौजूदा प्रकार की साजिश हो सकती है जिसे मैंने अभी तक नहीं मिला है। क्या आप एक के बारे में जानते हैं?

उत्तर

9

barh का उपयोग करें। अपने प्रारंभिक प्रक्रिया समय के रूप में पहला कॉलम सेट करें

data_with_init_time = [ 
     1, 10, 5, 3 ; 
     3, 10, 3, 9 ; 
     7, 10, 4, 8 ; 
     12,10, 2, 2 ]; 

h = barh(data_with_init_time, 'stack'); 
set(h(1), 'facecolor', 'none', 'EdgeColor', 'none'); % disable the color of the first column (init time) 
set(gca, 'YTickLabel', {'proc 1', 'proc 2', 'proc 3', 'proc 4'}); % change the y axis tick to your name of the process 
axis ij; % Put the first row at top 
+1

+1: बहुत अच्छा, हालांकि मैं एक छोटा संशोधन कर सकता हूं। अक्षों का पृष्ठभूमि रंग आमतौर पर डिफ़ॉल्ट रूप से सफेद होता है, लेकिन अगर ऐसा नहीं होता है तो आप इसके बजाय ऐसा कर सकते हैं: 'axescolor = get (gca,' color '); सेट (एच (1), 'फेसकॉलर', axesColor, 'EdgeColor', axesColor); ' – gnovice

+2

@gnovice: आप बस रंगों को '' none'' ' – Amro

+0

@Amro: Ah yes के रूप में सेट कर सकते हैं। मैं पूरी तरह से भूल गया कि बार ग्राफ पर काम करेगा। यह एक बेहतर विकल्प है। – gnovice