function scatter_plots(X,xp,vnames,plotsymbol, fnam, dirname, figtitle, xparam1, DynareOptions) % % Written by Marco Ratto % Joint Research Centre, The European Commission, % marco.ratto@ec.europa.eu % % Copyright © 2017 European Commission % Copyright © 2017 Dynare Team % % This file is part of Dynare. % % Dynare is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % Dynare is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with Dynare. If not, see . % PURPOSE: Pairwise scatter plots of the columns of x and y after % Monte Carlo filtering %--------------------------------------------------- % USAGE: scatter_mcf(x,y,vnames,pltsym,diagon) % or scatter_mcf(x,y) which relies on defaults % where: % x = an nxk matrix with columns containing behavioural sample % y = an mxk matrix with columns containing non-behavioural sample % vnames = a vector of variable names % (default = numeric labels 1,2,3 etc.) % pltsym = a plt symbol % (default = '.' for npts > 100, 'o' for npts < 100 [n,p] = size(X); % X = X - ones(n,1)*min(Z); % X = X ./ (ones(n,1)*max(Z)); nflag = 0; if nargin >=3 nflag = 1; end if nargin<4 || isempty(plotsymbol) if n*p<100, plotsymbol = 'o'; else plotsymbol = '.'; end end if nargin<5 || isempty(fnam) fnam='scatter_plot'; end if nargin<6 || isempty(dirname) dirname=''; nograph=1; DynareOptions.nodisplay=0; else nograph=0; end if nargin<7 || isempty(figtitle) figtitle=fnam; end if nargin<8 xparam1=[]; end figtitle_tex=strrep(figtitle,'_','\_'); fig_nam_=[fnam]; hh=dyn_figure(DynareOptions.nodisplay,'name',figtitle); set(hh,'userdata',{X,xp}) bf = 0.1; ffs = 0.05/(p-1); ffl = (1-2*bf-0.05)/p; if p>1 fL = linspace(bf,1-bf+ffs,p+1); else fL = bf; end for i = 1:p for j = 1:p h = axes('position',[fL(i),fL(p+1-j),ffl,ffl]); if i==j h1=cumplot(X(:,j)); set(h,'Tag','cumplot') % set(h1,'color',[0 0 1], 'linestyle','--','LineWidth',1.5) set(h1,'color',[0 0 1],'LineWidth',1.5) if ~isempty(xparam1) hold on, plot(xparam1([j j]),[0 1],'k--') end if j

i plot(X(:,i),X(:,j),[plotsymbol,'b']) else plot(X(:,i),X(:,j),[plotsymbol,'b']) end set(h,'Tag','scatter') %% if ~isoctave % Define a context menu; it is not attached to anything hcmenu = uicontextmenu('Callback','pick','Tag','Run viewer'); % Define callbacks for context menu % items that change linestyle hcb1 = 'scatter_callback'; % hcb2 = ['set(gco,''LineStyle'','':'')']; % hcb3 = ['set(gco,''LineStyle'',''-'')']; % % Define the context menu items and install their callbacks item1 = uimenu(hcmenu,'Label','save','Callback',hcb1,'Tag','save params'); item2 = uimenu(hcmenu,'Label','eval','Callback',hcb1,'Tag','eval params'); % item3 = uimenu(hcmenu,'Label','solid','Callback',hcb3); % Locate line objects hlines = findall(h,'Type','line'); % Attach the context menu to each line for line = 1:length(hlines) set(hlines(line),'uicontextmenu',hcmenu) end end %% if ~isempty(xparam1) hold on, plot(xparam1(i),xparam1(j),'s','MarkerFaceColor',[0 0.75 0],'MarkerEdgeColor',[0 0.75 0]) end hold off; % axis([-0.1 1.1 -0.1 1.1]) if i