fixed bugs in interactive mode of plot shock decomp that led to crashed with aoa
parent
2d1402b899
commit
019545e2b3
|
@ -67,4 +67,4 @@ options.plot_shock_decomp.colormap = MAP;
|
|||
options.plot_shock_decomp.endo_names = mydata.endo_names;
|
||||
options.plot_shock_decomp.endo_names_tex = mydata.endo_names_tex;
|
||||
|
||||
plot_shock_decomposition(M,oo,options,var_list_);
|
||||
plot_shock_decomposition(M,oo,options,{var_list_});
|
||||
|
|
|
@ -148,6 +148,11 @@ for j=1:nvar
|
|||
ax=axes('Position',[0.1 0.1 0.6 0.8],'box','on');
|
||||
% plot(ax,x(2:end),z1(end,:),'k-','LineWidth',2)
|
||||
% axis(ax,[xmin xmax ymin ymax]);
|
||||
if strcmp('aoa',DynareOptions.plot_shock_decomp.type)
|
||||
bgap = 0.15;
|
||||
else
|
||||
bgap = 0;
|
||||
end
|
||||
hold on;
|
||||
for i=1:gend
|
||||
i_1 = i-1;
|
||||
|
@ -156,10 +161,10 @@ for j=1:nvar
|
|||
for k = 1:comp_nbr
|
||||
zz = z1(k,i);
|
||||
if zz > 0
|
||||
fill([x(i) x(i) x(i+1) x(i+1)]+(1/freq/2),[yp yp+zz yp+zz yp],k);
|
||||
fill([x(i)+bgap x(i)+bgap x(i+1)-bgap x(i+1)-bgap]+(1/freq/2),[yp yp+zz yp+zz yp],k);
|
||||
yp = yp+zz;
|
||||
else
|
||||
fill([x(i) x(i) x(i+1) x(i+1)]+(1/freq/2),[ym ym+zz ym+zz ym],k);
|
||||
fill([x(i)+bgap x(i)+bgap x(i+1)-bgap x(i+1)-bgap]+(1/freq/2),[ym ym+zz ym+zz ym],k);
|
||||
ym = ym+zz;
|
||||
end
|
||||
hold on;
|
||||
|
@ -220,7 +225,7 @@ for j=1:nvar
|
|||
c = uicontextmenu;
|
||||
hl.UIContextMenu=c;
|
||||
browse_menu = uimenu(c,'Label','Browse group');
|
||||
expand_menu = uimenu(c,'Label','Expand group','Callback',['expand_group(''' mydata.plot_shock_decomp.use_shock_groups ''',''' deblank(mydata.plot_shock_decomp.orig_varlist{j}) ''',' int2str(i) ')']);
|
||||
expand_menu = uimenu(c,'Label','Expand group','Callback',['expand_group(''' mydata.plot_shock_decomp.use_shock_groups ''',''' mydata.plot_shock_decomp.orig_varlist{j} ''',' int2str(i) ')']);
|
||||
set(expand_menu,'UserData',mydata,'Tag',['group' int2str(i)]);
|
||||
for jmember = mydata.shock_group.shocks
|
||||
uimenu('parent',browse_menu,'Label',char(jmember))
|
||||
|
@ -252,6 +257,7 @@ for j=1:nvar
|
|||
dyn_saveas(fhandle,[DynareOptions.plot_shock_decomp.filepath, filesep, DynareModel.fname,preamble_figname,endo_names{i_var(j)},fig_mode1,fig_name],DynareOptions.plot_shock_decomp.nodisplay,DynareOptions.plot_shock_decomp.graph_format);
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
%% write LaTeX-Footer
|
||||
|
|
|
@ -36,6 +36,7 @@ fig_mode='';
|
|||
fig_mode1='';
|
||||
% fig_name='';
|
||||
% screen_shocks=0;
|
||||
initval = DynareOptions.plot_shock_decomp.initval;
|
||||
use_shock_groups = DynareOptions.plot_shock_decomp.use_shock_groups;
|
||||
if use_shock_groups
|
||||
shock_groups = DynareModel.shock_groups.(use_shock_groups);
|
||||
|
@ -59,6 +60,11 @@ if isfield(opts_decomp,'init_cond_decomp')
|
|||
else
|
||||
init_cond_decomp = 0;
|
||||
end
|
||||
if isfield(opts_decomp,'min_nrows')
|
||||
min_nrows = opts_decomp.min_nrows ;
|
||||
else
|
||||
min_nrows = 6;
|
||||
end
|
||||
screen_shocks = opts_decomp.screen_shocks;
|
||||
if ~isempty(DynareOptions.plot_shock_decomp.use_shock_groups) || comp_nbr<=18
|
||||
screen_shocks=0;
|
||||
|
@ -138,9 +144,13 @@ end
|
|||
ncol=3;
|
||||
nrow=ceil(comp_nbr/ncol);
|
||||
ntotrow = nrow;
|
||||
nrow = min(ntotrow, 6);
|
||||
nrow = min(ntotrow, min_nrows);
|
||||
nfigs = ceil(ntotrow/nrow);
|
||||
labels = char(char(shock_names),'Initial values');
|
||||
if initval
|
||||
labels = char(char(shock_names),'All shocks');
|
||||
else
|
||||
labels = char(char(shock_names),'Initial values');
|
||||
end
|
||||
if ~(screen_shocks && comp_nbr>18)
|
||||
screen_shocks=0;
|
||||
end
|
||||
|
@ -150,7 +160,11 @@ for j=1:nvar
|
|||
z1 = squeeze(z(i_var(j),:,:));
|
||||
if screen_shocks,
|
||||
[~, isort] = sort(mean(abs(z1(1:end-2,:)')), 'descend');
|
||||
labels = char(char(shock_names(isort(1:16))),'Others', 'Initial values');
|
||||
if initval
|
||||
labels = char(char(shock_names(isort(1:16))),'Others', 'All shocks');
|
||||
else
|
||||
labels = char(char(shock_names(isort(1:16))),'Others', 'Initial values');
|
||||
end
|
||||
zres = sum(z1(isort(17:end),:),1);
|
||||
z1 = [z1(isort(1:16),:); zres; z1(comp_nbr0:end,:)];
|
||||
comp_nbr=18;
|
||||
|
@ -221,7 +235,7 @@ for j=1:nvar
|
|||
c = uicontextmenu;
|
||||
hax.UIContextMenu=c;
|
||||
browse_menu = uimenu(c,'Label','Browse group');
|
||||
expand_menu = uimenu(c,'Label','Expand group','Callback',['expand_group(''' mydata.plot_shock_decomp.use_shock_groups ''',''' deblank(mydata.plot_shock_decomp.orig_varlist{j}) ''',' int2str(ic) ')']);
|
||||
expand_menu = uimenu(c,'Label','Expand group','Callback',['expand_group(''' mydata.plot_shock_decomp.use_shock_groups ''',''' mydata.plot_shock_decomp.orig_varlist{j} ''',' int2str(ic) ')']);
|
||||
set(expand_menu,'UserData',mydata,'Tag',['group' int2str(ic)]);
|
||||
for jmember = mydata.shock_group.shocks
|
||||
uimenu('parent',browse_menu,'Label',char(jmember))
|
||||
|
|
Loading…
Reference in New Issue