Используя данные вашего примера:
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](https://i.stack.imgur.com/R7o9s.jpg)