总结一下论文写作过程中的一些东西

时间:2020-12-03 06:48:45

经过这么长时间的努力,终于发出去了一篇文章,不管最后结果如何,总算有了一点写作的经验了。这次写论文由于是第一次写,所以在这过程中还是有些东西需要来记录一下的,免得以后忘记。

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了!