我们在之前的推文中已经介绍过了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元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~
文字编辑:王 明
技术总编:刘贝贝
往期推文推荐:
7.一言不合就用stata写邮件(Outlook/Foxmail)
9.I have a Stata, I have a python
10.I have a Stata, I have a Python之二——pdf转word
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。
欢迎关注爬虫俱乐部
微信扫一扫
关注该公众号