plotyy in for loop only plots half of the data
2 views (last 30 days)
Show older comments
Hi guys,
i don't know what to do further. I have this problem since 3 days and i just can't find a solution. I want to plot 10 graphs on each axis in a for loop. The first 10 are working perfectly fine with legend and colours. For some reason (hold?) the second axis only plots the last one.
Here is my code:
if true
%code
for zaehlerfigImp=1:anzFigImp
%Ploteinstellungen
YACHSENTITEL='Z''''';
XACHSENTITEL='Z''';
FontSizeTitle=20;
FigureImp=figure(zaehlerfigImp);
set(FigureImp, 'Position', [50 100 800 400])
%Schleifendurchlauf, der immer die Anzahl der vorher definierten Graphen in
%eine Figure plottet
for p=1:laengeReihe; %Plotten aller gefundenen Dateien mit Dateiname als Legende
subplot(211)
plot(Datenbank(:,uebersichtzaehler+zaehlerplot+p), Datenbank(:,uebersichtzaehler+zaehlerplot+(p+1)), 'Color',Colour(p*200,:), 'LineWidth',2,'DisplayName',[Uebersicht{uebersichtzaehler+p,1} ' ' Uebersicht{uebersichtzaehler+p,2} ' ' Uebersicht{uebersichtzaehler+p,3} ' ' Uebersicht{uebersichtzaehler+p,4} ' ' Uebersicht{uebersichtzaehler+p,5}]);
grid on
legend('-DynamicLegend');
set(gca,'YDir','reverse'); % Y-Achse invertieren
ylabel(YACHSENTITEL, 'FontSize',15)
xlabel(XACHSENTITEL, 'FontSize',15)
hold on;
subplot(212)
zbetrag(:,p)=sqrt((Datenbank(:,uebersichtzaehler+zaehlerplot+p)).^2+(Datenbank(:,uebersichtzaehler+zaehlerplot+(p+1))).^2);
hilfsvarphase(:,p)=(Datenbank(:,uebersichtzaehler+zaehlerplot+(p+1)))./(Datenbank(:,uebersichtzaehler+zaehlerplot+p));
phase(:,p)=atand(hilfsvarphase(:,p));
[AX,H1,H2]=plotyy(f_bereich(:,1),zbetrag(:,p),f_bereich(:,1),phase(:,p),'plot','plot');
grid on
hold all
set(H1,'DisplayName', [ 'Z:' Uebersicht{uebersichtzaehler+p,2} ' ' Uebersicht{uebersichtzaehler+p,3} ' ' Uebersicht{uebersichtzaehler+p,4} ' ' Uebersicht{uebersichtzaehler+p,5}])
set(H2, 'DisplayName' , [ 'Phase:' Uebersicht{uebersichtzaehler+p,2} ' ' Uebersicht{uebersichtzaehler+p,3} ' ' Uebersicht{uebersichtzaehler+p,4} ' ' Uebersicht{uebersichtzaehler+p,5}])
set(get(AX(1),'Ylabel'),'String','Z')
set(get(AX(2),'Ylabel'),'String','Phase')
xlabel('Frequenz','FontSize',FontSizeTitle)
hold all;
legend('-DynamicLegend');
zaehlerplot=zaehlerplot+1;
hold all;
end
set(AX,'XScale','log');
set(AX(1),'Box','off');
legend('location', 'SouthEast'); % Legende günstig platzieren
%title(['Impedanzspektren von:' ' ' Uebersicht{uebersichtzaehler+p,2} ' mit ' Uebersicht{uebersichtzaehler+p,3}] ); %Bei Bedarf Diagrammtitel
hold off;
set(gcf,'Name',['Imp: ' Uebersicht{uebersichtzaehler+p,2} '_' Uebersicht{uebersichtzaehler+p,3}]);
%Abspeichern der Figure als jpg
%print( FigureImp, '-djpeg' , ['diagramme\' 'imp_' Uebersicht{uebersichtzaehler+p,2} '_' Uebersicht{uebersichtzaehler+p,3} ]);
%print( FigureImp, '-depsc2' , ['diagramme\' 'imp_' Uebersicht{uebersichtzaehler+p,2} '_' Uebersicht{uebersichtzaehler+p,3} ]);
uebersichtzaehler= uebersichtzaehler+laengeReihe;
end
end
The problem is only the part in subplot212. everything else is working fine...
I'm in desperate need of help! :(
0 Comments
Answers (3)
Orion
on 16 Oct 2014
Hi,
Your data are not defined in the code you show, so I can't run it and just can to guess what the problem might be.
Did you try to run this code in debug mode ? Put a breakpoint at the line
[AX,H1,H2]=plotyy(f_bereich(:,1),zbetrag(:,p),f_bereich(:,1),phase(:,p),'plot','plot')
and see if the plot is well created or erased, or ...
and just to be sure, are all the columns of zbetrag and phase different from each other ? otherwise you will always plot the same values.
0 Comments
Orion
on 16 Oct 2014
I think the use of plotyy is not appropriate in your case. you usually use it to plot only two data with high amplitude difference. but here you want to combine 10*2 set of datas in the same plot which probably will be really hard to read.
can't you use two different subplot to plot zbetrag and phase, which will be kind of "cleaner" ?
see attached file test_file2.m.
4 Comments
Jan
on 25 Oct 2014
@Sebastian: plotyy and subplot do almost the same: They create two axes objects. The only difference is the smart positioning in subplot and that in plotyy the axes objects have the same position, but different locations of the YTicks.
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!