Выражения: Прямой доступ к столбцам данных

Всякая переменная, объявленная командой NewData или Let, содержит на самом деле не одно значение, а целый столбец данных. Имя переменной означает "взять из столбца текущее значение". Например, в команде

#Series X=xx Y=yy
инструкция X=xx говорит, что X-координату каждой i-ой точки серии необходимо взять из i-ой ячейки столбца xx.

Операция прямого доступа к столбцу позволяет обращаться к ячейкам, позиция которых отлична от текущей. Для этого после имени переменной указывается номер ячейки, заключённый в квадратные скобки.

В следующем примере треугольником будут отмечены только точки с положительной Y-координатой, у которых предыдущая точка имела отрицательную Y-координату:

#Let byte ss = if (yy[@-1]<0 and yy>0, 5, 0)
#Series X=xx Y=yy S=ss
Номер текущей ячейки всегда содержится в переменной @ или RowIndex. Нумерация ячеек начинается с нуля. Записи yy и yy[@] в выражениях эквивалентны.

Ещё одно полезное применение — обращение к данным, хранящимся в другой матрице. Допустим, на графике изображаются точки нескольких классов, причём точек может быть очень много, а число классов невелико. Рядом с каждой точкой должно выводиться имя класса (name), которое может быть довольно длинным. Держать дублирующую информацию об именах классов в основной матрице точек не рационально. Лучшее решение заключается в том, чтобы завести отдельную матрицу для имён классов:

#NewData text class_name
#NewData xx, yy, class_id
#Let text tr = class_name[class_id]
#Series X=xx Y=yy TR=tr С=class_id