2nd Y Axis problem - All works until I add the 2nd data set
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
Mike Garrity
am 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Two y-axis finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!