Площадь фигуры под графиком как посчитать?
есть математические пакеты (например Origin Lab) которые могут посчитать это.
Предвкушая вопросы — а как это сделать там. Отвечаю — я не знаю, но видел как при мне препод считал такую площадь.
Если точек не слишком много, можно посчитать линейно аппроксимируя данные (грубо говоря считать площадь фигуры под 2-я точками, потом следующие и т. д)
Можно, также в Ориджине вывести уравнение, описывающее данную фигуру произвольных точек.
Форум химиков
Мне интересно, насколько часто в Origin/Excel не хватает каких-то фич так что пользователям приходится тратить много времени на их замену. Может быть мне имеет смысл сделать несколько таких фич в моей программе Chemcraft. Сейчас у меня есть две идеи таких утилит:
1) Показать все пики на графике. Вы через Clipboard вставляете в окне моей программе таблицу, программа показывает график, вы нажимаете кнопку и на этом графике все пики помечаются цифрой (X или Y пика).
2) Расчёт интегральной площади пика. Вы на графике выделяется границы пика – область, в которой нужно считать площадь, и область чуть больше, в которой проводится линия фона сплайном или полиномом. Программа проводит линию фона, вычитает её из исходной функции и рассчитывает площадь пика.
Собственно я не знаю, может быть это в Excel или Origin уже есть? И можете предложить ещё свои идеи?
Shorku Сообщения: 1074 Зарегистрирован: Вт дек 13, 2011 2:17 pm
Мультифункциональный фиттинг экспериментальных данных
Очень часто, как и в точных науках (физика, химия), так и в прочих областях (экономика, социология, маркетинг и пр.) при работе с разного рода экспериментально полученными зависимостями одной величины (Y) от другой (X) возникает потребность описать полученные данные какой-нибудь математической функцией. Этот процесс часто называют экспрессией, аппроксимацией, приближением или фиттингом.
Наиболее часто для фиттинга данных используется линейная функция:
Действительно, она довольно проста математически, с ней удобно работать, смысл параметров A и B кристально ясен даже ученику средних классов школы, для нее существуют хорошо работающие математические методы, позволяющие их однозначно и быстро находить, и самое главное, многие экспериментально полученные зависимости, на самом деле, имеют в той или иной степени линейный характер.
Лирическое отступление
Немаловажным будет так уже упомянуть ситуацию, когда одни и те же экспериментальные данные можно достаточно хорошо (в рамках заранее определенных метрик) описывать очень разными математическими функциями, как показано на Рис. 1.

Рис. 1. Попытка описания одного и того же набора экспериментальных данных квадратичной, степенной и линейной функциями.
Однозначного отчета, а что лучше — не существует. Все определяется теми задачами (получить площадь под кривой, узнать значение производной, узнать новое значения Y для иного X и т.д.), для решения которых предлагается использовать то или иное математическое приближение. Конечно, больше всего полезной информации можно получить из того математического приближения, которое не просто прекрасно описывает экспериментальные данные, а за которым стоит физическая/химическая/экономическая и пр. модель наблюдаемой в эксперименте зависимости. Тогда, из полученных оптимизированных параметров извлекается полезная информация.
Бывают ситуации, когда экспериментально полученная зависимость имеет более сложный характер, и использование линейной аппроксимации становиться бессмысленным и необходимо привлекать другие математические функции, Рис. 2-А.

