2015-03-18 482 views
0

如果饼图中的变量低于指定的百分比,是否有办法抑制变量的标签?也许,当在图饼图选项中指定plabel()时,如果Stata没有在饼图中的变量分配低于10%,那么是否存在语法来标记饼图中的变量?虽然我可以调整plabel()中饼图标签的字体大小,但由于其变量的小份额,仍有多个标签重叠。我知道我可以指定如何标记饼图的单个切片,但是我正在生成大量图形,并且宁愿不重新贴上单个切片。Stata:如果在特定百分比下,取消饼图中分类变量的标签

+1

也许不是你寻求的答案,但是你正在解决的“问题”可能会出现,因为饼图对于这样的数据可能是一个糟糕的选择。条形图或点图可以可读地显示小分数和它们的分类标签。 – 2015-03-19 00:47:17

+0

想要显示类别但不标注它的想法很有趣。除了@ Dimitriy的有用答案之外,还可以将小类别的聚合编入“其他”类别。对不起,但我不是志愿者代码,因为我认为使用其他图更好的答案,这不是一个我感兴趣的问题。 – 2015-03-19 00:56:00

回答

2

就我所知,没有正式的方法来做到这一点。这是一种笨重的方式,它依靠从12点开始按顺时针顺序重新排列从最大到最小的类别。当您的变量是有序的,这种行为将是不可取的,但后来我想反正喜欢直方图:

sysuse auto, clear 

foreach var of varlist rep78 mpg turn { 
    qui count if !missing(`var') 
    bys `var': gen frac = _N/r(N) 
    gsort -frac 
    levelsof `var' if frac>.10 

    local wc: word count `r(levels)' 
    local plabel "" 

    forvalues i=1/`wc' { 
    local plabel "`plabel' plabel(`i' name)" 
    } 

    graph pie, over(`var') `plabel' sort descending 

    drop frac 
} 

是什么让一切重新排序必要的是,塔塔标签扇形从1至K开始12点'时钟,并且无法将标签附加到基础数值。

+0

谢谢@ Dimitriy - 你的代码非常有帮助。 – kathystehl 2015-03-27 15:58:50

+0

@SKA无需感谢我。如果您发现答案有用,请将其选为左侧的答案。 – 2015-03-27 16:01:32