2010-07-12 69 views
21

Tôi có 6 véc tơ mà tôi muốn vẽ. Làm thế nào tôi có thể làm cho mỗi ô có màu khác nhau (ngẫu nhiên)? Với mã bên dưới, cốt truyện giới hạn một màu cho tất cả sáu vectơ.Matlab chọn màu ngẫu nhiên để vẽ sơ đồ

plot(x,y,'-rs','LineWidth',1,... 
     'MarkerEdgeColor','k',... 
     'MarkerFaceColor','g',... 
     'MarkerSize',5); 
+0

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

Trả lời

40

Bạn có thể tự động chọn màu đường kẻ cho PLOT. Nếu tất cả 6 trong số các vectơ của bạn có cùng độ dài, bạn có thể đặt tọa độ x và y thành các ma trận N-by-6 XY và chuyển chúng đến PLOT. Một màu sắc khác nhau sẽ được sử dụng cho mỗi cột:

plot(X,Y,'-s'); %# Plots lines with square markers 

Bạn cũng có thể sử dụng một số được xây dựng trong colormaps để tạo ra một tập hợp các màu sắc, sau đó sử dụng những khi bạn vẽ mỗi dòng riêng biệt. Ví dụ:

cmap = hsv(6); %# Creates a 6-by-3 set of colors from the HSV colormap 
for i = 1:6  %# Loop 6 times 
    plot(X(:,i),Y(:,i),'-s','Color',cmap(i,:)); %# Plot each column with a 
               %# different color 
end 
+0

cảm ơn bạn rất nhiều. Tôi tự hỏi, nếu tôi có ví dụ 21 vector khác nhau, tôi có thể thay đổi cmap = hsv (6) thành cmap = hsv (21) – Jessy

+0

@Jessy: Có, 'hsv (N)' sẽ trả về bản đồ màu N-by-3 với một màu RGB mỗi hàng. – gnovice

+2

+1 để sử dụng bản đồ màu. Tôi đã tìm thấy rằng màu sắc hoàn toàn ngẫu nhiên hoạt động rất kém cho mục đích hiển thị - độ tương phản giữa màu sắc thường không đủ và màu quá sáng hoặc quá tối. Việc lấy mẫu đồng đều dọc theo một trong các bản đồ màu tiêu chuẩn mang lại nhiều kết hợp màu dễ chịu và dễ đọc hơn. – Kena

4

Để tạo một bản đồ màu sắc ngẫu nhiên, bạn có thể làm như sau

myMap = rand(nbColors, 3); 
for i = 1:nbColors 
    plot(X(:,i),Y(:,i),'-s','Color',myMap(i,:)); 
end 

Tuy nhiên, như tôi đã nói trong bình luận của tôi để trả lời gnovice của, chọn màu sắc ra khỏi một colormap thường cung cấp nhiều các kết hợp màu dễ đọc hơn.