Graph 如何对条形图重新排序

Graph 如何对条形图重新排序,graph,stata,Graph,Stata,我根据退休状态为不同类型的锻炼生成了一个条形图。但是,该图按退休状态(已退休或未退休)排序 我想按锻炼的类型对图表进行排序,以便将每种锻炼的退休状态分组在一起 下面是使用Stata的toyautodataset的示例: sysuse auto, clear graph bar turn mpg gear_ratio, over(foreign) 在本例中,我希望针对每个汽车属性将汽车类型分组在一起。使用重塑命令可以将数据转换为所需的格式: sysuse auto, clear local

我根据退休状态为不同类型的锻炼生成了一个条形图。但是,该图按退休状态(已退休或未退休)排序

我想按锻炼的类型对图表进行排序,以便将每种锻炼的退休状态分组在一起

下面是使用Stata的toy
auto
dataset的示例:

sysuse auto, clear
graph bar turn mpg gear_ratio, over(foreign)


在本例中,我希望针对每个汽车属性将汽车类型分组在一起。

使用
重塑
命令可以将数据转换为所需的格式:

sysuse auto, clear

local my_yvars "turn mpg gear_ratio"
local my_cat_var "foreign"

/* Store variable labels to relabel the variables below */

local labels ""
foreach var of varlist `my_yvars' {
    local `var': variable label `var'
    local labels `"`labels' ("`var'" = "``var''")"'
}

collapse (mean) `my_yvars', by(`my_cat_var')
rename (`my_yvars') (y=)
reshape long y, i(`my_cat_var') j(variable) string

strrec variable `labels', replace
graph bar y , over(`my_cat_var') over(variable) asyvars

请注意,
strrec
是一个社区贡献的命令,可从SSC安装:

ssc install strrec

根据@NickCox的建议,还可以使用社区贡献的命令
statplot

下面的代码在一行中生成等效图:

sysuse auto, clear 
statplot gear_ratio mpg turn, over(foreign) vertical asyvars

要使用
statplot
,请首先在Stata的命令提示符下键入以下命令进行安装:

ssc install statplot