总结一下论文写作过程中的一些东西
经过这么长时间的努力,终于发出去了一篇文章,不管最后结果如何,总算有了一点写作的经验了。这次写论文由于是第一次写,所以在这过程中还是有些东西需要来记录一下的,免得以后忘记。
1、排版
现在的论文基本上都要求用latex来排版了,用的比较多的是ctex,但是ctex也有些问题,出错后找错很麻烦,不能快速定位错误,后来师弟给推荐一个在线的latex,使用起来真的很方便,只需要申请一个账号就可以编写latex了,所以对于不想安装环境的人来说,无疑这是最方便的一种途径了;该网站的网址为www.texide.com,使用起来真的很方便。
2、画图
文章里对图片的要求还是比较高的,所以画图一般都用visio画图然后保存成pdf,然后再对pdf图片进行裁剪,插入就可以了。
对于实验数据的处理和生成相关的图片要用matlab来画图,由于这次文章中主要使用的柱状图,所以就介绍一下画柱状图时的一些技巧。
① 如何在柱状图上添加误差线
1 data = [5;6;7;8;9]; %柱状图的数据 2 3 u = [0.5;0.3;0.3;0.2;0.6]; %实验测得的数据的最大值与平均值之间的差 4 l = [0.2;0.3;0.1;0.4;0.5]; %实验测得的数据的最小值与平均值之间的差 5 6 bar(data); %显示柱状图 7 set(gca,'xticklabel',{'1','2', '3', '4', '5'}); %设置横坐标刻度标识 8 legend('test'); %设置图例 9 ylabel('Value(ms)'); %纵轴标签 10 xlabel('Results'); %横轴标签 11 12 13 %接下的程序是显示误差线的 14 hold on; 15 numgroups = size(data, 1); % number of groups 16 numbars = size(data, 2); % number of bars in a group 17 groupwidth = min(0.8, numbars/(numbars+1.5)); 18 for i = 1:numbars 19 x = (1:numgroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*numbars); 20 handles.errors(i) = errorbar(x, data(:,i), l(:,i), u(:,i), 'm', 'linestyle', 'none'); 21 end
程序中14~21行是显示误差线的,程序的运行结果如下图所示。
如果只想显示上误差或者下误差可以根据errorbar函数的参数进行选择。
如果想让每个横坐标刻度显示多个柱状图怎么做,其实也很简单,只需让上面程序中data每行出现多个数据,即变成m*n的矩阵,m是每组柱状中柱子的个数,例如下面是一个2*5的柱状图。
1 data = [5,3; 6,2; 7,4; 8,6; 9,7]; %柱状图的数据 2 3 u = [0.5,0.1; 0.3,0.3; 0.3,0.4; 0.2,0.5; 0.6,0.3]; %实验测得的数据的最大值与平均值之间的差 4 l = [0.2,0.1; 0.3, 0.2; 0.1,0.3; 0.4,0.1; 0.5, 0.3]; %实验测得的数据的最小值与平均值之间的差 5 6 bar(data); %显示柱状图 7 set(gca,'xticklabel',{'1','2', '3', '4', '5'}); %设置横坐标刻度标识 8 legend('test1', 'test2'); %设置图例 9 ylabel('Value(ms)'); %纵轴标签 10 xlabel('Results'); %横轴标签 11 12 13 %接下的程序是显示误差线的 14 hold on; 15 numgroups = size(data, 1); % number of groups 16 numbars = size(data, 2); % number of bars in a group 17 groupwidth = min(0.8, numbars/(numbars+1.5)); 18 for i = 1:numbars 19 x = (1:numgroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*numbars); 20 handles.errors(i) = errorbar(x, data(:,i), l(:,i), u(:,i), 'm', 'linestyle', 'none'); 21 end
运行效果如下图:
② 如何使柱状图的横坐标倾斜显示
当横坐标标识很长时,让其倾斜显示是一个不错的选择,在文章中也经常看到这样显示的图,这主要是用到了matlab中的函数“xticklabel_rotate”,这个函数可以在网上找到下载,例如下面的代码:
1 data = [5,3; 6,2; 7,4; 8,6; 9,7; 4,5]; %柱状图的数据 2 3 u = [0.5,0.1; 0.3,0.3; 0.3,0.4; 0.2,0.5; 0.6,0.3; 0.3,0.4]; %实验测得的数据的最大值与平均值之间的差 4 l = [0.2,0.1; 0.3, 0.2; 0.1,0.3; 0.4,0.1; 0.5, 0.3; 0.1,0.1]; %实验测得的数据的最小值与平均值之间的差 5 6 bar(data); %显示柱状图 7 xticklabel_rotate([1:6],30,{'result1','result2','result3','result4','result5','result6'},'interpreter','none'); %倾斜横坐标标识 8 legend('test1', 'test2'); %设置图例 9 ylabel('Value(ms)'); %纵轴标签 10 xlabel('Results'); %横轴标签 11 12 13 %接下的程序是显示误差线的 14 hold on; 15 numgroups = size(data, 1); % number of groups 16 numbars = size(data, 2); % number of bars in a group 17 groupwidth = min(0.8, numbars/(numbars+1.5)); 18 for i = 1:numbars 19 x = (1:numgroups) - groupwidth/2 + (2*i-1) * groupwidth / (2*numbars); 20 handles.errors(i) = errorbar(x, data(:,i), l(:,i), u(:,i), 'm', 'linestyle', 'none'); 21 end
显示效果如下:
xticklabel_rotate([1:6],30,{'result1','result2','result3','result4','result5','result6'},'interpreter','none');
上面这行代码就是调用现在的函数来实现横坐标标识倾斜的,需要注意的是红色字体6一定要与横坐标刻度的个数相同,否则将按默认标识显示,绿色字体30代表倾斜的角度。
xticklabel_rotate函数的下载地址:http://www.mathworks.com/matlabcentral/fileexchange/3486-xticklabel-rotate/content//xticklabel_rotate.m
note: 我用5组数据时,显示的结果有点问题,y轴的标注显示有点问题,如下图:
这个问题使用在matlab产生的图片窗口,选择View —> Property Editor来进行拖动,可以对图片的任何属性进行修改,包括字体大小,坐标范围等等。
3、论文纸张有A4变为letter
现在很多国外的会议,一般都要求纸张是letter格式,而pdfletex默认纸张是A4,这样在提交时会检测到格式不符合要求,下面说一个简单粗暴的方法,把pdf纸张由A4变为letter。
使用Adobe Acrobat的打印机功能,把A4纸张的pdf打印输出为letter格式,其中有几个属性设置一下,第一个是打印属性,选择纸张为Letter,第二是调整页面大小和处理页面里选择实际大小,如下图:
这样就OK了!