调整 Y 轴值条形图

时间:2021-01-20 19:31:31

标签: data-visualization visualization stata

我有以下 Stata 代码可以生成下图。但是,我试图调整/排序 Y 轴上的值,Y 轴是指不同收入组的工人,以遵循与数据集相同的顺序。而不是将每月收入 <= 1500 美元的人安排为第 5 个而不是第一个收入组的当前订单。

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

enter image description here

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

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 轴外,该图运行良好,如下所示: enter image description here

1 个答案:

答案 0 :(得分:1)

请注意,您的问题是关于调整分类轴。对于 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)

如果您以正确的顺序定义值标签,然后使用 labmask,则无需 encode 即可实现。

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