Математика в хмарах. Частина 3. Графіка в Sage
- двовимірні графіки
- Малюнок 1. Двовимірний графік відображений за замовчуванням (вгорі) і з заданим співвідношенням сторін...
- Малюнок 2. Приклад контурного графіка в Sage. Показаний також графік в "перевернутих" координатах...
- Малюнок 3. Спеціальні графіки в Sage. Вгорі: накладення полярних кривих із заповненням кольором між...
- Малюнок 4. Тривимірна графіка в Sage. Показано накладення на одному графіку звичайної і параметричної...
- Малюнок 5. Вкладені сфери з "вирізами" - складна поверхня, отримана за допомогою функції implicit_plot3d...
- Ресурси для скачування
Графіка - це та область, в якій Sage залишає далеко позаду будь-яку іншу вільну CAS і наближається до своїх комерційним конкурентам.
У режимі документа двовимірні графіки в документах Sage відображаються у вигляді статичних малюнків, що завантажуються з сервера, а тривимірні - в Java-апплетах Jmol , Які дозволяють інтерактивно повертати і масштабувати їх. Для генерації двовимірних графіків за умовчанням використовується відома своїми величезними можливостями бібліотека matplotlib , Написана на мові Python. Якість двовимірних графіків в matplotlib прекрасне, тому можливість використання інших програм (наприклад gnuplot) зазвичай залишається незатребуваною.
У Sage підтримуються звичайні, параметричні, полярні, контурні і векторні графіки, а також графічні примітиви, такі як лінії, кола і багатокутники. Кожен графік представляє з себе окремий об'єкт і має методи для відображення, записи в файл і т.п. Найцікавіше властивість графічних об'єктів - це можливість їх об'єднання в комбіновані графіки за допомогою операторів + або + =. Графіки накладаються один на одного на зразок прозорих шарів в будь-якому графічному редакторі, що відкриває практично необмежені можливості.
За допомогою функції graphics_array на одному графіку можна відобразити кілька незалежних «панелей», упорядкованих у вигляді таблиці і містять різні графічні об'єкти.
Функції побудови графіків приймають безліч параметрів, тому в цій статті будуть розглянуті лише деякі з них. Довідку по іншим легко отримати через вбудовану довідкову систему Sage.
двовимірні графіки
Двовимірні графіки будуються за допомогою функцій plot або parametric_plot. Перший параметр цих функцій - об'єкт або масив об'єктів, які є викликаними (callable), тобто функціями або символьними змінними. Інші параметри визначають спосіб побудови графіка (число точок на обраному інтервалі, параметри адаптивного розміщення точок в залежності від похідних, визначення розривів і асимптот) і його зовнішній вигляд (колір, ширина, стиль і прозорість ліній, тип і розмір символів для точок графіка, а також колір і ширина меж символів і їх заливка). Є також можливість «проріджувати» точки (параметр exclude). Можна заповнювати простір під кривою заданим кольором з підтримкою прозорості (параметр fill). При цьому можна, наприклад, легко заповнити кольором область між двома кривими, що нелегко зробити навіть в спеціалізованих пакетах наукової графіки.
Тип ліній задається інтуїтивно зрозумілими строковими константами. Наприклад,: - пунктир, -. - штрих-пунктир, - - штрих. Тип символів задається аналогічним чином. Наприклад, + - хрестики,. - точка, s - квадрат (square). Такі константи часто набагато зручніше і лаконічніше символьних, начебто DASH_DOT.
Наприклад, так можна створити графік з двома кривими різного кольору і з різними типами ліній. Додатково на графік поміщений графічний примітив (коло).
p = plot (cos (x ^ 2), - pi, pi) p + = plot (sin (x ^ 2), (- pi, pi), color = 'red', linestyle = '-') p + = circle ((1,0), 0.25, rgbcolor = (0.2,0.5,0.8), fill = True)
Щоб відобразити цей графік, потрібно ввести p або p.show (). Функція show дозволяє передавати додаткові параметри, наприклад, пропорції графіка (aspect ratio), а також керувати розміром поля графіка, шрифтом підписів і наявністю рамки і осей. На рис. 1 показаний результат відображення графіка за замовчуванням і з «примусовими» пропорціями 1: 1 в рамці.
Малюнок 1. Двовимірний графік відображений за замовчуванням (вгорі) і з заданим співвідношенням сторін (внизу).
Спеціальні графіки і графічні примітиви
Sage підтримує геометричні примітиви arrow (стрілка), circle (коло), disk (незважаючи на нелогічне назву, цей примітив відображає кругової сектор), line (відрізок прямої з можливістю задати тип, колір, прозорість і тип точок), point (точка), text (текст в заданій позиції з можливістю вказати розмір шрифту, колір, довільний кут повороту і вирівнювання), polygon (довільний багатокутник з можливістю заповнення і налаштуванням типу лінії).
За допомогою геометричного примітиву polygon можна створювати складні замкнуті фігури, передаючи в якості параметра масив вершин багатокутника. У деяких випадках це буває зручніше, ніж використання параметричного графіка, особливо коли крива виходить не з простої аналітичної формулою, а в результаті якогось складного алгоритму або просто читається з файлу. Аналогічно можна використовувати і примітив line, якому також передається масив точок (так, наприклад, можна створити «перевернутий» графік в координатах y: x, Рис. 2).
Sage підтримує безліч спеціальних типів графіків, повний список яких можна побачити, ввівши команду sage.plot.plot? . Серед них параметричні (parametric_plot), неявні (implicit_plot), полярні (polar_plot), графіки нерівностей (region_plot), контурні (contour_plot), векторні поля (plot_vector_field) і т.д. Деякі з них показані на Рис. 3.
Контурні графіки в Sage створюються за допомогою функції contour_plot. Будучи тривимірними по-суті, але двовимірним по типу відображення, вони можуть вільно комбінуватися з будь-якими іншими двовимірними графічними об'єктами. Для контурних графіків можна гнучко налаштовувати тип і колір контурів, тип їх заливки (колірну гаму), відображення підписів контурів і т.п. На рис. 3 показаний приклад контурного графіка з накладеними на нього лінією (графік з «перевернутими» осями) і складним полігоном.
Малюнок 2. Приклад контурного графіка в Sage. Показаний також графік в "перевернутих" координатах (y, x) на основі примітиву "line" і складний полігон.
Існує також функція density_plot, яка робить те ж саме, що contour_plot, але малює не дискретні контури (ізолінії, відповідні декільком конкретним значенням «висоти»), а суцільний колірної градієнт з гнучко настроюється послідовністю кольорів.
Графіки в полярних координатах будуються за допомогою функції polar_plot. Параметри цієї функції такі ж, як і у plot, але область визначення відраховується в радіанах.
Функція region_plot відображає зафарбовані область, в якій передане логічне вираз, складене з довільних функцій двох змінних, істинно. Вона використовується для відображення нерівностей і систем нерівностей довільної складності. Можна задавати кольори внутрішньої і зовнішньої областей, а також тип і колір «лінії розділу».
Функція bar_chart будує стовпчастий графік за списком значень, хоча її можливості скромні в порівнянні зі спеціалізованими програмами - неможливо розфарбувати стовпчики окремо і використовувати кілька списків з даними.
Для побудови векторних полів в Sage є функції plot_vector_field і plot_vector_field3d, які приймають функції, що задають кожну з компонент векторів (дві в двовимірному і три в тривимірному варіантах). Є також функція plot_slope_field, що відображає ізолінії рівного нахилу для функції двох змінних у вигляді коротких «рисок» дотичних до них. На жаль, градієнтна розфарбування векторів згідно їх модулів не підтримується.
За допомогою функції complex_plot можна відобразити графік функції комплексної змінної. Кольором на ньому буде закодовано напрямок вектора комплексного числа, а інтенсивністю кольору - його модуль. Інтерпретувати такі графіки не завжди легко, але як дуже красивих ілюстрацій вони підходять як не можна краще (Рис 3).
У Sage є також можливість створювати анімовані графіки і записувати їх у вигляді gif-файлів .
Малюнок 3. Спеціальні графіки в Sage. Вгорі: накладення полярних кривих із заповненням кольором між ними, графіка region_plot для нерівності і графіка векторного поля. Внизу: графік complex_plot для комплексної функції з полюсами.
Тривимірні графіки і графіки неявних функцій
У Sage підтримуються як звичайні, так і параметричні тривимірні графіки (Рис. 4). Для них передбачені відповідні функції plot3d і parametric_plot3d. Їх параметри дуже схожі на відповідні параметри двовимірних аналогів, з деякими обмеженнями і доповненнями. Для тривимірних графіків можна додатково задати три довільних вирази для перетворення трьох відповідних координат (параметр transformation). Це дуже зручно для побудови поверхонь в довільних криволінійних координатах. Для тривимірних поверхонь можна гнучко задавати кольори і прозорість (параметр opacity). Тривимірні графічні об'єкти можна комбінувати один з одним і навіть з двовимірними графічними об'єктами (хоча практичної користі від таких «гібридних» комбінацій зазвичай небагато).
Малюнок 4. Тривимірна графіка в Sage. Показано накладення на одному графіку звичайної і параметричної поверхонь.
Нарешті, останній і дуже корисний тип графіків в Sage - графіки неявних функцій. Для їх побудови передбачені функції implicit_plot і implicit_plot3d. За допомогою цих функцій можна побудувати графік будь неявно заданої функції двох або трьох змінних. У тривимірному варіанті можна також задати параметр region - довільну логічну функцію трьох змінних, що вказує, які області показати на графіку, а які приховати (аналог функції region_plot для нерівностей двох змінних). Це відкриває практично безмежні можливості для побудови дуже складних фігур (Рис. 5).
Малюнок 5. Вкладені сфери з "вирізами" - складна поверхня, отримана за допомогою функції implicit_plot3d з параметром region.
У випадках, коли необхідно отримати тривимірну картинку високої якості, замість інтерактивного аплету Jmol можна використовувати відкритий трассировщик променів Tachyon, передаючи параметр viewer = 'tachyon' в саму функцію * plot3d або в метод show графічного об'єкта. В цьому випадку в документ буде вставлений статичний малюнок. Існує також можливість управляти трасувальником безпосередньо з Sage, задаючи, наприклад, положення джерел світла і параметри матеріалів, однак документація по цих можливостей мізерна і має на увазі гарне знання командного мови Tachyon.
Потрібно сказати, що використовуваний в Sage аплет Jmol спочатку розроблений для відображення тривимірних моделей молекул і візуалізації даних Квантовохімічні розрахунків, а зовсім не для побудови математичних поверхонь, тому він перевантажений абсолютно непотрібної в Sage функціональністю. Аплети Jmol досить ресурсомісткі і часто завантажуються гнітюче повільно.
Ресурси для скачування
Підпишіть мене на повідомлення до коментарів
Plot?