change color of output graph

4 views (last 30 days)
I have a matlab plot (draw rectangle using matrix) but it shows the output in blue color whereas i want it in black color. How can i change it to black color ?
a = ones(256, 256, 3);
a(10:110,40:140)=0;
a(120:200,120:200)=0;
image(a)
I want the intensity of each square to be different actually. One should have intensity 100 and the other to be 300.

Accepted Answer

Geoff Hayes
Geoff Hayes on 2 Mar 2016
Anvinder - the problem is with the following two lines
a(10:110,40:140)=0;
a(120:200,120:200)=0;
Remember, a is a 256x256x3 matrix. In the above, you are only setting the Red component to zero. These two lines would be equivalent to
a(10:110,40:140,1)=0;
a(120:200,120:200,1)=0;
If you want the squares to be black, then you need to set all three components (red, green, and blue) to zero using
a(10:110,40:140,:)=0;
a(120:200,120:200,:)=0;
When I try the above, the pale blue squares are replaced with black ones.
  2 Comments
Anvinder  Singh
Anvinder Singh on 2 Mar 2016
Thanks Geoff, This is awesome. I didnt think about the third component at all. One more query, If i need to vary the intensity of the squares to some other grayscale value then should i do it by replacing '0' in the equation above or do something else ?
Geoff Hayes
Geoff Hayes on 2 Mar 2016
Yes, Anvinder. Just use any value between 0 and 255.

Sign in to comment.

More Answers (2)

Image Analyst
Image Analyst on 2 Mar 2016
You can use an indexed image if you don't want an RGB image and want values of 0, 100, and 300, and want the 100 and 300 both to show up as black. Just set up a colormap and apply it.
a = zeros(256, 256);
a(10:110,40:140) = 100;
a(120:200,120:200) = 300;
imshow(a, []);
cMap = [1,1,1;0,0,0]
colormap(cMap);
colorbar
caxis([0, 100]);
  1 Comment
Anvinder  Singh
Anvinder Singh on 2 Mar 2016
Thank you Image analyst ! That looks good to implement!

Sign in to comment.


Muhammad Usman Saleem
Muhammad Usman Saleem on 2 Mar 2016
Edited: Muhammad Usman Saleem on 2 Mar 2016
Accept this answer if satisfy your question
try
plot(array1,array2,'k')%k stand for black color
for more reading,
  1 Comment
Anvinder  Singh
Anvinder Singh on 2 Mar 2016
plot(array1,array2,'k')%k stand for black color doesnt work for this plot. Why will i get blue plot in the first place when i give the value of the two rectangular matrices =0 ? Shouldnt it give a black rectangle ?
Is there a way to change the color of the rectangles i plot using matrix such that each rectangle can have different intensity..

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!