Рис. 2-А. Абстрактный пример нелинейной экспериментальной зависимости Y от X (красные точки) и ее теоретической аппроксимации (синяя кривая) функцией Гаусса.
Для проведения фиттинга нелинейных экспериментальных зависимостей существует ряд программных решений (Matlab, Origin, Datafit и пр.). Не вызывает больших сложностей осуществить подобный фиттинг в MS Excel (помним про solver).
Однако, бывают ситуации, когда экспериментальная кривая состоит из нескольких полностью или частично накладывающихся друг на друга индивидуальных, независимых в силу своей природы, кривых. Особенно часто это проявляется при физических и химических измерениях: инфракрасная спектроскопия (Рис. 2-Б), ядерный магнитный резонанс (Рис. 2-В), рентгеновская фотоэлектронная спектроскопия (Рис. 2-Г), хроматографии (Рис. 2-Д) и пр. В некоторых случаях маленький, но очень гордый важный пик бывает полностью или почти полностью скрыт большим пиком, так что его почти не видно невооруженным взглядом. А о его существовании приходиться догадываться по косвенным соображениям.
| Примеры |
|---|
Рис. 2-Б. Пример перекрытие пиков в FTIR спектре. По оси Y (не показана) -безразмерная величина, характеризующая поглощение ИК излучения веществом, по оси X — волновое число в см -1 . Источник: Canadian Journal of Microbiology 63(12), October 2017. |
Рис. 2-В. Пример перекрытия H1-NMR пиков. Источник. |
Рис. 2-Г. Перекрытие пиков в As3d -XPS спектре образца арсенида галлия (GaAs). Четко видны различные электронные состояния As в образце. Количественный анализ, выполняемый при помощи фиттинга, позволяет исследователям проанализировать структуру образца. Источник. |
Рис. 2-Д. Примеры перекрытия хроматографических пиков. Концентрация анализируемого вещества прямо пропорциональна площади под кривой пика, по этому необходимо уметь эту площадь точно определять. Источник. |
В зависимости от области науки, где встречаются подобные ситуации с перекрытием пиков, исследователи научились их по разному решать. В ЯМРе повышают напряженность магнитного поля, понижают температуру по время измерения, что приводит к разделению (разрешению) пиков. Другими словами, используют аппаратное и методологическое решение проблемы, что вне сомнений хорошо в контексте усовершенствования приборов и методик, но нередко стоит больших денег и не всегда доступно.
В инфракрасной спектроскопии особо ничего не делают с плохо разделенными пиками, аппаратно разделить их не получается, а исторически все привыкли, что тот или иной пик представлен на спектре, к примеру, как плечо на фоне другого пика и довольно редко, кто-то пытается извлечь более полную информацию из такого спектра, осуществляя его фиттинг (J. Braz. Chem. Soc., Vol. 19, No. 8, 1582-1594, 2008).
В тоже время в рентгеновской фотоэлектронной спектроскопии практически всегда приходиться проводить фиттинг экспериментальных данных как суперпозицию нескольких индивидуальных пиков (имеющих форму кривой Гаусса), что реализуется посредством специального ПО,
поставляемого с прибором.
Для разделения пиков в жидкостной и газовой хроматографии уменьшают концентрации веществ, устанавливают дополнительные разделительные колонки, увеличивают их длину, используют методы химической модификации веществ, изменяют условия проведения хроматографического разделения и пр. Но, как ни странно, несмотря на актуальность проблемы, в этой области не используют математические возможности разделения пиков. Хотя и существуют соответствующие методы и модели, но своего применения в коммерческих хроматографических решениях они пока не нашли…
Несмотря на возникающую необходимость проводить многокомпонентный (мульти функциональный) фиттинг автор этих срок не знаком с ПО, позволяющим использовать для фиттинга одновременно несколько одинаковых или разных математических функций. В замечательной программе OriginPro 8 мультифиттинг ограничен функциями Лоренца и Гаусса, что уже не плохо, но не достаточно. При этом качество фиттинга не всегда удовлетворительное и нет возможности контролировать сам процесс фиттинга. Если не понравились его результаты, то процесс приходиться начинать с самого начала и так много раз.
Еще не маловажным моментом является, тот факт что практически все программы при осуществлении фиттинга работают лишь с данным сигналом Y и автоматически не осуществляют фиттинг производной этого сигнала, что может привести к малозначимым результатам.
По этому, когда возникла реальная задача описать экспериментальные кривые, из формы которых было видно, что без мультифункционального фиттинга не обойтись, то подходящего инструмента под рукой не оказалось. А еще захотелось наглядности и контролируемости процесса фиттинга и, чтобы экспериментальная и расчетная производные совпадали. Конечно, проблему можно было бы решить в ручную в МS Excel, но данных было много и хотелось попрактиковаться в Питоне, который несколькими месяцами ранее стал изучать, как свой первый язык программирования.
В этом контексте была поставлена следующая цель.
Цель
Написать программу для удобного, наглядного, быстрого и качественного мультифиттинга загружаемых экспериментальных данных, учитывая фиттинг самого сигнала и его производной.
При этом пользователь должен руками задать количество используемых в фиттинге различных математических функций и иметь возможность выбрать ту или иную математическую функцию из списка.
В процессе самого фиттинга хотелось иметь возможность самому контролировать процесс подбора параметров, а не доверять в слепую алгоритмам оптимизации, в первую очередь из-за того, что они не учитывают совпадение производных экспериментального и расчетного сигналов.
Плюс прочие мелочи, такие как сглаживание шумов и удаление «артефактов» из исходных данных, мешающих вычислению производной.
Результаты
С учетом отсутствия опыта в программировании, задача казалась не простой, но очень интересной, решать которую пришлось, разбивая ее на подзадачи:
- Чтение/запись данных;
- Конвертация неудобного формата «17.07.2019 14:55:38» значений даты и времени в удобные для работы относительные минуты;
- Изучение основ Matplotlib для вывода данных в виде графиков и динамического изменения параметров функции посредством встроенного гаджета. Очень помог соответствующий соответствующий сайт;
- Применение простого (5ти точечного) метода сглаживания и замены встречающихся в массиве данных дублей (по оси Х) соответствующей линейной аппроксимацией;
- Численное интегрирование и дифференцирование данных;
- Создание графического интерфеса и изучение для этого основ ООП.
Наверное нет особого смысла описывать детали, вопросы и проблемы, которые возникали по ходу написания программы. Детали доступны самом коде, код доступен тут. Большинство вопросов и проблем оказались стандартными, полное или частичное решение которых находилось на различных сайтах и в книгах, посвященных Питону, а так же на stackoverflow. Решения и примеры тупо копировались разбирались и адаптировались под свои нужды. Ниже кратко описана работа программы, ее возможности и ограничения на данный момент. Программа состоит из трех рабочих файлов и краткой инструкции:
Fitting_tool.py -Интерфейс, проверка корректности ввода параметров, вызов различных функций.
NumPy1.py — Класс методов для чтения, записи, обработки данных и отображения их в графическом виде
ThFunction.py — Класс из нескольких математических функций, их параметров с начальными значениями и границами интервалов изменений этих параметров.
Fitting Tool v.1.0 Help.pdf — Небольшой мануал с картинками, который решил сделать сразу на английском.
При запуске программы предлагается открыть файл со своими данными или воспользоваться уже имеющимися примерами, которые необходимо импортировать.
Затем можно просмотреть оригинальный график и его производную, посчитанную, как есть или после математического сглаживания. При этом заранее непросто сказать, какой метод сглаживания будет лучше работать и имеет смысл попробовать их все или выбрать опцию без сглаживания. В результате появиться стандартное окно с графиком экспериментального сигнала и его производной, Рис. 3-А.

