2012-04-14 43 views
7

Khi tôi vẽ một số đường cong trên cùng một ô sử dụng hold on, mỗi đường cong mặc định có cùng màu (xanh dương). Tôi muốn họ có tất cả các màu sắc khác nhau.Chu kỳ trên màu sắc trong khi vẽ trong MATLAB

Một giải pháp mà tôi đã thấy là tạo ra một véc tơ màu, ví dụ: c = ['k', 'g', 'r', ...] và lặp lại nó, nhưng tôi không thích giải pháp này. Mọi thứ sẽ vỡ nếu số ô của tôi lớn hơn chiều dài của màu vector c và tôi không muốn phải xác định c trong mọi tệp.

Có giải pháp nào tốt hơn không?

+0

thể trùng lặp của [Tự động vẽ đường màu khác nhau] (http: // stackoverflow. com/questions/2028818/automatic-plot-different-colored-lines) – chappjc

Trả lời

11

Hãy thử sử dụng hold all để thay thế. Đường cong của bạn sẽ tự động xoay vòng trên bản đồ màu. Từ help hold:

giữ tất cả giữ đồ thị và màu đường và dòng hiện phong cách rất rằng lệnh âm mưu tiếp theo không reset ColorOrder và giá trị tài sản LineStyleOrder đến đầu danh sách. Lập biểu đồ lệnh tiếp tục đi xe đạp qua các màu được xác định trước và đường kẻ các kiểu từ nơi biểu đồ cuối cùng dừng lại trong danh sách.

Bạn có thể kiểm tra bản đồ màu với get(gca,'ColorOrder').

+0

Tuyệt vời, tôi biết rằng phải có một giải pháp đơn giản. –

+0

Từ cùng một trang: "giữ tất cả giống như giữ trên. Lưu ý: Cú pháp này sẽ bị xóa trong bản phát hành trong tương lai. Thay vào đó hãy sử dụng tính năng giữ." –

3

Bạn cũng có thể thay đổi thuộc tính mặc định 'ColorOrder' đối với môi trường toàn cầu thực hiện:

set(0,'DefaultAxesColorOrder',hsv(10)) 

nơi tôi thay thế các màu sắc mặc định cho một bộ 10 màu sắc do hsv colormap. Tất nhiên, bạn cũng có thể đặt bất kỳ bộ màu nào khác bằng cách sử dụng một trong các máy tạo màu màu (hsv, hot, cooper, lines, ..., sử dụng doc colormap để biết thêm chi tiết), như tôi đã làm trước đây hoặc chỉ cần đặt bất kỳ nx 3 ma trận. Trong trường hợp bạn muốn sử dụng danh sách các màu sắc: {đen, xanh lá cây, đỏ} để trục hiện nay bạn sẽ làm gì:

set(gca,'ColorOrder', [0 0 0; 1 0 0; 0 1 0]) 
Các vấn đề liên quan