Transforming two vectors (2D plot points) and color data (1D vector) into 2D matrix color data (for contour plot)
2 views (last 30 days)
Show older comments
Hi, I would like to transform two data vectors (A,B) and a vector of color data (C, between 0 and 1) into a 2D matrix with entry values corresponding to color (or height). Any tips would be appreciated. I tried using meshgrid but am not sure how to distribute my color data to each point within the newly formed matrix.
0 Comments
Accepted Answer
Aurele Turnes
on 8 Aug 2014
In order to distribute the color information in C to a 2D-grid of points indexed by (A,B), you would need the number of points in C to be equal to the number of points in the grid. So if A is a length N vector and B is a length M vector, C will need to have N*M entries. You will have to format C as a matrix of size N-by-M where entry C(i,j) corresponds to the height (or color) at the coordinate (A(i),B(j)) in the (x,y)-plane. Then, you can use the contour function as follows:
contour(A,B,C)
However, if all your vectors A, B and C are length N, you do not have enough information to fill in the color value for all the points in the grid formed by abscise A and ordinate B. You need additional information to fill in the color data for the missing point. For instance: do all the points with the same abscise A(i) correspond to the same color?
If you do not have the information for the missing points in the grid, you can try filling all the missing points with one value that is not already in C to create an artificial color level. Then the known points that correspond to coordinates (A(i),B(i)) with color C(i) will be on the diagonal of your new N-by-N matrix D. For instance, you can try:
% fill a matrix with value min(C)-1
D = (min(C(:))-1)*ones(N);
% put the known color points on the diagonal
D(sub2ind([N N], 1:N, 1:N)) = C;
% plot the contour levels
contour(A,B,D);
You can also specify which levels you want to draw (so that the artificial level created by adding the unknown points do not appear). For instance, picking one out of two values in C:
V = C(1:2:N);
contour(A,B,D,V);
0 Comments
More Answers (0)
See Also
Categories
Find more on Data Distribution Plots in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!