Рис. 3-А. Графическое представление оригинального экспериментального сигнала и его производной с использование одного из трех методов математического сглаживания.

Задав левую и правую границы рассматриваемого интервала, можно сфокусировать график и последующие расчеты на интересующей области, Рис. 3-Б.
Рис. 3-Б. Задание левой и правой границы интервала наиболее интересной части экспериментальной кривой для дальнейшего фиттинга.
В правой части программы можно задать количество математических функций, используемых для фиттинга и выбрать тип каждой используемой функции. После чего появится возможность задать три значения для каждого параметра выбранной функции. Значения Min, Max соответствуют левой (Min) и правой (Max) границе числового интервала, в котором пользователь будет производить поиск оптимального значения параметра. Величина Def (Min< Def < Max) показывает начальное, оно же текущее значение данного параметра, Рис. 4.

Рис. 4. Выбор числа и типа математических функций, которые будут использованы при фиттинге. При необходимости пользователь может изменить значения Min, Max и Def для каждого из параметров каждой функции.
Далее, либо, оставаясь в рамках одной выбранной функции, пользователь может проводить фиттинг (Local fitting) ее параметров, либо через меню Fitting\Global fitting производить оптимизацию параметров глобальной функции, являющейся суперпозицией двух (и более) локальных функций.

Для начала, удобно «занулить» амплитуду второй функции и добиться некоторого (не обязательно идеального) совпадения профилей левой (или правой) части экспериментального сигнала и его производной с соответствующей частью первой функции и ее производной, Рис. 5-А.
Рис. 5-А. Фиттинг с одной функцией. Попытка получить наилучшее совпадение для левой части экспериментальной кривой. Амплитуда второй функции специально уменьшена практически до нуля.
После получения удовлетворительного результата, «включаем в игру» вторую функцию (Рис. 5-Б) и находим для нее оптимальные параметры. В процессе ее фиттинга, можно вернуться к параметрам 1 й функции и убедиться, что ошибка находится в глобальном минимуме по всем ее параметрам.

