Plot different curves in cycle for
4 views (last 30 days)
Show older comments
I want to plot 3 different curves in the same graph (one parameter changing).
if true
for M0=1.5:0.5:2.5
disp('Valori scelti di Mi')
Mi=0.4:0.05:0.7
[...]
yyaxis left
grid minor
plot(Mi,Dad,'-^','LineWidth', 2,'MarkerSize',8);
xlabel('Mi','FontSize',14)
ylabel('Resistenza addizionale','FontSize',14)
title('Resistenza addizionale presa Pitot subcritica','FontSize',16)
yyaxis right
plot(Mi,PhiD,'-*','LineWidth',2,'MarkerSize',8)
ylabel('Coeff. di Portata','FontSize',14)
hold on
(ignore the first line if true).
Wath I want is to get this graph with every blu and orange line with different style operating inside the for command.
0 Comments
Accepted Answer
dbmn
on 13 Apr 2017
You where almost correct. Just 2 small corrections:
1) "hold on" You added this line at the end of the script - this wont help you. Think about hold on as only between the two lines hold on / hold off that function is active (even if you dont specify hold off) -> just add hold on earlier in your code
2) use plotyy instead of plot. This allows you to get plots with 2 y axes
3) try to use handles, f.ex. h1 = plot(...). This allows you to accees the plotted lines much easier later in your script
3 Comments
dbmn
on 13 Apr 2017
This should do what your picture does. I took the title and labels out of the loop.
if true
figure; % create handle to figure
hold on
title('Resistenza addizionale presa Pitot subcritica','FontSize',16)
grid minor
xlabel('Mi','FontSize',14)
yyaxis left
ylabel('Resistenza addizionale','FontSize',14)
yyaxis right
ylabel('Coeff. di Portata','FontSize',14)
% Foor Loop
for M0=1.5:0.5:2.5
disp('Valori scelti di Mi')
Mi=0.4:0.05:0.7
Dad = rand(size(Mi));
PhiD = rand(size(Mi));
% Plot left thingy
yyaxis left
plot(Mi,Dad,'-^','LineWidth', 2,'MarkerSize',8);
% Plot right things
yyaxis right
plot(Mi,PhiD,'-*','LineWidth',2,'MarkerSize',8)
end
end
If you want changing Line styles you could define a variable such as (before the for loop)
my_linestyle = {'-^','-*','-o'};
i = 0;
and access this in the loop as follows
i = i+1;
plot(Mi,Dad,'linestyle',my_linestyle{i},'LineWidth', 2,'MarkerSize',8);
dbmn
on 13 Apr 2017
ooops. Correction - i was to fast. Now it should work :) (tested)
plot(Mi,Dad,my_linestyle{i},'LineWidth', 2,'MarkerSize',8);
More Answers (0)
See Also
Categories
Find more on 2-D and 3-D Plots 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!