problem plotting on a graph

5 次查看(过去 30 天)
[EDIT: 20110523 16:19 CDT - merge duplicate - WDR]
I have a problem plotting something on a graph.
I have a program that runs a function, this function plots a graph. The program loops the function for different parameters. How can I make sure the output of the function is plotted on the graph next to the output from the previous loop, etc.?
This is the program code:
clear all
close all
pe_alles = 200+200*rand(10,1);
pt_alles = 80+20*rand(10,1);
ce_alles = 2547+1000*rand(10,1);
ct_alles = 450+200*rand(10,1);
for i = 1:10
pe = pe_alles(i);
pt = pt_alles(i);
ce = ce_alles(i);
ct = ct_alles(i);
Thesis_tables
end
This is the plotting end of the function:
% FIGURES
clf reset
figure (1)
hold on
plot(y1:y2,SSB,'yo')
plot(y1:y2,SSB_ITQ,'mo')
plot(y1:y2,SSB_IQ,'ro')
plot(y1:y2,SSB_0,'go')
xlabel('Year'); %time
ylabel('Spawning stock biomass (t)'); %spawning stock biomass
title('Population dynamics'); %population dynamics
figure (2)
hold on
plot(y1:y2,TY, 'y+')
plot(y1:y2,TY_ITQ, 'm+')
plot(y1:y2,TY_IQ, 'r+')
xlabel('Year)'); %time
ylabel('Catch (t)'); %Catch
title('Fishing'); %fishery
figure (5)
hold on
plot(y1:y2,P,'y')
plot(y1:y2,P_ITQ,'m')
plot(y1:y2,P_IQ,'r')
plot(y1:y2,P_ITQF,'g')
xlabel('Year');
ylabel('?');
title('Total profits') % total profits
[Material from duplicate]
Hi everyone,
I made a program that does some simple computing and comes up with 5 graphs, each with some process form the computing described on it:
clf reset
figure (1) % Plots SSB from 2003 to 2033
hold on
plot(y1:y2,SSB,'o-')
xlabel('Year'); % Time
ylabel('Spawning stock biomass (t)');
title('Population dynamics');
figure (2)
hold on % Plots CATCH from 2003 to 2033
plot(y1:y2,TY, '+-')
xlabel('Year'); % Time
ylabel('Catch (t)');
title('Fishing'); % Fishery
figure (3)
hold on % Plots profits from food herring vessels
plot(y1:y2,PE)
%plot(y1:y2,p1k)
xlabel('Year'); %year
ylabel('?'); %euros
title('Total profits from food herring fishery');
figure (4)
hold on % Plots profits from fodder herring vessels
plot(y1:y2,PT)
%plot(y1:y2,p2k)
xlabel('Year');
ylabel('?');
title('Total profits from fodder herring fishery');
figure (5)
hold on % Plots total profits
plot(y1:y2,P)
xlabel('Year');
ylabel('?');
title('Total profits') % total profits
Than I comment the parameters used in this function and make another program, that samples hundred random values (from a range) for these parameters and than the program runs for each sample.
% Monte Carlo simulation of variable parameters
clear all
close all
pe_alles = 200+200*rand(100,1);
pt_alles = 80+20*rand(100,1);
ce_alles = 2547+1000*rand(100,1);
ct_alles = 450+200*rand(100,1);
for i = 1:10000
pe = pe_alles(i);
pt = pt_alles(i);
ce = ce_alles(i);
ct = ct_alles(i);
Herring_Baltic
end
It is more or less a Monte Carlo simulation. The graphs for each process with each sample value are plotted on the first four figures but I can't get the last figure to plot all graphs.
I don't know how this can be? Does anyone see the problem?
This is the code for calculating what is plotted on that last graph:
for t = 1:y2-y1+1 % From 2003 until 2033
r = 0.05; % 5 percent discount rate
rho(t) = (1+r)^(t-1); % Discount rate in time
p1(t) = ((TY(t)*0.086)*pe)/rho(t)-((ce*194)*g)/rho(t); % Profits per ship
p2(t) = ((TY(t)*0.022)*pe)/rho(t)-((ce*75)*g)/rho(t);
p3(t) = ((TY(t)*0.014)*pe)/rho(t)-((ce*54)*g)/rho(t);
p4(t) = ((TY(t)*0.0004)*pe)/rho(t)-((ce*14)*g)/rho(t);
p5(t) = ((TY(t)*0.0008)*pt)/rho(t)-((ct*62)*g)/rho(t);
p6(t) = ((TY(t)*0.00003)*pt)/rho(t)-((ct*47)*g)/rho(t);
p7(t) = ((TY(t)*0.000007)*pt)/rho(t)-((ct*33)*g)/rho(t);
p8(t) = ((TY(t)*0.0000006)*pt)/rho(t)-((ct*18)*g)/rho(t);
pl1(t) = p1(t)*4.3; % Profits per class = profits per ship times number of
pl2(t) = p2(t)*4.7;
pl3(t) = p3(t)*4.7;
pl4(t) = p4(t)*4;
pl5(t) = p5(t)*51.3;
pl6(t) = p6(t)*51.3;
pl7(t) = p7(t)*51.3;
pl8(t) = p8(t)*50;
PE(t) = pl1(t)+pl2(t)+pl3(t)+pl4(t); % profits for food herring vessels
PT(t) = pl5(t)+pl6(t)+pl7(t)+pl8(t); % profits for fodder herring vessels
P(t) = PE(t)+PT(t); % TOTAL profits
end
I could post all the code if necessary.

采纳的回答

Arturo Moncada-Torres

If "hold" does not work for you, why don't you try subplot?

help subplot
doc subplot

For example:

figure();
subplot(2,2,1);
plot(y1:y2,SSB,'yo');
subplot(2,2,2);
plot(y1:y2,SSB_ITQ,'mo')
subplot(2,2,3);
plot(y1:y2,SSB_IQ,'ro')
subplot(2,2,4);
plot(y1:y2,SSB_0,'go')

Hope it helps!

  1 个评论
Oleg Komarov
Oleg Komarov 2011-5-23
Don't see how this differs from my answer in the non-duplicate post.

请先登录,再进行评论。

更多回答(2 个)

Paulo Silva
Paulo Silva 2011-5-20
I don't understand your question but why don't you use subplots instead of creating new figures?
  1 个评论
Ruben Verkempynck
Ruben Verkempynck 2011-5-20
I want each output for one figure, for instance: SSB, SSB_ITQ and SSB, IQ to be plotted on the same graph.

请先登录,再进行评论。


Walter Roberson
Walter Roberson 2011-5-23
[EDIT: 20110527 16:24 - merge from duplicate - WDR]
[Oleg wrote the following in the other copy of this question, several days before Arturo, and probably should have received the appropriate credit - WDR]
use subplot, the example is pretty clear.
EDIT
If what you want is, say, plot a line, then continue plotting from where the line stopped, then you need to change the values of X and Y data for that line object.
You can call:
h = plot(1:10, rand(10,1));
XY = get(h, {'Ydata','Xdata'});
set(h,'ydata', [XY{1} rand(1,5)],'xdata', [XY{2} 11:15])

类别

Help CenterFile Exchange 中查找有关 Graph and Network Algorithms 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by