How do I check if a value is a correct color?

Whether there is a function like
logical = isvalidcolor(value)
to check if some value may be used like a color (one of values specified in ColorSpec e.g.)

 Accepted Answer

Not that I'm aware of - there's just not that much need - though you could write one if you want.

4 Comments

Thanks a lot!
But I have hoped I will not write this ))
If it's not 'r', 'b', and so on, what will you do? Announce an error? Well whatever function you'd pass the "bad" color code into will announce an error also, so why do you need to do it also?
It's a good question! I havn't known about announcing an error by uicontrol or some else.
You could do something like
message = sprintf('%s is an invalid color. Please use r, g, b, y, m, c, k, or w', theirColor);
uiwait(warndlg(message));
return;

Sign in to comment.

More Answers (2)

Tommy
Tommy on 6 Dec 2015
Edited: Tommy on 6 Dec 2015
Once I needed this function to suppress error messages, by setting wrong color values to MATLAB default. I used:
function logical_out = iscolor( color )
color = lower(color);
logical_out=(isnumeric(color) && (sum(size(color)==[1 3])==2 || ...
sum(size(color)==[3 1])==2) && sum((color<=[1 1 1] & ...
color>=[0 0 0]))==3) || sum(strcmpi({'y','m','c','r','g','b','w','k',...
'yellow','magenta','cyan','red','green','blue','white','black'},color))>0;
end
Hope this helps.

6 Comments

I'd add as the first line
color = lower(color);
It will make it more robust by handling upper case characters and words also.
Thanks! I adapted it.
Actually, doesn't using strcmpi eliminate the need to use color = lower(color); ?
Yes. Maybe he adapted that part also after my comment.
Well that helps until that point somebody specifies the color as hexadecimal value or integer from 0 ...255. Hope mathworks creates a validate color function :/
Matlab 2020b has a validatecolor function.

Sign in to comment.

In Matlab 2020b and later, use the validatecolor function.

Asked:

on 16 Jul 2014

Answered:

on 20 Aug 2021

Community Treasure Hunt

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

Start Hunting!