在Stata中,我如何组合不同宽度的箱形图?

时间:2013-01-15 16:27:34

标签: graphics stata

我正在尝试在不同大小的类别中组合几个箱形图。 这是一个说明问题的例子:

sysuse auto

graph box mpg, by(rep78, rows(1)) name(g1, replace )
graph box mpg, by(foreign, rows(1)) name(g2, replace )

graph combine g1 g2 , ycom r(2)

这给了我以下结果。

enter image description here

所有都按照手册进行操作,但是这个输出有两个问题。 首先 - 美学。就个人而言,我认为跨行的宽度相同的情节看起来会更好。

其次,更重要的是 - 在更复杂的图形上,类别,轴等的字体大小也按比例调整大小。因此,即使我指定,也就是说 - 所有图形上的轴标签的中等大小 - 其中一些会略大或稍小。

我想知道是否有一个选项以编程方式强制第二行箱形图的宽度与第一行相同。

1 个答案:

答案 0 :(得分:2)

这是你想要的吗?它是基于一个技巧,但诀窍是相当普遍的。

sysuse auto, clear
expand 2
gen what = cond(_n <= 74, rep78, 6 + foreign)
label def what 6 Domestic 7 Foreign
label val what what
graph box mpg, by(what, note("Repair record and Foreign") row(2) holes(8 9 10))

逻辑是

  1. 两个分类变量纵向组合。这确保了每个箱形图的大小相同。

  2. 通过指定孔,我们说服graph box将图形放在两行上。

  3. 我猜你的标签尺寸问题一旦解决就会消失。

    为了获得更大的灵活性,您可能需要放弃graph box并使用twoway代替。我在2009年的 Stata期刊中给出了详细的讨论:你可以直接进入http://www.stata-journal.com/sjpdf.html?articlenum=gr0039