############################################# Script for making publication quality figures ############################################# :: %Customising plots (mostly using Matlab tools to edit figures) proj.u=[1,0,0]; proj.v=[0,1,0]; proj.uoffset=[0,0,0,0]; proj.type='rrr'; %============================================= %Make slice to plot my_slice=cut_sqw(sqw_file,proj,[-5,0.1,5],[-1,1],[-1,1],[0,10,900]); plot(smooth(compact(d2d(my_slice))));%default smoothing applied, compact function makes the axes tight around the data %Set the axes limits using lx, ly, lz commands %Make a nicer title title('QE slice'); %Label the axes with something nicer xlabel('(h,0,0) (r.l.u.)'); ylabel('Energy (meV)'); %Get rid of the colour slider, but keep the colour bar (have to delete the slider, then replace with just the bar) colorslider('delete'); colorbar %Make the above labels with a different font size to the default title('QE slice','FontSize',20); xlabel('(h,0,0) (r.l.u.)','FontSize',20); ylabel('Energy (meV)','FontSize',20); %Use the Matlab graphics handle to find out the font size of axes and associated properties get(gca,'FontSize'); %or get(gca) %for a full list of properties %You can set a property of the figure using %set(gca,'PropertyName',Value) %Put some text on the figure (position in terms of the plot's units are the first two arguments) text(-0.5,220,'Ei = 1200 meV','FontSize',20); %Some fancier text to label the colour bar: tt=text(6.9,550,'Intensity (mb sr^-^1 meV ^-^1 f.u.^-^1)','FontSize',20); set(tt,'Rotation',-90);%Flip the text around so that it reads from top to bottom %Save as jpg and eps (colour) print('-djpeg ','/my_path/etc/fig_1a.jpg'); print('-depsc ','/my_path/etc/fig_1a.eps'); %======================================= %Make an array of 1d cuts to plot together: energy_range=[100:50:300]; for i=1:numel(energy_range) my_cut(i)=cut_sqw(sqw_file,proj,[-5,0.1,5],[-1,1],[-1,1],[energy_range(i)-50,energy_range(i)+50]); end %plot them individually, to see what they look like first for i=1:numel(energy_range) plot(my_cut(i)); keep_figure; end %We want to plot them all on the same axes, with different colours and %markers. my_col={'black','red','blue','green','yellow'}; my_mark={'+', 'o', '', '.', 'x', 's', 'd', '^', 'v', '>', '<', 'p', 'h'};%note these are all possible choices! for i=1:numel(my_cut) acolor(my_col{i}) amark(my_mark{i}); if i==1 plot(my_cut(i)); else pp(my_cut(i));%note the pp command overplots (markers and errorbars) on existing 1d axes end end %this is a bit messy. Let's add a constant offset between each cut, and make %the markers bigger my_offset=[0:0.3:1.2]; for i=1:numel(my_cut) acolor(my_col{i}) amark(my_mark{i},6);%second argument to amark is the size of the marker if i==1 plot(my_cut(i)+my_offset(i)); else pp(my_cut(i)+my_offset(i)); end end %Further modification (e.g. axes, font sizes, etc) can be added in the same manner as for the 2d slice example above