2014-07-14 7 views
7

Mam następujące dane, które pragnę wykreślić na wykresie słupkowym w Matlab:Jak wyświetlić wszystkie etykiety X na wykresie "słupkowym"?

publications = [15 12 35 12 19 14 21 15 7 16 40 28 6 13 16 6 7 22 23 16 45]; 
bar(publications,0.4) 
set(gca,'XTickLabel',{'G1','G2','G3','G4','G5','G6','G7','G8','G9','G10',... 
    'G11','G12','G14','G16','G17','G18','G19','G20','G21','G22','G23'}) 

Jednak, kiedy mogę wykonać to, mam następujące działki:

enter image description here

Oczywiście x-etykieta jest tutaj niepoprawna, ponieważ pierwszy słupek powinien mieć znak X "G1", drugi powinien mieć "G2", itd., aż dojdziemy do ostatniego taktu, który powinien mieć "G23".

Jeśli ktokolwiek wie, jak to naprawić, naprawdę, naprawdę to doceniam!

Odpowiedz

7

Dodaj następujący wiersz:

set(gca,'XTick',1:numel(publications)) 

przed ustawieniem etykiet.

Teraz zależy od tego, jak duża jest twoja powstała fabuła, ponieważ etykiety są trochę spakowane. Możesz dostosować rozmiar czcionki lub orientację lub odstępy między kreskami.

Prawdopodobnie nazwy publikacji są nieco dłuższe, więc obrót o 90 ° jest najlepszy, a pomocna może być this answer lub ta link.

Inna sugestia byłoby użyć barh i obracać po wydruku:

publications = [15 12 35 12 19 14 21 15 7 16 40 28 6 13 16 6 7 22 23 16 45]; 
bh = barh(publications,0.4) 
set(gca','XAxisLocation','top') 
set(gca,'YTick',1:numel(publications)) 
set(gca,'YTickLabel',{'G1','G2','G3','G4','G5','G6','G7','G8','G9','G10',... 
    'G11','G12','G14','G16','G17','G18','G19','G20','G21','G22','G23'}) 

enter image description here

+2

Jeśli wolisz korzystać z niektórych rotacji różny od 90 °, prawdopodobnie ta funkcja z Matlab Środkowej mogą być przydatne: http : //www.mathworks.com/matlabcentral/fileexchange/27812-rotate-x-axis-tick-labels –

+1

Świetnie! Bardzo dziękuję za Twoją pomoc! Naprawdę to doceniam. – Kristian