Как я могу программно указать в Stata одни и те же диапазоны осей?

Я пытаюсь взять под контроль оси диаграммы рассеяния в Stata. Рассмотрим пример:

sysuse auto
twoway (scatter mpg turn), aspectratio(1)

Получаю следующий график:

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

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

twoway (scatter mpg turn), aspectratio(1) yscale(r(10 50)) xscale(r(10 50))

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

Моя задача теперь создать серию графиков, которые будут частью динамического документа LaTeX, поэтому я бы хотел пропустить этап ручной настройки масштабов. Как я мог это реализовать?

Я думал об использовании местных жителей Stata, чтобы каким-то образом получить минимальные и максимальные значения обеих переменных (я не могу заранее сказать, какая переменная / ось имеет наибольшее / наименьшее значение), но, возможно, есть более разумное решение для решения этой проблемы?


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


Ответы (1)


Предположим, вы заранее знаете, какие переменные вы рисуете, здесь y и x:

local myvars "y x" 
tokenize `myvars' 
args myy myx 
su `myy', meanonly 
local min = r(min) 
local max = r(max) 
su `myx', meanonly 
local min = min(r(min), `min') 
local max = max(r(max), `max') 

Теперь используйте эти local в своем вызове graph.

Это не является общим - например, он не поддерживает квалификаторы if или in - но его можно сделать более общим.

person Nick Cox    schedule 29.11.2013
comment
Приносим извинения за поздний ответ - только что попробовали ваше решение. Сработал шарм (скажу - как всегда;) Спасибо! - person radek; 04.12.2013