Соединение координат x и y в графе - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть две переменные x и y:

1 9
4 9
3 7
7 7
6 4
9 4

Они представляют движения между парами координат.То есть от 1,9 до 4,9 и т. Д.

Можно ли нарисовать линии, иллюстрирующие эти движения в Stata?

Я попробовал следующую команду, но она просто соединяет все точки:

twoway scatter x y, connect(l)

1 Ответ

0 голосов
/ 28 сентября 2018

Используя данные вашего примера:

clear 

input x y
1 9
4 9
3 7
7 7
6 4
9 4
end

Сначала вы должны преобразовать данные из длинной в широкую форму с помощью команды reshape:

(вам нужно сгенерировать две переменныедля этого - см. help reshape. Переменные могут быть созданы путем ввода значений непосредственно в набор данных или с помощью определенных функций. Здесь используется последний подход - введите help и ceil() / cond() / mod()для получения дополнительной информации.)

generate _i = ceil(_n / 2) 
generate _j = cond(mod(_n, 2), 1, 2) 

list, sepby(_i)

     +-----------------+
     | x   y   _i   _j |
     |-----------------|
  1. | 1   9    1    1 |
  2. | 4   9    1    2 |
     |-----------------|
  3. | 3   7    2    1 |
  4. | 7   7    2    2 |
     |-----------------|
  5. | 6   4    3    1 |
  6. | 9   4    3    2 |
     +-----------------+

reshape wide x y, i(_i) j(_j) 

list 

     +------------------------+
     | _i   x1   y1   x2   y2 |
     |------------------------|
  1. |  1    1    9    4    9 |
  2. |  2    3    7    7    7 |
  3. |  3    6    4    9    4 |
     +------------------------+

Затем можно использовать команду twoway pcarrow для создания графика со стрелками, иллюстрирующими эти движения между каждой парой координат:

twoway pcarrow y1 x1 y2 x2, aspect(1) ylabel(0(2)10) ytitle("y-axis") xtitle("x-axis")

enter image description here

...