Patch Multiple Specified Colors

15 views (last 30 days)
Is there a way to create more than one polygon and fill them with different colors specified by the user? I know that with patch function, there is a way to create random colors for them, and there is a way to create just one color for all the polygons, but I don't know how to specify that, for instance, I want the first polygon to be red and the second to be green. For example:
X = [0 0; 0 0; 4 4];
Y = [0 4; 3 7; 0 4];
C = [.25; .75]
p = patch(X,Y,C)
This creates two triangles, with the triangle on top as yellow and the triangle on the bottom as purple. But how do I make it such that the triangle on top is red, and the triangle on the bottom is green? Ideally, this would be accomplished without a loop?
Long story short: I want to be able to apply conditional formatting to a wide array of values. But it seems cumbersome to do them one color at a time.

Accepted Answer

Star Strider
Star Strider on 18 May 2019
The simplest way is probably to define a colormap for the figure.
Try this:
X = [0 0; 0 0; 4 4];
Y = [0 4; 3 7; 0 4];
C = [.25; .75];
colormap([0 1 0; 1 0 0]);
p = patch(X,Y,C);
There are likely a number of differnt ways to do this, depending on the result you want. I encourage you to experiment.

More Answers (1)

Hadrien Bériot
Hadrien Bériot on 24 Oct 2019
I personally use a random vector
FaceValue = rand(1,size(Element,2))';
patch('Faces',Element','Vertices',Coord','FaceVertexCData',FaceValue,'FaceColor','flat','EdgeColor','k');
colormap(hsv(100))

Community Treasure Hunt

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

Start Hunting!