2014-07-14 17 views
7

Ho il seguente dati che desidero tracciare in un grafico a barre in MatLab:Come visualizzare tutte le etichette x sul grafico 'bar'?

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'}) 

Tuttavia, quando eseguo questo, ottengo il seguente grafico:

enter image description here

Ovviamente la l'etichetta x non è corretta in quanto la prima barra dovrebbe avere l'etichetta x 'G1', la seconda dovrebbe avere 'G2', ecc., fino all'ultima barra che dovrebbe avere 'G23'.

Se qualcuno sa come posso risolvere questo problema, lo apprezzerei davvero molto!

risposta

7

Aggiungere la seguente riga:

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

prima di impostare le etichette.

Ora dipende da quanto è grande la trama risultante, perché le etichette sono un po 'imballate. È possibile regolare il carattere o l'orientamento o gli spazi tra le barre.

Probabilmente i nomi delle pubblicazioni sono un po 'più lunghi quindi una rotazione di 90 ° è la migliore e potresti trovare this answer o questo link utile.

Un altro suggerimento sarebbe quello di utilizzare barh e ruotare dopo stampa:

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

Se si preferisce utilizzare una certa rotazione diverso da 90 °, probabilmente questa funzione da Matlab centrale può essere utile: http : //www.mathworks.com/matlabcentral/fileexchange/27812-rotate-x-axis-tick-labels –

+1

Grande! Grazie mille per il vostro aiuto! Lo apprezzo davvero. – Kristian

Problemi correlati