Рис. 5-Б. Фиттинг с двумя функциями дает более лучшее описание оригинального сигнала и его производной (игнорируя оставшиеся шумы в графике производной).
Кнопка «Close&Export parameters» позволяет закрыть окно с графиком и экспортировать текущие параметры в главное окно программы, где можно задать более удобные значения Min и Max для выбранных параметров и еще раз через Fitting\Global fitting продолжить уменьшать ошибку.
Ошибка — она же метрика качества аппроксимации исходного сигнала и его производной определяется по стандартной формуле:
где SEi и STi экспериментальные и расчетные значения сигнала. N — число точек в массиве, а множитель 1000 выбран для удобства. Аналогичная формула используется для оценки точности фитинга производной сигнала, однако из-за наличия возможных шумов, полностью «занулить» ее не получится, да это и не нужно, т.к. совпадения профилей кривых достаточно.
Если для качественного фиттинга двух функций не хватает, то можно сбросить настройки кнопкой «Reset» и выбрать большее число функций.
На данный момент в программе представлены шесть математических функций:
|Сокращение | Название | Формула и параметры | Пример графика|
|—————|————|—————————-|——————|
| DbSigmoind | Двойная сигмоида |
Параметры: A, Xc, W1, W2 и W3| |
|Sinus|Синус |
Параметры: A, w и phi||
|Gauss|Функция Гаусса|
Параметры: A, b и с||
|Exp|Экспоненциальная функция|
Параметры: A и b||
|Lorenz|Функция Лоренца|
Параметры: A, x0||
|Sigmoid|Сигмоида|
Параметры: A, B и С|
|
Было решено остановиться на достигнутом и ограничить версию 1.0 этими шестью математическими функциями. Желающие могут легко добавить новую математическую функцию в файл ThFunction.py и добавить условие определения ее параметров в функцию «F_Option» файла Fitting_tool.py по готовым шаблонам из комментариев в файлах.
В дальнейших версиях, если будет интерес к этой теме, попробую добавить возможность пользователю вводить свои математических функции в самой программе.
###Выводы
Был создан удобный инструмент, позволяющий, проводить мультифиттинг экспериментальных данных в ручном режиме, одновременно контролируя не только форму и ошибку расчетного сигнала, но и форму и ошибку его производной.
Работа над проектом принесла большое удовольствие и позволила получить первый практический опыт программирования.
Хочется надеяться, что созданный инструмент — Fitting tool будет реально еще кому-нибудь полезен.
Как посчитать площадь под графиком в ориджине
Пакет «Origin»
(специализированный soft для обработки экспериментальных данных
и подготовки графических материалов к печати).
Origin обеспечивает представление данных в форме электронных таблиц (очень похоже на Excel), с тем, однако, отличием, что встроенные в Origin процедуры работы с данными (ввод, импорт, перемещение, вычисление, отображение, экспорт) ориентированы не на бухгалтерские, а на измерительные задачи . Особенно приятно, что эти специальные возможности реализованы через меню и командные панели с кнопками. Это позволяет множество стандартных операций, свойственных обработке экспериментальных данных, выполнять «одним кликом мыши».
- многие вещи в нем сделаны далеко не лучшим образом (особенно программирование)
- Excel очень удачно взаимодействует с мощной и универсальной вычислительной средой MatLab (через макрос exlink.xls, который Вы найдете в дистрибутиве MatLab)
В отличие от большинства математических программных продуктов, учебной литературы по Origin до сих пор так и нет. Данное краткое описание предназначено восполнить этот пробел.
О доступных версиях программы «Origin»
Версия 5.0 «Student version». В отличие от совсем ранних, недостойных здесь упоминания, версий 3 и 4, она имеет достаточно устоявшийся интерфейс (почти одинаковый с обеими последними версиями 6.1 и 7.02) при совсем небольшом объеме (дистрибутив помещается на 4 дискетах).
- ввод данных как с клавиатуры, так и импорт из текстового файла;
- создание выделенных групп данных для их перемещения и обработки как объектов;
- построение графиков, редактирование графических объектов и экспорт в различные графические форматы;
- статобработка данных по строкам и столбцам;
- регрессионный анализ («МНК») для простейших моделей (полиномы до 9-й степени, сигмоиды и т.п.);
- фильтрация и фурье-анализ;
- интерактивное окно подбора параметров произвольной (определенной пользователем) зависимости к заданному облаку точек («Fitting») методом наибыстрейшего спуска [Levenberg-Marquardt];
- простейшее программирование вычислений как над отдельными переменными, так и над объектами, с использованием входного языка LabTalk, напоминающего C и имеющего определенный набор специализированных функций;
- многооконный режим редактирования «примечаний», позволяющий вести «дневник» работы, встроенный в проект.
- совмещенное окно текущих записей, редактирования программы и прямых вычислений «Script window» (отличающееся всесторонним неудобством 🙂 ).
- возможность редактирования программных файлов LabTalk («Сценариев») в нескольких независимых окнах с обеспечением сервисов, традиционных для современных интегрированных сред программирования (цветная разметка синтаксиса, автотабуляция, закладки и пр.). Однако возможности отладки, привычные еще со времен BC3 и QuickBasic4.5 (такие как пошаговое выполнение, точки останова, наблюдение текущих значений переменных, и пр.), лишь обозначены в интерфейсе, но реально не поддерживаются 🙂 .
- возможность создавать (и переносить с машины на машину ! ) собственные командные панели и группы кнопок, что позволяет запускать «одним кликом мыши» не только стандартные, но и собственные оригинальные процедуры, создавая удобную рабочую среду под конкретную задачу.
- попытка (хотя и косо сделанная) организовать обращение к данным на базе идей, сходных со средами типа VisualBasic (представление наборов данных как объектов с определенными для них стандартными свойствами и методами).
- появление в среде Origin компилятора (фирмы NAG Corporation) языка C++ в стандарте ANSI, с определением классов этого «Языка Origin C» общепринятым способом в заголовочных h-файлах. Замена интерпретатора компилятором резко подняла быстродействие. (Однако возможность отладки по-человечески программ, написанных на «напоминающем C» языке LabTalk, так и не появилась, а про компилятор C++ NAG Corporation надо еще разбираться).
- значительное расширение набора процедур анализа данных (например, добавлена проверка статистических гипотез).
Как пользоваться программой «Origin»
(простейшие навыки для версии 5.0)
- «Щелкните_мышкой», т.е.посадите текстовый курсор в той графе таблицы, с которой собираетесь начать ввод.
- На самой правой секции клавиатуры нажмите клавишу NumLock (засветится индикатор) и пользуйтесь этой «калькуляторной» клавиатурой.
- Ввод будет по умолчанию производиться в столбец. Для ввода десятичной точки пользуйтесь клавишей ( . ); для ввода порядка (если требуется) — латинской буквой E (или e); для перехода в следующую (нижележащую) графу — клавишей Enter. Кроме того, можно «ходить» по таблице при помощи клавиш со стрелками и мыши.
- Пример правильно введенного числа: 23.375E-2
- Вместо десятичной точки в таблице всегда видна запятая — в принципе можно и при вводе пользоваться клавишей ( , ), однако такая привычка для физика крайне вредна.
- Обратитесь к меню FILE / IMPORT > ASCII.
- Выберите Ваш файл в открывшемся стандартном системном (Windows) окне «Input». Если файл вдруг вообще не виден там где он должен быть, то переключившись в Windows поменяйте его расширение, или же выберите в окне «Input» опцию «Все файлы» ( *.* )
- По нажатию кнопки INPUT окна «Input» произойдет заполнение таблицы данными из файла (количество строк и столбцов, а также новое имя таблицы по имени файла установятся автоматически). Примечание.Подготовка к операции импорта требует осторожности, поскольку при импорте данных они записываются на место имеющихся, а страховочный запрос («Отбросить или нет старую информацию в таблице?») разработчиками Origin не предусмотрен 🙂 . Имеется возможность сконфигурировать среду так, чтобы данные, например, дописывались в дополнение к существующим. Но не будем пока вдаваться в эти сложности. Лучше всего при наличии в проекте уже заполненных таблиц выработать привычку всегда перед импортом создавать новую пустую таблицу, либо (что гораздо лучше), заблаговременно создать шаблон (template) и вводить данные в него.
- Файл будет правильно импортирован при условии, что информация в нем хоть как-то форматирована (обычно под этим подразумевается наличие столбцов и строк, причем в строках желательно разделять числа пробелами или табуляторами). При возникновении проблем с «разделителями» чисел при импорте, сконфигурируйте режим импорта при помощи меню FILE / IMPORT_OPTIONS. . Заметим, что запятая в Origin странным образом сожительствует с десятичной точкой для разделения целой и дробной частей числа 🙂 , поэтому в качестве разделителя полей в файлах ее использовать крайне нежелательно.
- Текстовые заголовки столбцов в Вашем файле не только не помешают вводу, а даже полезны, если они, конечно, не слишком длинные: они автоматически введутся как имена или как метки «Labels» столбцов электронной таблицы Origin (во втором случае это своеобразный аналог свойства «Caption», известного из VisualBasic).
- Допустим, Вы завершили отладку процесса обработки каких-то данных: у Вас есть таблица с удачно поименованными столбцами и с «вшитой» в нее программой (в окне WORKSHEET_SCRIPT). Для сохранения ее «каркаса» (Template) воспользуйтесь главным меню FILE_/_SAVE_TEMPLATE_AS. Разумеется, файлу шаблона надо придумать осмысленное имя. Примечание. Тут тонкость! в качестве шаблона надо сохранять не окончательный вид таблицы, а ее исходный вид, куда Вы будете импортировать данные. Это особенно станет важно, если WorksheetScript будет содержать команды создания, удаления и переименования столбцов. Но это не важно, если Вы не собираетесь менять программно вид таблицы, а данные будете вводить с клавиатуры.
- Теперь открыть пустую таблицу, «знающую», как обработать поступающие в нее данные, проще всего кнопкой OpenTemplate на командной панели. Следующей за открытием «каркаса» операцией подразумевается импорт в него данных из текстового файла данных, а затем можно просто запустить WorksheetScript. И, наконец, если в окне WorksheetScript была проставлена опция «автозапуска при импорте», то и запуск счета тоже произойдет автоматически 🙂 .
- Для добавления столбца воспользуйтесь кнопкой AddColumn или зайдите в главное меню.
- Для изменения ширины столбца (если не видны числа целиком или, наоборот, лишнее пустое место) «зацепите» граничную линию между столбцами на уровне заголовка столбца (при этом курсор должен принять форму горизонтальных стрелок) и «перетащите» ее.
- Для переименования таблицы (не пренебрегайте осмысленными именами!) «щелкните_правой_кнопкой_мыши» по верхушке окна таблицы и выберите в контекстном меню пункт RENAME.Все имена должны быть присвоены заблаговременно, до написания программы (если, конечно, Вы не применяете функции присваивания имен непосредственно в самой программе), и удовлетворять требованиям синтаксиса языка LabTalk. После программирования ничего переименовывать будет нельзя. Не найдя объекта (столбца с указанным в программе именем), программа не выдаст никаких сообщений, а просто не сделает то, что Вы хотели, без объяснений. Примеры. Обращение col(Viscosity) станет причиной сбоя вычислений, если в активной таблице нет колонки с именем Viscosity. Обращение Data_Viscosity также станет причиной сбоя, если такой колонки нет в таблице Data.
- Для выделения столбца щелкните по заголовку столбца.
- Для выделения строки щелкните по номеру строки (левее первого столбца).
- Для вызова контекстного меню, относящегося к выделенной области, «щелкните_правой_кнопкой» по выделенной области.
- Для выделения области данных (внутри таблицы или столбца)
- Щелкните по первой выбранной ячейке при нажатой клавише Ctrl.
- Щелкните по последней выбранной ячейке при нажатой клавише Shift.
- С полученной областью можно выполнять ряд операций, например, копировать, вырезать, удалять, обрабатывать в программе как текущую «выделенную область данных» и пр. Примечание. Применение клавиши Delete только стирает данные в выделенной области, а для удаления самой области требуется вызвать пункт DELETE в контекстном меню.
- (первый способ) «дважды_щелкните» по заголовку столбца,
- (второй способ) щелкните по заголовку столбца правой кнопкой и воспользуйтесь в контекстном меню пунктом PROPERTIES. (т.е. не так, как при переименовании таблицы)
- Менять статус столбца SET COLUMN AS. (например, если столбец обозначен как «X», т.е. независимая переменная, то по умолчанию он выводится на график как абсцисса, в то время как вывести его в качестве ординаты хотя и можно, но для этого требуется достаточное искусство). Статус может быть: X, Y, xErr, yErr, Label, «disregard»(«никакой»). Столбцы xErr и yErr по умолчанию выведутся на график как изображения погрешностей по осям.
- Строить график PLOT. (линией, точками, линией с точками, колонками и пр.) Для построения графика с погрешностями надо выделить все те столбцы, информация из которых требуется для графика. Построение семейства графиков на одном листе («разноцветных») требует открытия специального окна из главного меню, при этом, наоборот, никаких выделений в таблице быть не должно.
- Программировать вычисление ячеек данного столбца на основании других данных: SET_COLUMN_VALUES. Эту возможность лучше всего использовать, если при расчете не требуются данные из других таблиц. При программировании полезна функция col( ), в качестве аргумента воспринимающая текстовое имя столбца. Она позволяет обрабатывать данные всего столбца как целое . Например: оператор LabTalk col(square)=col(argument)^2; заполнит столбец square квадратами чисел, содержащихся в столбце argument.
- Если блок данных выделен «из середины» таблицы, то во избежание побочных эффектов разумнее всего открыть новое окно (FILE / NEW>WORKSHEET ), скопировать в него эти данные и работать с ними отдельно.
- СТАТОБРАБОТКА СТОЛБЦА ДАННЫХ . «Щелкните_правой_кнопкой» по ранее выделенной области данных (например, это столбец или его часть) и в контекстном меню выберите STATISTICS_ON_COLUMNS. Результаты статистической обработки появятся в новом окне (это будут: среднее значение по данной выборке, ее среднеквадратическое отклонение, число точек в выборке, СКО оценки среднего значения и некоторые другие менее нужные величины).
- СТАТОБРАБОТКА ДАННЫХ ПО СТРОКАМ. В этом варианте Вы должны выбирать другую команду: STATISTICS_ON_ROWS. В этом случае результат Вы получите (в разных версиях) либо в новом, либо в том же окне — в последнем случае в новых автоматически добавляющихся столбцах, имеющих соответствующие заголовки.
- Если Вам надо построить график, ординаты точек которого должны быть усреднены по нескольким отсчетам, то это как раз тот случай, который обеспечивается действиями по предыдущему пункту. Чтобы столбец, содержащий среднеквадратические отклонения, изображался на таком графике в виде «усов», он должен иметь статус столбца-погрешности — yErr.
Выделите столбец и через главное меню запустите команду ANALYSIS / FREQUENCY_COUNT. Вам будет предложено выбрать, в частности, диапазон изменения анализируемой переменной и шаг разбиения, однако рекомендуется поначалу положиться на установки по умолчанию. Гистограмма образуется в виде новой таблицы, после чего ее графическое изображение строится вышеописанным способом.
- Для редактирования надписи по оси абсцисс (ординат) «дважды_щелкните» мышью по самой надписи. В открывшемся в результате этого окне набирайте текст, причем для правильного отображения кириллицы поменяйте шрифт на любой доступный фонт с приписочкой «Cyr«.
- Для редактирования масштаба по любой оси дважды щелкните по изображению оси.
- Для изменения параметров самого изображения графика дважды щелкните по графику. В открывшемся после этого окне имеются обширные возможности выбора типа, цвета и размера изображения (например, можно выбирать форму и размер точек)
- Для нанесения надписи на поле графика надо «щелкнуть_правой_кнопкой» в том месте, где примерно должна быть надпись, и выбрать в контекстном меню пункт ADD_TEXT. . Остальные приемы — те же, что и при редактировании осей.
- Для переноса графика из Origin в текстовый редактор обратитесь в главное меню FILE / EXPORT_PAGE. Экспорт в форматы BMP, GIF даст растровое изображение (с весьма ограниченными возможностями масштабирования), а в форматы WMF, EMF — векторное, т.е. произвольно масштабируемое. (Различия состоят в том, что в растровом файле содержится результат построения изображения, а в векторном — способ или алгоритм этого построения). Проблемы совместимости с редактором Word минимальны для WMF и EMF — форматов, хотя сложные графики в этих форматах могут иногда давать объект (или файл) ужасающего объема (они ведь передают структуру графика абсолютно точно ! 😉 ).
- Знаки арифметических действий, сравнения и логических операторов, разделители ( ) , ; , синтаксис операторов if, for, while, switch — как в языке С.
- Регистр символов — произвольный. Например: Arg2, arg2 и ARG2 — это одна и та же переменная.
- Подстановка колонки из активной таблицы в качестве единого операнда в формулу делается функцией col() Например: col(circ)=2*pi*col(radius)^2; причем обе колонки circ, radius должны заранее существовать.
- Активизация таблицы — оператор edit. Пример : edit mydata2; делает таблицу mydata2 активной, после чего функция col( ) будет автоматически относиться к ее столбцам.
- Подстановка колонки из любой существующей таблицы в качестве единого операнда в формулу: . (По этой причине, в отличие от C, внутри имен простых переменных знак подчеркивания здесь запрещен). Пример сложения одноименных столбцов из разных таблиц: mydata3_arg1=mydata1_arg1+mydata2_arg1;
- Индексация массивов — как в языке C, квадратными скобками [ ] . Однако действий в циклах, где это можно, следует всячески избегать из-за их медленности, поскольку программа LabTalk обрабатывается не компилятором, а интерпретируется. Из положения следует пытаться находить выход путем поиска таких функций, которые обеспечат необходимые действия с помощью быстродействующих операций над целыми массивами данных.
- Еще некоторые полезные функции (подробное описание см. в Help‘е):
- b=sum(a); в столбце b проинтегрирует a и кроме того создаст текущий объект sum с многими характеристиками столбца a, например, sum.mean — это будет среднее значение по a. Объект sum просуществует до того момента, как будет снова изменен.
- diff( ); продифференцирует столбец,
- limits(); найдет границы области значений данных и сформирует соотв.объект, что очень удобно для отсева промахов, выходящих за «три-сигма»
- create a N; создаст (не отображаемый на экране) вектор a длиной N, а оператор edit a позволит при необходимости его увидеть (создаст новую таблицу со столбцом a, имеющим статус «disregard»). Заметим, что неотображаемые объекты занимают значительно меньше места и быстрее обрабатываются, поэтому промежуточные результаты в вычислениях (после отладки программы) предпочтительно сделать неотображаемыми.
- del a; ликвидирует объект a (т.е. высвобождает память компьютера)
- min( ); max( ); создадут текущие объекты, содержащие экстремальные значения и их индексы (положение в пределах столбца).
- wks — текущий объект с параметрами активной таблицы. Например, свойство wks.maxrows отображает число занятых данными строк в активной таблице, а wks.nrows — полное число строк, в том числе не заполненных данными.
- На этапе первоначальной отладки программируйте в окнах SET_COLUMN_VALUES
- Если программа заработала, то откройте окно WorksheetScript через главное меню TOOLS / WORKSHEET_SCRIPT и перенесите в него отлаженные операторы.
- Если эта разработка Вам нужна еще на потом, то сохраните каркас таблицы вместе с программой через главное меню: FILE / SAVE_TEMPLATE_AS.
Примечание для уже знакомых с программированием
- Понятие области видимости переменных отсутствует, в результате чего разбивка длинной программы на блоки, делаемые разными авторами, сопровождается проблемой выяснения — откуда какая переменная «пришла» и какое ее значение на входе в «блок».
- Поддерживается только 28 текстовых однобуквенных переменных в формате , большая часть которых являются системными, и их смысл надо запоминать. Функции обработки строк отсутствуют, а вместо них имеется довольно малочитабельное правило подстановки.
- Многие функции и операторы, добавленные в LabTalk по сравнению с языком C, имеют труднозапоминаемую форму . Например, в LabTalk-программе (не в меню) вывод данных на график заказывается несколькими вызовами одной и той же команды Mark с разными опциями, а атрибуты графика выражаются десятичными числами.
- И уж совсем «страшилка». Отмечались отдельные случаи, когда правильная программа на языке LabTalk на одном компьютере выполнялась, а на другом давала неверный числовой ответ ]:-[ .
- отсутствуют ставшие уже привычными автотабуляция, цветовая маркировка и ДАЖЕ не задействована клавиша Delete (в силу чего удалять текст можно только клавишей Backspace, т.е. «с конца»). Количество же знаков в «табуляторе» столь велико, что ничего не остается как сплюнуть и писать текст просто в столбец 🙂 .
- при отладке, после выполнения (или, при наличии синтаксической ошибки, — молчаливого невыполнения) выделенного куска программы курсор «отлетает» на конец программы и всякий раз должен быть вручную возвращен на исходное место.
- При распечатке результатов вычислений и диагностических сообщений в то же окно (в конец) они не снабжаются знаком комментария, в силу чего впоследствии воспринимаются программой как ошибки.
- Содержимое окна ScriptWindow не входит в проект, а сохраняется отдельно.
- и т.д., и т.п. 🙂
- На этапе первоначальной отладки программируйте в окнах SET_COLUMN_VALUES
- Если программа заработала, то откройте окно WorksheetScript через главное меню TOOLS / WORKSHEET_SCRIPT и перенесите в него отлаженные операторы.
- Если эта разработка Вам нужна еще на потом, то сохраните каркас таблицы вместе с программой через главное меню: FILE / SAVE_TEMPLATE_AS.
- Если перечисленные действия все же не позволяют решить задачу обработки большого объема данных при поточных вычислениях, смените версию продукта на 7.5 и изучайте классы языка «Origin C».
- Если и это не помогает, то пользуйтесь MatLab, Statistica, Excel, SPSS.