2010-07-30 49 views
6

Khi kết thúc xử lý dữ liệu trong MATLAB, tôi muốn tạo một biểu đồ hiển thị thanh thời gian màu cho một chuỗi dữ liệu. Tôi có một số quy trình mà mỗi quá trình đi qua các bước tương tự, và bắt đầu và dừng lại và khác nhau tại các thời điểm khác nhau. Lý tưởng nhất là nó muốn kết thúc tìm kiếm một cái gì đó như thế này (tha thứ nghệ thuật ASCII):Tạo đồ họa kiểu 'dòng thời gian' trong MATLAB

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

đâu #*$ đang đứng cho vững chắc, khối liền kề của các màu sắc khác nhau (một màu cho mỗi bước các quá trình đi qua; lưu ý một số là tùy chọn).

Nhãn có thể ở nơi khác, nhưng bên cạnh mỗi dòng là tốt.

Tôi đã tấn công cùng nhau một giải pháp sử dụng rectangletext, nhưng có vẻ như đây có thể là loại âm mưu hiện có trong MATLAB mà tôi chưa tìm thấy. Bạn có biết một trong những?

Trả lời

9

Sử dụng barh. Đặt cột đầu tiên làm thời gian xử lý ban đầu của bạn

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: Rất tốt, mặc dù tôi có thể thực hiện một sửa đổi nhỏ. Màu nền của các trục thường là màu trắng theo mặc định, nhưng chỉ trong trường hợp nó không phải là bạn có thể làm điều này thay vào đó: 'axesColor = get (gca, 'Color'); thiết lập (h (1), 'FaceColor', axesColor, 'EdgeColor', axesColor); ' – gnovice

+2

@gnovice: bạn có thể chỉ cần đặt màu là' 'none'' – Amro

+0

@Amro: Ah vâng. Tôi hoàn toàn quên rằng sẽ làm việc trên đồ thị thanh. Đó là một lựa chọn tốt hơn. – gnovice

Các vấn đề liên quan