Q1。您应该按照此线程niceloglabels
中的声明从 SSC签出。与该领域的其他技巧和设备一起,将在预计于2018 年第一季度出现在Stata Journal 18(1) 的专栏中进行讨论。niceloglabels
值标签仅限于与整数相关联,但这并不重要。您需要关注的是要在任一轴上的指定点显示为轴标签的文本;可以使用轴范围内的任何数值指定这些点。
您的具体问题似乎是您的一个变量是自然对数,但您希望以 10 的幂来标记轴。转换为包含以 10 为底的对数的变量肯定很容易,但另一个程序mylabels
(SSC) 可以在这里提供帮助. 这是一个独立的例子。
* ssc inst mylabels
sysuse auto, clear
set scheme s1color
gen lnprice = ln(price)
mylabels 4000 8000 16000, myscale(ln(@)) local(yla)
gen lnweight = ln(weight)
mylabels 2 3 4, myscale(ln(1000*@)) suffix(" x 10{sup:3}") local(xla)
scatter lnprice lnweight, yla(`yla') xla(`xla') ms(Oh) ytitle(Price (USD)) xtitle(Weight (lb))
我为这两个轴使用了不同的样式,只是为了展示什么是可能的。出于其他原因,通常最好在风格上保持一致。
从广义上讲,使用niceloglabels
通常更简单,因为它归结为指定xscale(log)
或yscale(log)
使用您想要查看的标签。niceloglabels
还查看变量范围或指定的最小值和最大值,以建议可能使用哪些标签。
Q2。range()
是一个twoway function
允许扩展x轴范围的选项。对于大多数图形命令,相关选项是xscale()
or yscale()
,如果适当指定,它们会再次扩展轴范围。与轴标签选项所暗示的相比,这些选项都不会忽略数据作为副作用或减少轴范围。如果您想省略数据,您需要使用if
或in
克隆您的变量,并将您不想显示的值替换为克隆中的缺失值。
^
FWIW,上标对我来说比权力好得多。