Patch color error "Vectors must be the same length."
6 views (last 30 days)
Show older comments
I am trying to plot 2 patchs with different color. " patch(x, y, c, 'FaceColor', 'flat');" shows error "Vectors must be the same length.". How to setup the color?
x =[ 1 2
1 2
2 3
2 3];
y =[1 2
2 3
2 3
1 2];
c=[0 0.7344
0 1.0000
0.5156 0.2656];
figure;
patch(x, y, 'r');
figure;
patch(x, y, c, 'FaceColor', 'flat');
Thanks,
cfy30
2 Comments
Geoff Hayes
on 29 Jun 2020
cfy30 - which of the effects from C - polygon colours are you interested in? Because that will tell you what the dimensions for C should be.
Accepted Answer
Tommy
on 29 Jun 2020
The docs linked by Geoff mention that you can specify an n-by-1-by-3 array of RGB values (for n number of faces). I've defined c to be an n-by-3 array of RGB values and then used reshape() to get the dimensions right:
c=[0 0 0.5156 % <- RGB of first color
0.7344 1.0000 0.2656]; % <- RGB of second color
figure;
patch(x, y, reshape(c,[],1,3), 'FaceColor', 'flat');
More Answers (1)
Ameer Hamza
on 29 Jun 2020
Edited: Ameer Hamza
on 29 Jun 2020
Using for-loop seems to be the simplest solution in this case.
x =[ 1 2
1 2
2 3
2 3];
y =[1 2
2 3
2 3
1 2];
c=[0 0.7344
0 1.0000
0.5156 0.2656];
figure;
for i=1:size(x,2)
patch(x(:,i), y(:,i), c(:,i).');
end
See Also
Categories
Find more on Polygons in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!