查看原文
其他

Mylabels命令介绍

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:宁刘莹

文字编辑:王玉婷

技术总编:张计宝



Python暑期线上课程火热招生中~

爬虫俱乐部将于2020年7月25日至28日线上举行Python编程技术训练营,本次培训采用理论与案例相结合的方式,帮助大家在掌握Python基本思想的基础上,学习科学计算技术与网络数据抓取技术,详情可点击《Python云端培训课程开始报名~》,或点击文末阅读原文直接提交报名信息呦~

导读

在作图时我们经常会遇到需要使用特殊坐标刻度的情况,面对这种需求,Stata有一个非常实用的命令——mylabelsmylabels是一个Stata模块,用于转换刻度上的轴标签、刻度或者日期等,这里小编着重介绍这一模块下mylabelsmyticks这两个经常结合起来使用的命令。

一、语法和选项
首先,这两个命令的语法分别如下:
mylabels lbllist , local(macname) [myscale(transformation_syntax) /// format(format) clean prefix(text) suffix(text)]myticks ticklist , local(macname) [myscale(transformation_syntax)]

其中,lbllist是你想要生成的标签列表,ticklist是刻度列表。这两个命令的选项如下:

(1)local()就不必多言,生成的标签需要先储存到宏里,方便接下来调用。这是一个必须的选项;

(2)myscale()选项用于指定标签与实际值的转换方式,在这个选项中,“@”表示标签list。如myscale(@*100),表示的是实际值是标签的100倍,也就是说,如果最终画出的坐标轴上显示的刻度值是1-10,那么对应的实际值其实是100-1000。如果不加这个选项,默认标签值等于实际值,等同于myscale(@)

(3)format()用于指定标签的显示格式;

(4)clean用于消除标签中的多余的零和小数点,而显示为实际值的最简格式。此选项通常与format()一起使用。例如,format(03.2f)会将0(0.25)1这一数字列表渲染为0.00, 0.25, 0.50, 0.75, 1.00,但clean选项会将其还原为0, 0.25, 0.5, 0.75, 1

(5)prefix()用于在标签前添加文本;

(6)suffix()用于在标签后添加文本。

这两个命令可以这样理解,在图形中显示的刻度和刻度值分别是myticksmylabels命令行所提供的刻度和刻度标签,接下来结合具体例子来说明。在这之前我们要先安装mylabels
ssc install mylabels

 

二、具体介绍选项功能
先用一个简单的例子来具体介绍mylabels的选项。
首先我们先生成两列数据,y是从00.2的数值变量:
clear allset obs 21gen y = (_n -1)/100gen x = y/2

接下来我们先画出yx的散点图作为对照:
sc y x
现在我们想要纵坐标显示为百分数,即从0%20%,显示的步长为5。那么就可以先将标签设置为实际值的100倍,再加上“%”为后缀:
mylabels 0(5)20,local(labels) myscale(@/100) suffix(" %")sc y x, yla(`labels')

若想要百分数显示到小数点后两位,则需要用到format选项:
mylabels 0(5)20,local(labels) format(%4.2f) myscale(@/100) suffix(" %")sc y x, yla(`labels')  

此时加上clean选项,除了后缀前缀之外,先前由myscale选项和format选项设置的标签的格式则会被消除:
mylabels 0(5)20,local(labels) clean format(%4.2f) myscale(@/100) suffix(" %")sc y x, yla(`labels') 

三、实际操作中的使用

接下来我们以auto数据为例来介绍一下在实操中的使用情景:auto数据中,mpg表示每加仑燃油能跑多少英里。画出mpgweight的散点图,我们发现二者大致呈现反向的关系:

sysuse auto, clearscatter mpg weight 

这时我们对mpg取倒数并乘以一千,生成一个新变量,用以表示每行驶1000英里消耗多少加仑燃油,并对二者作图,这时就会大致呈现正向的相关:
gen gpm = 1000/mpgsc gpm weight  

此时可以看到,纵坐标显示的是20-80的刻度标签,而mpg本身实际值为12-41,要想让纵坐标显示为对应的mpg的值,就可以使用mylabels来设定:
mylabels 15(5)40,myscale(1000/@) local(myyla)sc gpm weight,yla(`myyla', ang(h)) ytitle(英里/加仑(倒数刻度)) *这里ang(h)用来将纵坐标的刻度标签数字垂直显示

这里刻度标签15、20...40所对应的实际值为1000/15 、1000/20...1000/40,因此在这个图中,gpm实际值为1000/15(即mpg15)时,纵坐标显示的刻度为15。也就是说,纵坐标刻度标签显示的是该点处gpm所对应的mpg的值。 
若想细化刻度,就可以用myticks命令来设置:
mylabels 15(5)40,myscale(1000/@) local(myyla)myticks 12/41,myscal(1000/@) local(myyti)sc gpm weight,yla(`myyla', ang(h)) ytitle(英里/加仑(倒数刻度)) ymtic(`myyti')

  一起来动手试试看吧!








对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐

用WordStat看中国日报新闻

      数据集的划分——交叉验证法
大数据视角下的大学录取分数排行
集成学习介绍之二——Boosting算法

PDF文本信息提取(二)

取长补短、互通有无 ——集成学习介绍之Bagging &随机森林

PDF表格信息提取
神经网络——brain
marktouse标记使用变量
换种视角看问题——支持向量机(SVM)
提取PDF文本信息:入门
毕业季|b站《入海》评论爬取
Stata云端课程来啦
利用广义线性模型实现的分类——Logistic回归
Requests get爬虫之设置headers
数据分析薪资待遇如何?——跟我来,带你看
Vardistinct一键去重计数

关于我们



微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存