调整 Y 轴值条形图

Adjusting Y axis values bar graph

我有以下生成下图的 Stata 代码。但是,我试图 adjust/sort Y 轴上的值(指不同收入组的工人)遵循与数据集相同的顺序。而不是目前每月收入 <= 1500 美元的人被安排为第五而不是第一收入组的顺序。

number_of_workers   income_bracket
24806                <= 1.5
31346                 1.5-2.9
648409                   3
389266                3.01-4.9
351963                  5-9.9
271360                  >= 10

收入括号变量是字符串,我试过如下转换:

gen income_bracket_numeric = real(income_bracket)

但是,Stata 将转换后的值视为缺失 (.),但 3 除外,它是数字。有没有办法在不改变原始数据的情况下通过将其设为数字​​来处理收入范围?

preserve
keep if nationality=="nationals"
keep if period=="Q1_2020" | period=="Q4_2020" 
graph hbar (mean)  number_of_workers, over(income_bracket) over(quarter)
restore

我采纳了 Nick 的建议,我的代码如下所示:

input number_of_workers_q1 str8 income_bracket_q1
24806 "<= 1.5"
31346 "1.5-2.9"
648409 "3"
389266 "3.01-4.9"
351963 "5-9.9"
271360 ">= 10"
end 


input number_of_workers_q4 str8 income_bracket_q4
25073 "<= 1.5"
29628 "1.5-2.9"
596767 "3"
442429 "3.01-4.9"
381794 "5-9.9"
273880 ">= 10"
end 

gen order = _n 
labmask order, values(income_bracket_q1)
graph hbar (asis) number_of_workers_q1 number_of_workers_q4, over(order)

label define order 1 "{&le} 1.5" 6 "{&ge} 10", modify 
graph hbar (asis) number_of_workers_q1 number_of_workers_q4, over(order)

除了如下所示的 Y 轴外,该图运行良好:

请注意,您的问题是关于调整分类轴。对于 graph bargraph hbargraph dot,幅度轴始终被视为 y 轴,无论它是垂直的还是水平的。这样做是为了让您可以在水平和垂直之间更改方向,而不必更改所有 y 选项和所有 x 选项。

这是使用 Stata Journal 中的 labmask 的一种方法。

clear 
input number_of_workers str8 income_bracket
24806 "<= 1.5"
31346 "1.5-2.9"
648409 "3"
389266 "3.01-4.9"
351963 "5-9.9"
271360 ">= 10"
end 

gen order = _n 
labmask order, values(income_bracket)
graph hbar (asis) number_of_workers, over(order)

label define order 1 "{&le} 1.5" 6 "{&ge} 10", modify 
graph hbar (asis) number_of_workers, over(order)

如果您以正确的顺序定义值标签,然后使用 encode

,则不用 labmask 也可以做到这一点

如上所述,您可以改进粗糙的双符号 <=>=