Two y axis without using plotyy
3 views (last 30 days)
Show older comments
Hello, below you can see the structure of my plot. At the moment Im using the same y axis for every plot but I want to use two different y axis. One for the bar plot (patch...) and a second one for the other plots. How can i do this?
f(8) = figure('Units','pixels',...
'position',[fLeft fBottom fWidth fHeight],...
'PaperType','A4',...
'PaperOrient','portrait',...
'PaperPositionMode', 'manual');
set(gcf, 'color', GrayLight);
set(gcf, 'InvertHardCopy', 'off');
AxH = axes('NextPlot','add');
for k1 = 1:size(...)
hLine=patch(...);
end
plot(...,...)
hold on
grid on
datacursormode on
title(...)
xlabel(...)
ylabel(...)
xlim(...)
ylim(...);
plot(...,...)
hold on
plot(...,...)
legend({'...'},...
'Position',[....
'FontSize',LegendFontSize,...
'Color',Gray);
xTick=...
set(gca,'Color',GrayLight, 'XTick', xTick);
0 Comments
Accepted Answer
Stephen23
on 27 Jul 2018
Edited: Stephen23
on 27 Jul 2018
Create two axes. For the top axes set the YAxisLocation to right, the Color to none, and NextPlot to replacechildren.
For example:
>> ax1 = axes();
>> ax2 = axes('YAxisLocation','right','Color','none','NextPlot','replacechildren');
>> plot(ax1,0:3,0:3)
>> plot(ax2,0:3,sqrt(0:3))
giving:
Do not use gcf and gca: always obtain and use the explicit handles for all graphics objects that you need to refer to.
5 Comments
Stephen23
on 27 Jul 2018
Not all versions of MATLAB allow the first input argument of patch to be an axes handle. To know what your installed version does always refer to the installed help, not the online help. Note that you can provide the axes handle as a Name-Value input argument:
patch(...,'Parent',ax1)
For example:
>> axh = axes();
>> patch([0,0.5,1],[0,1,0],1,'Parent',axh)
generates this:
More Answers (0)
See Also
Categories
Find more on Two y-axis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!