【问题标题】:Definite steps with variable range on graph axis in StataStata中图形轴上具有可变范围的确定步骤
【发布时间】:2014-05-12 12:30:49
【问题描述】:

我正在循环生成多个图表,使用下面的示例代码

forvalues i = 1/11 {
    local t: label (countryID) `i'
    twoway line Var1 Var2 Var3 year if countryID == `i', ylabel(, valuelabel grid ///
          angle(horizontal)) xlabel(1999(2)2013) xtitle("") ///
          lpattern("l" "dash_dot" "longdash") legend(size(small)) title("`t'")
    graph export output/PredictLaw`t'.png, replace
}

每个变量的值都有标签,但仅限于整数级别。不过,变量本身可以取两个整数之间的任何值。因此,我想以某种方式确保 yaxis 仅使用整数作为距离,例如总是以 1 为步长。

但是,由于每个国家/地区的范围不同,我希望 Stata 确定 y 轴的范围必须有多长,因为较短的范围当然会产生更整洁的图表。因此,我宁愿不使用ylabel(1(1)21, ... 形式的东西。

有没有办法定义y轴的间距,同时保持y轴的范围是Stata确定的变量?

【问题讨论】:

  • 我不确定我是否理解您的要求。你介意改写吗?或者发布图表并描述您想要/不想要的内容?
  • 如果您总是希望整数步长为 1,那么该指令必然类似于 1(1)211/21。很难看出还有其他可能性。在任何情况下,你都不会说你为什么不想要那个。您可以在每张图之前summarize 并制作r(min)r(max)
  • @NickCox,我也在考虑使用r(min) r(max),但我不确定如何在例如r(min) 确保它们是整数。不过,无论如何,我都会发布一个示例图表来可视化我的问题。

标签: for-loop graph stata


【解决方案1】:

之后

summarize whatever, meanonly 

local ymin = floor(r(min)) 
local ymax = ceil(r(max)) 

给出可以在图形调用中调用的整数结果。这里的小细节,如果你进行任何四舍五入,并向上四舍五入最大值,同上,给定 floor()ceil() 函数,可以添加适合图形用途的空间。

【讨论】:

    猜你喜欢
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    相关资源
    最近更新 更多