2012-12-18 71 views
5

Tôi muốn vẽ đồ thị phân tán đơn giản trong MATLAB, với màu đánh dấu thay đổi từ một đầu của quang phổ đến đầu kia (ví dụ: đỏ, cam, vàng .... xanh dương, tím).Làm cách nào để tạo một ô phân tán có màu đánh dấu tốt nghiệp trong MATLAB?

Dữ liệu của tôi so sánh lượng nước trong một dòng sông với chất lượng của nước, theo thời gian (3 cột đơn giản: thời gian, số lượng, chất lượng). Tôi muốn vẽ cốt truyện x, y của số lượng so với chất lượng, nhưng với màu sắc tiến triển theo thời gian, để có thể thấy sự tiến triển của chất lượng theo thời gian.

Tôi sẽ cần tạo nhiều biểu đồ thuộc loại này, vì vậy nếu tôi có thể tìm thấy một đoạn mã sẽ hoạt động với bất kỳ độ dài tập dữ liệu nào, điều đó thực sự hữu ích.

Rất cám ơn trước vì đã giúp một người mới làm quen với Matlab!

Trả lời

10

Bạn có thể sử dụng đối số màu sắc của scatter

Nếu dữ liệu của bạn đã được sắp xếp trong thời gian hơn so với chỉ đơn giản là sử dụng:

% let n be the number of points you have 
cmp = jet(n); % create the color maps changed as in jet color map 
scatter(x, y, 10, cmp, 'filled'); 

Nếu không, bạn cần phải sắp xếp dữ liệu của bạn đầu tiên:

[time, idx] = sort(time); 
x = x(idx); 
y = y(idx); 
cmp = jet(n); % create the color maps changed as in jet color map 
scatter(x, y, 10, cmp, 'filled'); 
+1

Thật tuyệt vời! Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn, điều này đơn giản hơn nhiều so với một số mã khác để làm những việc tương tự mà tôi đã cố gắng hiểu và chính xác những gì tôi cần. – user1913275

2

Cách đơn giản nhất để tô màu một ô phân tán bằng một biến bổ sung là chỉ cần chuyển nó thành đối tượng "màu". Giả sử bạn có x, ytime (trong đó thời gian là một vector số. Nếu thời gian chứa chuỗi ngày thay thế, hãy gọi datenum trên đó, trước tiên). Sau đó, bạn có thể viết

scatter(x,y,[],time,'filled') 

Trục màu sau đó sẽ cho bạn biết điểm nào phù hợp với màu cụ thể. Quan trọng hơn, điều này sẽ nâng cao màu sắc ngay cả trong trường hợp thời gian giữa các phép đo không đồng đều.

/sang một bên: Bản đồ mặc định là jet, điều này khá tệ khi trực quan hóa chuyển tiếp trơn tru, tôi khuyên bạn nên tải xuống perceptually improved colormap từ Trao đổi tệp. Để sử dụng nó để đặt bản đồ màu, bạn có thể gọi

cmap = pmkmp(length(time)); 
colormap(cmap); 
Các vấn đề liên quan