MATLAB Answers

## Passing parameters to plot() and axes() functions?

Asked by Knut

### Knut (view profile)

on 28 Jun 2018
Latest activity Edited by Stephen Cobeldick

### Stephen Cobeldick (view profile)

on 28 Jun 2018
I would like to make a function that adds functionality on top of plot. I.e. a specialized plot. Say,
function my_plot(varargin)
plot(varargin{1}, varargin{2}, 'r');
axis square;
end
When calling this, I might like to pass additional parameters:
my_plot(x, y, 'title', 'Hello');
Now, I could do this by explicitly capturing each passed parameter, but this quickly become tedious. I would rather pass a generic array ala the snip below, where parameter/value pairs are simply relayed directly to the plot function:
PlotOpts.LineStyle = '-.';
PlotOpts.Color = [0 1 0];
plot(rand(10,1),PlotOpts);
However, after some fudging around, I did not find a similar way of using axes ala:
h = axes();
AxesOpts.XLabel = 'Real';
AxesOpts.XLim = [0 1];
set(h, AxesOpts);

#### 0 Comments

Sign in to comment.

## 1 Answer ### Stephen Cobeldick (view profile)

Answer by Stephen Cobeldick

### Stephen Cobeldick (view profile)

on 28 Jun 2018
Edited by Stephen Cobeldick

### Stephen Cobeldick (view profile)

on 28 Jun 2018

Simple option: use varargin:
function myplot(X,Y,varargin)
plot(X, Y, 'r', varargin{:})
More complex option: convert options struct to cell array:
function myplot(X,Y,S)
C = reshape(fieldnames(S),1,[]);
C(2,:) = struct2cell(S);
plot(X, Y, 'r', C{:})
See:
I wrote explicit argument names for X and Y for this reason:

#### 0 Comments

Sign in to comment.