# Patch color error "Vectors must be the same length."

5 views (last 30 days)
cfy30 on 29 Jun 2020
Commented: cfy30 on 29 Jun 2020
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 CommentsShowHide 1 older comment
cfy30 on 29 Jun 2020
Hi Geoff,
I want to set the face color of the patch by the RGB color. Any easy way to do so?
Thanks,
cfy30

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');
cfy30 on 29 Jun 2020
Thanks Tommy! It works!

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
cfy30 on 29 Jun 2020
Thanks Ameer. I used for-loop but want to experiment without it. When I plot up to like 1000 patchs, copy and paste the figure in emf formatting to Word/Powerpoint becomes very big. I want to see if the issue is because of the for-loop used.