Главная страница Visual 2000 · Общий список статей
Пакет Grapher — обработка двумерных функцийАндрей Колесов, Ольга Павлова
© 1999, Андрей Колесов, Ольга Павлова
Авторский вариант. Статья была опубликована c незначительной
литературной правкой в журнале "КомпьютерПресс" № 4/99 и 5/99 (компакт-диск).
Загрузить все рисунки, прилагаемые
к статье (архивный файл — 138 Кб)
Сейчас речь пойдет...
Grapher 1.2 для Windows 3.x
Новшества Grapher 2.0
Grapher 2.0 как ActiveX-сервер
Сейчас речь пойдет о другом популярном продукте фирмы Golden Software, программе Grapher, которая предназначена для математической и графической обработки данных, описываемых одномерной функцией y=f(x). Подобные средства имеются во многих пакетах, связанных с обработкой числовой информации (электронные таблицы, программы статистического анализа и т. п.), но на практике они часто оказываются недостаточно мощными для решения специализированных задач (ограничения на сложность графиков, типы изображений и т.п.) и/или слишком неповоротливыми в работе.
Первая, DOS-совская версия Grapher была создана в 1985 г. и была в те годы хорошо известна пользователям ПК в советских научных и проектных институтах. В 1993 г. Golden Software выпустила версию Grapher 1.0 для Windows 3.x, год спустя — версию 1.26, а в ноябре 1998 г. — новый 32-разрядный вариант Grapher 2.0 для Windows 95/98 и NT 4.0.
Как и в случае с Surfer, мы сначала расскажем о возможностях Grapher 1.2 (с ней многие пользователи уже знакомы, правда по нашим наблюдениям — с помощью пиратских копий), а потом — о новшествах последней версии 2.0.
Говоря о функциональных возможностях Grapher 1.2, нужно прежде всего сказать, что в нем нет ограничений ни на число графиков в одном рисунке, ни на число кривых в одном графике, причем каждая кривая может содержать до 32 тыс. точек (X,Y). На одном графике разрешается размещать несколько осей с различными масштабами и единицами измерения данных. Очень удобный режим представления данных можно реализовать в виде изображения нескольких осей Y с одной общей осью X (рис. 1). Сами графики выводятся как с горизонтальным положением оси X, так и с вертикальным. Последнее может быть особенно полезно для данных типа параметров некоторых образцов, отобранных на разных глубинах скважин.
На графике разрешается использовать не только линейные и логарифмические, но и вероятностные оси в различных комбинациях. При этом разметка осей, вывод подписей и легенды выполняются автоматически или задаются пользователем. Для вывода применяется несколько типов графиков: линейные, символьные, диаграммы (рис. 2 и 3).
Кроме этих традиционных видов представления данных, реализован еще один, который позволяет с помощью специального символа изобразить сразу четыре значения некоторой величины для одного аргумента. Примером таких данных является величина курса некоторых акций на бирже в течение дня, которая характеризуется четырьмя значениями: на моменты открытия и закрытия торгов, а также минимальная и максимальная за день. Именно поэтому подобный вид представления данных часто называют "open-high-low-close". На рисунке 4 представлен график изменения индекса Доу Джонса для варианта "high-low-close" (три значения индекса за день).
Оси графиков разрешается располагать под разными углами. Используя это, можно, например, сделать изображение треугольной диаграммы состояния, каждая точка которой характеризуются набором трех величин X, Y, Z (рис. 5).
Для всех типов графиков реализовано управление толщиной, цветом и стилем любых линий, использование готовых стилей и создание своих собственных. Набор встроенных инструментов рисования позволяет наносить на график специальные элементы рисунка (окружности, прямоугольники, линии и пр.). С помощью стандартных манипуляций мышью можно легко изменять размер и положение изображения; масштабировать его для более детального изучения (рис. 6); пролистывать видеостраницу, просматривая большие изображения, не помещающиеся на экране; добавлять текстовые пояснения, легенду и дополнительные графические изображения, в том числе импортированные из других приложений.
Графики могут строиться на основе наборов точечных (дискретных) значений X,Y и задаваемых пользователем функций типа y=f(x) (рис. 7) или параметрических уравнений вида y=y(t), x=x(t). Пакет позволяет импортировать наборы исходных данных из файлов форматов .DAT и .SLK, а также из файлов электронных таблиц Lotus 1-2-3 и Excel. Откорректированные значения запоминаются в форматах .DAT и .SLK.
Данные для разных кривых одного графика разрешается брать как из одного файла (например, из его разных строк или столбцов), так и из нескольких. Последний вариант очень удобен при обработке результатов серии экспериментов, каждый из которых характеризуется своим набором данных. Обработка таких комбинаций данных во многих пакетах (в частности, в электронных таблицах) затруднена — там требуется вид X, Y1,Y2,..., то есть когда все значения по оси Y приведены к единому набору значений по оси X.
Пакет имеет встроенную электронную таблицу, позволяющую корректировать, сортировать, преобразовывать данные и вычислять их статистические характеристики. Многооконный интерфейс пакета обеспечивает эффективную настройку рабочей среды. Например, на экран можно одновременно вывести два окна, в одном из которых будет электронная таблица, а в другом - график, и при редактировании данных график будет автоматически обновляться. Для перехода от графика к электронной таблице надо только нажать одну клавишу или щелкнуть кнопкой мыши (рис. 8).
К шести методам аппроксимации экспериментальных данных кривыми, реализованным еще в версии для DOS (линейной, логарифмической, степенной, экспоненциальной, сплайновой и полиномиальной), добавлен еще один — метод "скользящего осреднения" (рис. 9). При этом автоматически вычисляются статистические характеристики аппроксимации, которые также можно вывести в виде графика (рис. 10).
Для отображения диапазонов разброса данных предусмотрены вертикальные и горизонтальные "полоски ошибок" (рис. 11), для которых реализовано управление размером и цветом. На график наносятся данные, полученные из таблицы или вычисленные самим пакетом: среднее значение, стандартная ошибка среднего, а также среднеквадратичное отклонение выборки (со смещением и без смещения).
В пакет встроен и текстовый редактор для создания текстовых блоков, включающий специальные средства ввода математических формул. Такой же редактор имеется и в пакете Surfer; шрифты в Surfer и Grapher также полностью аналогичны, поэтому все, что говорилось о русификации шрифтов Surfer, верно и для Grapher. Сформированные изображения хранятся в файлах формата GRF.
В документации на пакет версии 2.0 приводится список из 50-ти новшеств, многие из которых являются действительно очень полезными. В первую очередь, речь идет о 32-разрядном приложении, которое может работать в среде Windows 9x и Windows NT 4.0. Нам не удалось заметить ускорения времени выполнения расчетных операций (они происходят слишком быстро), но графический вывод в новом пакете работает быстрее только при наличии оперативной памяти свыше 32 Мб. Наверное, повышение быстройдействия ушло на улучшение качества вычислений — все данные теперь обрабатываются в формате чисел с двойной точностью (15 десятичных знаков).
Для упрощения управления сложными изображениями в версии 2.0 используется новый Object Manager, который позволяет представить список графических объектов в виде иерархического дерева (рис. 12). Существенно расширены функции встроенного редактора для создания текстовых блоков, в том числе с использованием сложных математических формул (рис. 13). При этом процедура размещения различных элементов формул выполняется довольно просто с применением специальной библиотеки шаблонов (рис. 14). Полезной также является возможность отмены операций (undo) с неограниченным уровнем отката.
Явным недостатком предыдущей версии пакета были весьма ограниченные возможности экспорта-импорта как графических изображений, так и числовых данных. В Grapher 2.0 для выполнения таких операций можно применять практически все известные форматы файлов. Кроме того, в самом пакете появилась удобная функция создания и использования шаблонов графиков. Электронная таблица позволяет сортировать данные сразу по трем параметрам. В ней можно также управлять шириной и высотой ячеек, использовать форматирование данных, в том числе с заливкой фона.
В целом функции управления режимами вывода графиков существенно расширены. Оцифровку данных (с последующей их записью в отдельный файл) на графическом изображении можно выполнять непосредственно на экране. К типам графиков, реализованным в предыдущей версии, в Grapher 2.0 добавлены еще два варианта: круговые диаграммы (рис. 15) и изображения данных, заданных в полярной системе координат (рис. 16). Помимо этого в пакете реализован механизм автоматического расчета и вывода гистограмм (рис. 17). Полезной может оказаться возможность заливки цветом под графиком (рис. 18).
Grapher 2.0 как ActiveX-сервер
Принципиально важным новшеством Grapher 2.0 стало то, что теперь он реализован в виде ActiveX-сервера и представляет собой иерархический набор ActiveX-объектов. Это позволяет использовать программу в качестве компонента в интегрированных пользовательских систем — под управлением любых приложений-контейнеров, поддерживающих технологию ActiveX, в том числе VB и MS Office 97.
В целом Grapher 2.0 соответствует объектной структуре (иерархии объектов, методов и свойств), представленной в виде стандарта де-факто в MS Office 97. Однако в своих продуктах — Surfer и Grapher — компания Gonden Software реализует отличный от Microsoft вариант механизма создания пользовательских приложений — более упрощенный, но весьма удобный в работе.
Для создания и исполнения скриптов в самом пакете применяется автономное приложение Scripter 3.0, функциональные возможности которого существенно расширены по сравнению с имеющейся в составе Surfer 6.0 аналогичной программой Gsmac. Фактически Scripter является облегченным вариантом Visual Basic 6.0, но реализован не по лицензии с Microsoft, а на базе технологий независимых разработчиков — компаний Sax Software и Polar Engineering and Consulting. Внутренний язык Sax Basic полностью совместим c VB 6.0 и имеет некоторые полезные расширения.
На наш взгляд Scripter 3.0 представляет вполне самостоятельную ценность в качестве хорошей альтернативы VB для создания управляющих приложений-контейнеров (рис. 19). Хотелось бы особо отметить очень удобную, методически правильно построенную (в отличие от продуктов Microsoft) встроенную справку по используемой системе программирования.