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

6 ビュー (過去 30 日間)
cfy30
cfy30 2020 年 6 月 29 日
コメント済み: cfy30 2020 年 6 月 29 日
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 件のコメント
Geoff Hayes
Geoff Hayes 2020 年 6 月 29 日
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.
cfy30
cfy30 2020 年 6 月 29 日
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
Tommy 2020 年 6 月 29 日
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');
  1 件のコメント
cfy30
cfy30 2020 年 6 月 29 日
Thanks Tommy! It works!

サインインしてコメントする。

その他の回答 (1 件)

Ameer Hamza
Ameer Hamza 2020 年 6 月 29 日
編集済み: Ameer Hamza 2020 年 6 月 29 日
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
  1 件のコメント
cfy30
cfy30 2020 年 6 月 29 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangePolygons についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by