Вам необходимо изменить ориентацию для каждого ytitle
на вертикальную и объединить графики только один раз в нужном порядке.
Следующее даст вам фигуры одинакового размера согласно вашему запросу:
sysuse auto, clear
graph drop _all
# delimit ;
* First 2 figures;
twoway (line weight mpg if foreign == 1,
sort ytitle("Some longer ytitle", orientation(vertical))
title("Foreign", box bexpand) yla(, ang(h)) xtitle("")
xlabel(,noticks) name(A1, replace ) graphregion(color(gs16)));
twoway (line weight mpg if foreign == 1, sort
ytitle("short", orientation(vertical)) yla(, ang(h)) xtitle("")
xlabel(,noticks) name(A2, replace ) graphregion(color(gs16)));
* Second 2 figures;
twoway (line weight mpg if foreign == 0, sort ytitle("")
title("Domestic", box bexpand) xtitle("") xlabel(,noticks)
name(B1, replace ) graphregion(color(gs16)) );
twoway (line weight mpg if foreign == 0, sort ytitle("") xtitle("")
xlabel(,noticks) name(B2, replace ) graphregion(color(gs16)));
* Combining the 4 graphs;
graph combine A1 B1 A2 B2;
Я бы также рекомендовал, чтобы графики в первом столбце поворачивали свои метки yaxis
в вертикальном углу, чтобы они соответствовали меткам вграфики во втором столбце:
Обратите внимание, что, уменьшив размер меток тиковых значений для обеих осей, вы можете придать большее значение ytitle
.Возможно, вам придется настроить интервал между метками ytitle
и yaxis
.
РЕДАКТИРОВАТЬ:
Вы можете использовать "грубую силу"Стата, чтобы делать то, что вам нравится, но вы никогда не получите именно то, что вы хотите.Это связано с переменной ytitle
length, которая влияет на всю область графика.
Быстрое решение заключается в следующем:
sysuse auto, clear
graph drop _all
# delimit ;
* First 2 figures;
twoway (line weight mpg if foreign == 1,
sort ytitle("Some longer ytitle", orientation(h))
title("Foreign", box bexpand) yla(, ang(h)) xtitle("")
xlabel(,noticks) name(A1, replace ) graphregion(color(gs16)));
twoway (line weight mpg if foreign == 1, sort
<b>ytitle(" short", orientation(h))</b> yla(, ang(h)) xtitle("")
xlabel(,noticks) name(A2, replace ) graphregion(color(gs16)));
* Second 2 figures;
twoway (line weight mpg if foreign == 0, sort ytitle("")
title("Domestic", box bexpand) xtitle("") xlabel(,noticks)
name(B1, replace ) graphregion(color(gs16)) );
twoway (line weight mpg if foreign == 0, sort ytitle("") xtitle("")
xlabel(,noticks) name(B2, replace ) graphregion(color(gs16)));
* Combining the 4 graphs;
<b>graph combine A1 B1 A2 B2, xsize(7);</b>
Обратите внимание на изменения в коде, которые указаны полужирный .
Вы также можете поиграть со значениями и посмотреть, сможете ли вы немного улучшить положение:
Указание правого поля в опции graphregion
вторых 2 цифр также улучшает положение:
twoway (line weight mpg if foreign == 0, sort ytitle("")
title("Domestic", box bexpand) xtitle("") xlabel(,noticks)
name(B1, replace ) <b>graphregion(color(gs16) margin(r=22))</b>);
twoway (line weight mpg if foreign == 0, sort ytitle("") xtitle("")
xlabel(,noticks) name(B2, replace ) <b>graphregion(color(gs16) margin(r=22))</b>);