MATLAB Answers

Wrong color showed by "imagesc" function, what am I doing wrong?

2 views (last 30 days)
Hi I have a 3x3 matrix of p-values and I want to display it using a colored grid. I am using the "imagesc" function with a "Copper" color map. One of the grids is coming out in wrong color. What am I doing wrong?
The Matrix is as follows -
resPval =
0.9996 1.0000 1.0000
0.2973 0.9918 1.0000
1.0000 1.0000 1.0000
And I am using the following code the generate the figure-
colormap('copper')
imagesc(resPval)
for i=1:3
for j=1:length(betaVal)
Pstr=num2str(resPval(i,j),8);
if resHval(i,j); Hstr='H_o Rejected'; col='b'; else Hstr='H_o Accepted'; col='r'; end
text(i,j,{Pstr,Hstr},...
'HorizontalAlignment','center',...
'VerticalAlignment','middle',...
'BackgroundColor','w',...
'Color',col);
end
end
set(gca,'YTick',1:length(betaVal),'YTickLabel',colNames,'XTick',1:3,'XTickLabel',rowNames(1:3))
This is the figure I am getting-
Why am I getting that black block? Please help me if someone knows.

  1 Comment

Image Analyst
Image Analyst on 7 Mar 2015
The error we get is :
Undefined function or variable 'betaVal'.
Error in test3 (line 8)
for j=1:length(betaVal)

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 7 Mar 2015
The value of resPval is 0.2973 so it shows up in a different color, whereas the other values are all within 1/64 of 1. Since you didn't specify a number of colors, it will use a 64 color colormap and so all values in the range [1-1/64, 1] will be the same color. The one value is for 0.2973 which is not in that range and thus appears with a different color. Which of the two colors you're displaying do you consider the "wrong" color, and why? It's just doing exactly what you told it to.

  3 Comments

Udit Gupta
Udit Gupta on 7 Mar 2015
I am talking about (SDR, Beta_50) which is the big black patch.
Image Analyst
Image Analyst on 7 Mar 2015
By the way, your label locations are wrong. You're using resHval(i,j) for the values, but in text(x,y,string) you're using text(i,j,string). But i is row, which is the y value, and j is the column which is the x value. So you're really doing text(y, x, string), not text(x,y,string) like you think. Don't worry - it's a very very common mistake that all novices make: mixing up row,column with x,y.
Udit Gupta
Udit Gupta on 7 Mar 2015
Aah I get it now, the black color is for the 0.2973 value, I am just plotting it wrong. Thanks for your help.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!