2nd Y Axis problem - All works until I add the 2nd data set
12 views (last 30 days)
Show older comments
Hello Community,
I am having difficulty with plotting to a second axis. Everything works fine until I actually try to add the 2nd Y data. I have tried various combinations of 'plotyy' and 'yyaxis right' etc. but the code below is the closest I have got to make this work. I think an added complication is that I am trying to plot 4 lines on X1,Y1 and points on X2, Y2 - but these points also relate to the same X - so in effect X1 and X2 are actually the same. My plotting code is as follows:
figure, plot(pih(:,1),'k'), hold on, plot(pih(:,2),'r'), plot(pih(:,3),'m'), plot(pih(:,4),'g'),
xlabel('Index')
ylabel('ORM')
set(gca,'Box','off');
axesPosition = get(gca,'Position');
hNewAxes = axes('Position',axesPosition,...
'Color','none',...
'YLim',[0 4],...
'YAxisLocation','right',...
'XTick',[],...
'Box','off');
ylabel(hNewAxes,'Group');
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/161954/image.jpeg)
and that gives the 'OK' figure above - happy with this so far, but when I try to add the data for the Y2 with this:
plot(gca,df4CAT,'*')
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/161957/image.jpeg)
The result is this 'problem' figure which has overwritten.
I think that there are 2 problems - firstly, that I am not handling the 'X' axis situation properly, and the second of course that the Y2 data is not writing to the figure using the correct axis, resulting in the overwrite.
Could anyone help with these problems please?
Regards,
10B.
0 Comments
Accepted Answer
Mike Garrity
on 20 Apr 2016
I think that the problem is that the plot function resets a lot of the axes properties that you set when you created the 2nd axes. Could you set those after the call to plot? Like so:
figure
plot(randi(10,[1 100]),'k')
hold on
plot(randi(10,[1 100]),'r')
plot(randi(10,[1 100]),'m')
plot(randi(10,[1 100]),'g')
xlabel('Index')
ylabel('ORM')
set(gca,'Box','off')
% Create 2nd axes
axesPosition = get(gca,'Position');
hNewAxes = axes('Position',axesPosition);
% Plot into it
plot(hNewAxes,randn(1,100))
% Customize 2nd axes
set(hNewAxes,'Color','none',...
'YLim',[0 4],...
'YAxisLocation','right',...
'XTick',[],...
'Box','off');
ylabel(hNewAxes,'Group')
The other option would be to set hold on after you create the axes:
hold(hNewAxes,'on')
and before the call to plot. The plot function doesn't reset a lot of properties if hold is on.
More Answers (0)
See Also
Categories
Find more on Axis Labels 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!