2010-08-10 16 views
7

अक्ष मैं निम्न स्क्रिप्ट अंततः एक 4 से 2 subplot प्लॉट करने के लिए है:,MATLAB subplot शीर्षक और लेबल

files = getAllFiles('preliminaries'); 

n = size(files); 
cases = cell(1, n); 
m = cell(1, n); 

for i = 1:1:n 
    S = load(files{i}); 

    cases{i} = retransmission_distribution(S); 

    c = size(cases{i}); 
    m{1,i} = cell(1, c(2)); 

    %figure(i); 
    str_size = size(files{i}); 
    title_str = files{i}(5:str_size(2) - 4); 
    title_str = strrep(title_str, '_', ' '); 
    %title(title_str); 
    for j = 1:1:c(2) 
     [x, y] = hist(cases{i}{1,j}); 
     m{1,i}{1,j} = [x; int32(y)]; 
     % subplot(4, 2, j); 
     % xlabel('Number of Retransmissions'); 
     % ylabel('Number of Occurrences'); 
     % bar(y, x, 'histc'); 
    end 
end 

हालांकि, आदेश अनुक्रम मेरे पास है की वर्तमान आदेश के साथ भी उनके साथ uncommented, शीर्षक और मिटाए जाने से पहले एक समय के लिए अक्ष लेबल मौजूद थे। मैं चाहता हूं कि आकृति का अपना शीर्षक हो, प्रत्येक सबप्लॉट के पास अपने अक्ष लेबल हैं। इसे ठीक करने का सबसे आसान तरीका क्या है?

उत्तर

8

अक्ष लेबल के लिए, Matt is correct उनके बारे मेंBAR करने के लिए कॉल के बाद रखा जाना था। इससे एक धुरी लेबल समस्या का ख्याल रखेगा। हालांकि, आप शायद ध्यान दें कि विशेष रूप से आपके वाई-अक्ष लेबल एक दूसरे पर लिखे जा सकते हैं यदि वे बहुत लंबे हैं। इसे ठीक करने के लिए आपके पास कुछ विकल्प हैं। सबसे पहले, आप YLABEL करने के लिए अपने कॉल में फ़ॉन्ट आकार को समायोजित कर सकते हैं:

ylabel({'Number of' 'Occurrences'}); 
:

ylabel('Number of Occurrences','FontSize',7); 

दूसरे, आप एक cell array of strings सिर्फ एक स्ट्रिंग का उपयोग करने के बजाय द्वारा एक बहु लाइन लेबल में एक लंबे समय के लेबल में बदल सकते हैं

संपूर्ण आंकड़े में एक शीर्षक जोड़ने के लिए, सबसे अच्छा विकल्प शायद UICONTROL स्थिर टेक्स्ट ऑब्जेक्ट बनाने और इसकी स्थिति को समायोजित करने के लिए है ताकि यह आंकड़े के शीर्ष के पास स्थित हो।

figureSize = get(gcf,'Position'); 
uicontrol('Style','text',... 
      'String','My title',... 
      'Position',[(figureSize(3)-100)/2 figureSize(4)-25 100 25],... 
      'BackgroundColor',get(gcf,'Color')); 

यह चौड़ाई 100 पिक्सल और ऊंचाई 25 पिक्सल के एक स्थिर टेक्स्ट बॉक्स में रखा पैदा करेगा: आप आकार और यह आंकड़ा पहली की स्थिति में आप ऊपर और केंद्र के पास पाठ बॉक्स जगह मदद करने के लिए प्राप्त कर सकते हैं आकृति के शीर्ष के केंद्र और आकृति के समान पृष्ठभूमि रंग के साथ।

+1

मल्टीलाइन लेबल के बारे में नहीं पता था। साफ! – Jonas

+0

शीर्षक के लिए UICONTROL के उपयोग की तरह। एफजीआई MPGWRITE v6.0 (Matlab 2012a) का उपयोग करते समय फिल्म में दिखाई नहीं दे रहा है। –

2

जहां तक ​​मुझे पता है कि शीर्षक समारोह धुरी के एक सेट के सापेक्ष पाठ रखता है, इसलिए आकृति शीर्षक जैसी कोई चीज़ नहीं है। संभावित कामकाजों में केवल एक अच्छी तरह से रखे गए सबप्लॉट (जैसे कि पहले वाला, या शीर्ष पंक्ति का मध्य एक) के लिए शीर्षक का उपयोग करना शामिल है, या उस स्थान पर अक्षरों का एक सेट मैन्युअल रूप से बनाना जहां आप अपना शीर्षक चाहते हैं।

धुरी लेबल के लिए, बार कमांड के बाद लेबल कमांड डालने का प्रयास करें।

4

यहां एक समाधान है जिसे मैंने मैटलैब एक्सचेंज फ़ोरम पर कुछ समय पहले देखा था और यह मेरे लिए बहुत अच्छा काम करता था। आंकड़ा बनाने के बाद, निष्पादित आदेशों की निम्न क्रम:

set(gcf,'NextPlot','add'); 
axes; 
h = title('Intended Figure Title'); 
set(gca,'Visible','off'); 
set(h,'Visible','on'); 
+0

यह एकमात्र दूरस्थ रूप से देखा गया विकल्प है जिसे मैंने देखा है, और यह अभी भी मुझे छोड़ देता है "कुछ ऐसा जो कि एक वैज्ञानिक भाषा बनने के लिए डिज़ाइन किया गया है, और व्यापक रूप से ग्राफ की साजिश के लिए उपयोग किया जाता है, यह इतना कठिन क्यों है?" ;-) – Flyto

4

suptitle आप के लिए क्या देख रहे है।

यह सभी भूखंडों के ऊपर केंद्रित शीर्षक रखता है।

SUPTITLE Puts a title above all subplots. 
    SUPTITLE('text') adds text to the top of the figure 
    above all subplots (a "super title"). Use this function 
    after all subplot commands. 
+1

+1 MPGWRITE के साथ बनाई गई फिल्मों में इस समाधान का उपयोग करने वाला शीर्षक दिखाई देता है। –

+4

ध्यान दें कि सुपरटाइल कमांड * नहीं * आधार matlab में शामिल है। मुझे लगता है कि यह एक टूलबॉक्स का हिस्सा है जो मेरे पास नहीं है। – Flyto

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