Output of Function in Form of 'Color',[0 0.2 0.4]!
2 views (last 30 days)
Show older comments
Dear Community, I want to write a Function clrs('color') which returns 'Color',[0 0.2 0.4] as an argument so that I can do plot(x,y,clrs('green')); I tried it with str = ' ''Color'',[0 0.2 0.4] '; and with eval but it doesn't work. Do you have any idea how i can do that?
function [out] = clrs(color)
if (strcmp('blue',color) == 1)
value = [0 0.447 0.741];
end
out{1} = 'Color';
out{2} = value;
end
plot([1 2],[1 2],'x',clrs('blue'));
1 Comment
Adam
on 1 Nov 2017
Off the top of my head I don't think that is possible. To pass two distinct arguments to the plot function they would have to be in e.g a cell array as
args = { 'color', [0 0.2 0.4] };
Then you can pass
plot( ..., args{:} )
but I don't think there is any syntax that allows you to return multiple arguments out of a function and pass them to another. You cannot chain a {:} on the end of a function call either unless I am much mistaken.
Answers (4)
M
on 1 Nov 2017
clrs('blue')
returns
ans =
'Color' [1x3 double]
so you cannot use it directly in the plot command.
First you need to access :
b=clrs('blue')
b =
'Color' [1x3 double]
and then get the value
b{2}
ans =
0 0.4470 0.7410
0 Comments
Steven Lord
on 1 Nov 2017
One alternative would be to write a function named setcolor that accepts a handle of the line you plotted and sets its Color property.
setcolor = @(h, newcolor) set(h, 'Color', newcolor);
h = plot(1:10, 1:10);
pause % so you can see the original color
setcolor(h, 'r')
For simple demonstration purpose I wrote a basic setcolor as an anonymous function. You can create a more powerful and more complicated version as a regular function file.
0 Comments
See Also
Categories
Find more on Line Plots in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!