Relabel используя grc1leg - PullRequest
       8

Relabel используя grc1leg

0 голосов
/ 04 марта 2019

Я пытаюсь показать четыре разных графика на одной иллюстрации.Я использую команду сообщества grc1leg.Однако, если я использую relabel в каждом отдельном графике, команда grc1leg не распознает изменения.

Пример моих данных:

+---------+----------+------------+----+----+----+----+
| student | matutino | vespertino | p6 | p7 | p8 | p9 |
+---------+----------+------------+----+----+----+----+
| 1       | 1        | 0          | 1  | 3  | 4  | 3  |
+---------+----------+------------+----+----+----+----+
| 2       | 1        | 0          | 2  | 5  | 1  | 2  |
+---------+----------+------------+----+----+----+----+
| 3       | 0        | 1          | 2  | 2  | 6  | 2  |
+---------+----------+------------+----+----+----+----+

Переменная Matutino является фиктивнойо том, посещает ли студент утренние занятия.

Переменная Vespertino - это пустышка о том, посещает ли студент дневные занятия.

Переменная p6 относится к вопросу 6, который спрашивает, работает ли студент ион принимает два значения: 1 и 2

Переменная p7 спрашивает, как долго студент работает, и принимает шесть значений: 1,2,3,4,5,6

Переменные p8 иp9 похожи на p7.

Мои данные закодированы в числовой форме, однако они представляют собой строковые ответы из опроса.Я хочу, чтобы на x-axis графиках вместо числового кода были указаны имена строк.

Мой код следующий:

graph bar (percent) matutino (percent) vespertino, over (p6,relabel (1 "Si" 2 "No")) name(p6, replace) title("¿Trabajas actualmente?") nolabel
graph bar (percent) matutino (percent) vespertino, over (p7,relabel (1 "0-1" 2 "1-5" 3 "6-11" 4 "12-24" 5 "más de 24")) name(p7, replace) title ("Tiempo trabajando") legend(off) b1title("Meses")
graph bar (percent) matutino (percent) vespertino, over (p8,relabel (1 "1-3" 2 "4-6" 3 "7-9" 4 "10-12" 5 "13-15" 6 "16-18" 7 "19-21" 8 "22-24" 9 "más de 25")) name(p8, replace) title ("Horas trabajadas a la semana") legend(off) b1title("Horas")
graph bar (percent) matutino (percent) vespertino, over (p9,relabel (1 "Independencia" 2 "Gastos personales" 3 "Continuar estudiando" 4 "Experiencia laboral" 5 "Mantener a la familia" 6 "Ayuda en el negocio familiar") label (labsize(small) angle(45))) name(p9, replace) title ("Motivo para trabajar") legend(off)
grc1leg p6 p7 p8 p9, l1(Porcentaje) legendfrom(p6)

Код отлично работает для каждого графика в отдельности,например:

graph bar (percent) matutino (percent) vespertino, over (p7,relabel (1 "0-1" 2 "1-5" 3 "6-11" 4 "12-24" 5 "más de 24")) name(p7, replace) title ("Tiempo trabajando") legend(off) b1title("Meses")

И код также работает, когда я объединяю четыре графика, но без параметра relbelal, например:

graph bar (percent) matutino (percent) vespertino, over (p6) name(p6, replace) title("¿Trabajas actualmente?") nolabel
graph bar (percent) matutino (percent) vespertino, over (p7) name(p7, replace) title ("Tiempo trabajando") legend(off) b1title("Meses")
graph bar (percent) matutino (percent) vespertino, over (p8) name(p8, replace) title ("Horas trabajadas a la semana") legend(off) b1title("Horas")
graph bar (percent) matutino (percent) vespertino, over (p9) name(p9, replace) title ("Motivo para trabajar") legend(off)
grc1leg p6 p7 p8 p9, l1(Porcentaje) legendfrom(p6)

Мне нужно иметь четыре графикана той же иллюстрации, но с использованием строковых меток, которые я записал на каждом отдельном графике.

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

Крест опубликовал в Statalist .

1 Ответ

0 голосов
/ 04 марта 2019

Перемаркировка не работает, потому что grc1leg снова рисует каждый график, прежде чем объединить их.

Самый простой способ решить эту проблему - объединить четыре графика без опции relabel и затем обработать полученный граф следующим образом:

local lbl 1-3 4-6 7-9
tokenize `lbl'

forvalues i = 1 / 3 {
    gr_edit .plotregion1.graph3.grpaxis.edit_tick `i' ///
    `.Graph.plotregion1.graph3.grpaxis.major.dlg_tickpos[`i']' ///
    `"``i''"', tickset(major)
}

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

...