2012-08-15 17 views
6

क्या नीचे एक जैसा सेल सरणी से हिस्टोग्राम बनाने का कोई सीधा तरीका है? लगातार सलाखों के बीच की दूरी बिल्कुल वही होनी चाहिए और एक्स-अक्ष के लेबल लंबवत अभिविन्यास में नीचे चर के समान नाम होना चाहिए।गिनती तारों के अवसर और साजिश हिस्टोग्राम

'w464' 
'w462' 
'w461' 
'w464' 
'w461' 
'w463' 
'w466' 
'w461' 

उत्तर

8

मैं भी एक बेहतर तरीका जानना चाहता हूं। Fwiw, मैंने इस तरह के डेटा प्लॉट करने के लिए एक चौराहे के रास्ते में countmember का उपयोग किया है। अर्थात। यदि डेटा तुम्हें तैनात A

>> B={sort(unique(A)) countmember(sort(unique(A)),A)}; 
>> bar(B{2}); 
>> set(gca,'XTickLabel',B{1}) 
+1

ओह, अपने लेबल के अभिविन्यास को बदलने के लिए, [घुमाएं एक्स-अक्ष टिक लेबल] देखें (http://www.mathworks.com/matlabcentral/fileexchange/27812-rotate-x-axis-tick-labels) फ़ाइल एक्सचेंज से। – AGS

+0

फिर से धन्यवाद! आप मेरे हीरो हैं! : डी – user706838

+0

हे! खुशी है कि यह मदद करता है। – AGS

5

नामित किया गया था आप आँकड़े टूलबॉक्स में पहुँच है, तो grp2idx बहुत उपयोगी है:

%# sorting is only necessary if the output should be sorted as well 
[idx,label] = grp2idx(sort(A)) 

hist(idx,unique(idx)); 
set(gca,'xTickLabel',label) 
3

एक समाधान है कि केवल बिल्ट-इन कार्य

[u,~,n] = unique(A(:)); 
B = accumarray(n, 1, [], @sum); 
bar(B) 
set(gca,'XTickLabel',u) 
का उपयोग करता है
1

आप हिस्टोग्राम फ़ंक्शन का भी निम्न प्रकार उपयोग कर सकते हैं:

[C,~,ic] = unique(A); 

fig1 = figure; 
axes1 = axes('Parent',fig1,'XTickLabel',C,'XTick',1:length(C)); 
hold(axes1,'on'); 

histogram(ic)