필터 지우기
필터 지우기

Plot different curves in cycle for

조회 수: 4 (최근 30일)
Davide Bassignana
Davide Bassignana 2017년 4월 13일
댓글: dbmn 2017년 4월 13일
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.

채택된 답변

dbmn
dbmn 2017년 4월 13일
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
dbmn
dbmn 2017년 4월 13일
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
dbmn 2017년 4월 13일
ooops. Correction - i was to fast. Now it should work :) (tested)
plot(Mi,Dad,my_linestyle{i},'LineWidth', 2,'MarkerSize',8);

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 2-D and 3-D Plots에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by