我们在之前的推文中已经介绍过了stata15的新命令“putdocx”,它可以让我们用stata去创建docx文件---《玩转stata15-putdocx导入图表》,《putdocx+wordconvert-将实证结果输出到Word(.docx)文档》,《使用putdocx输出list的结果》,《Putdocx输出list结果(二)》。
但是有同学问了,那如果我想直接通过stata把结果输出到PDF文件呢?当然你可以用putdocx命令将结果输出到docx文件,然后可以用我们以前发布的命令“wordconvert”(爬虫俱乐部又出新命令了--wordconvert转换你的word文件)将docx转换成pdf文件。除此之外其实有一个和“putdocx”用法非常类似的命令---“putpdf”,它可以帮你很好地解决这个问题。请看爬虫君给你具体举几个栗子吧。
一、输出文本内容
clear
putpdf begin //创建新的PDF文件
putpdf paragraph //开始一段新的文本
putpdf text ('实证结果展示Empirical Results'),linebreak //输完文字后另起一行
putpdf text ('实证结果展示Empirical Results'),bold bgcolor(yellow) linebreak //加粗字体,底色为黄色
putpdf paragraph,halign(center) //重新开始一段新的文本,使内容居中
putpdf text ('实证结果展示Empirical Results'),underline font('',14,blue) italic linebreak //添加文字的下划线,字号为14,颜色为蓝色
putpdf text ('实证结果展示Empirical Results'),font('MV Boli',16,red) linebreak //字体为”MV Boli”,字号为16,颜色为红色
putpdf save text.pdf,replace //保存为text.pdf
注:其中halign()代表的是对齐方式,center表示居中,默认是halign(left)。
输出结果如下:
二、同时输出多个图表至一个PDF文件中
1
1.输出1-10行list结果
例如我们想要auto数据中make price mpg 这三个变量的前10行的list的结果 ,程序如下:
clear
cd E:\
sysuse auto,clear
cap putpdf save E:\实证结果展示.pdf, replace
putpdf begin
putpdf paragraph,halign(center) //段落居中对齐
putpdf text ('表 1: 前10行样本'),bold
putpdf table tbl2 = data('make price mpg') in 1/10,varnames
其中,后缀”varnames”表示将变量名作为列标题名。
输出结果如下:
2
输出11-20行的list的结果
绘制完成第一个表格,我们利用putpdf pagebreak进行换页,然后继续对11-20行的数据进行操作:
putpdf pagebreak //换页
putpdf paragraph,halign(center) //段落居中对齐
putpdf text ('表 2: 11-20行样本'),bold
putpdf table tbl2 = data('make price mpg') in 11/20, ///
varnames width(5) halign(center) border(all,,blue) //设置表格的宽度为5英寸,所有的边框线为蓝色
forv row =2(2)11{
forv col=1/3{
putpdf table tbl2(`row',`col'),bgcolor(lightblue) //使指定单元格底色为浅蓝色
}
}
forv col=1/3{
putpdf table tbl2(1,`col'),bold bgcolor(blue) font(,,white) //使指定单元格底色为蓝色,并且字体色为白色
}
输出结果如下:
3
插入stata图表
接下来如果我们想要将操作得到的stata图表结果导出,我们可以这样做:
putpdf pagebreak
tw(scatter mpg weight if foreign==0) ///
(scatter mpg weight if foreign==1,msymbol(sh))
graph export auto.png //将绘制出的图表保存为png格式
putpdf paragraph, halign(center)
putpdf text ('行驶里程与车重关系'),bold //输入标题,并加粗
putpdf paragraph, halign(center)
putpdf image auto.png, width(4) //插入图片,设置其宽度为4英寸
输出结果如下:
4
输出表格结果
第四个表格的内容为国产车和进口车的描述统计数据,我们根据这两个变量,绘制一个表格,程序如下:
statsby total=r(N) average=r(mean) Max=r(max) Min=r(min), ///
by(foreign):sum mpg
rename foreign Origin
putpdf paragraph,halign(center)
putpdf text ('国内与国外分别的汇总统计数据'),bold
putpdf table tbl1 = data('Origin total average Max Min'), varnames
在我们得到国产车和进口车的汇总统计结果后,使用statsby命令收集统计信息,方便在下面的程序中使用,并创建一个表格tbl1。
输出结果如下:
可是我们发现输出结果不够美观,所以在上面程序的基础上再做一些修饰:
putpdf table tbl1 = data('Origin total average Max Min'), ///
varnames border(start, nil) border(end, nil) ///
border(insideV, nil) border(insideH, nil)
forv row =1/3{
forv col=1/5{
putpdf table tbl1(`row',`col'),halign(right)
}
}
forv i=1/5{
putpdf table tbl1(1,`i'),border(bottom,single,black)
}
putpdf save 实证结果展示.pdf,replace
其中,我们可以使用border(bordername ,nil)命令,消除指定位置的边框线。第一个循环是指定到每一个单元格,都使其右对齐(默认为左对齐)。第二个循环是指定到第一行的各个单元格,使其都显示出下边框线。
输出结果如下:
经过以上一系列的操作之后,我们就在一个PDF文件中同时导入了4个图表,并分页显示。
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。
应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~
文字编辑:王 明
技术总编:刘贝贝
联系客服