2010-07-30 7 views
6

À la fin d'un traitement de données dans MATLAB, je souhaite créer un tracé qui affiche des barres de montage chronologiques colorées pour une série de données. J'ai un certain nombre de processus qui passent chacun par des étapes similaires, et commencent et s'arrêtent et différent à différents moments. Idéalement, il finirait regarder quelque chose comme ça (pardonnez l'art ASCII):Création d'un graphique de style «timeline» dans MATLAB

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

#* et $ sont debout dans des solides, des blocs adjacents de couleurs différentes (une couleur par étape, les processus passent par; notez que certains sont facultatifs).

Les étiquettes pourraient être ailleurs, mais à côté de chaque ligne est bon.

J'ai piraté une solution en utilisant rectangle et text, mais il semble que ce soit un type de tracé existant dans MATLAB que je n'ai pas encore trouvé. Connaissez-vous un?

Répondre

9

Utilisez barh. Définir la première colonne comme votre temps de traitement initial

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: Très bien, même si je pourrais faire une petite modification. La couleur d'arrière-plan des axes est généralement blanche par défaut, mais au cas où ce n'est pas le cas, vous pouvez le faire à la place: 'axesColor = get (gca, 'Color'); set (h (1), 'FaceColor', axesColor, 'EdgeColor', axesColor); ' – gnovice

+2

@gnovice: vous pouvez simplement définir les couleurs comme '' none '' – Amro

+0

@Amro: Ah oui. J'ai complètement oublié que cela fonctionnerait sur les graphiques à barres. C'est une meilleure alternative. – gnovice

Questions connexes