Как в 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)

Это дает мне следующие результаты.

введите здесь описание изображения

Все работает по мануалу так за но у меня две проблемы с этим выводом. Во-первых - эстетика. Лично я думаю, что сюжет с одинаковой шириной строк будет выглядеть лучше.

Во-вторых, и это более важно, на более сложных графиках размер шрифта для категорий, осей и т. д. также изменяется пропорционально. Так что даже если я укажу, скажем, средний размер метки оси на всех графиках, некоторые из них будут немного больше или меньше.

Мне было интересно, есть ли возможность программно заставить ширину второго ряда диаграмм иметь тот же размер, что и первый.


person radek    schedule 15.01.2013    source источник


Ответы (1)


Это ты хочешь? Он основан на трюке, но трюк довольно общий.

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 расставить графики на две строки.

Я предполагаю, что ваша проблема с размером метки исчезнет, ​​как только 1 будет решена.

Для еще большей гибкости вам может потребоваться отказаться от graph box и вместо этого использовать twoway. Подробное обсуждение было дано мной в Stata Journal в 2009 году: вы можете сразу перейти к http://www.stata-journal.com/sjpdf.html?articlenum=gr0039

person Nick Cox    schedule 15.01.2013