НОУ ІНТУЇТ | лекція | Робота з графікою: візуалізація функцій однієї змінної

6.2. Опції графічних функцій побудови двовимірних об'єктів

Зовнішній вигляд зображень, одержуваних за допомогою двовимірних графічних функцій, може змінюватися в залежності від бажання користувача. У цьому йому допомагають додаткові аргументи функцій - опції. Всі опції задаються у вигляді підстановок, тобто, як Opt-> val, де Opt - заголовок опції, а val - задається значення ( А. Н. Прокопеня і А. В. Чічурін [5, с. 45] ).

З однією з опцій, що змінюють спосіб відображення ліній графіків, PlotStyle, ми вже познайомилися вище. В даному пункті приділимо увагу іншим графічним опцій.

Дуже часто, в залежності від поведінки зображуваних залежностей, координати перетину осей на малюнку знаходяться не в точці (0,0). Щоб самостійно встановити ці координати (причому не обов'язково в точці (0,0)), використовується опція, що задається в вигляді AxesOrigin -> {x0, y0}.

Опція GridLines накидає на малюнок сітку вертикальних і горизонтальних ліній. За замовчуванням координатна сітка на малюнку відсутній. При завданні опції у вигляді GridLines-> Automatic лінії виходять з точок координатних осей з координатними відмітками. Проте нинішнє становище ліній можна визначити самостійно, задавши опцію у вигляді GridLines -> {{gridx1, gridx2, ...}, {gridy1, gridy2, ...}}, де gridx1, gridx2, ... вказують положення лінії по осі абсцис , а gridy1, gridy2, ... - по осі ординат. Значеннями gridx і gridy можуть бути не тільки звичайні числа, відповідні координатам на осях, а й списки {n, Directive [d1, d2, ...]}, де обов'язковий аргумент n задає положення лінії, а d1, d2, ... є директиви, які слід застосувати до цієї лінії (колір, тип, товщина і ін.).

Як було зазначено вище, Mathematica, будуючи графіки безперервних залежностей, обчислює значення функції всього в декількох точках. Число точок, в яких спочатку обчислюється значення функції, можна задавати самостійно за допомогою опції PlotPoints. Принцип, за яким визначається кількість точок побудови, описує Е. М. Воробйов [1, с. 79] . За замовчуванням їх кількість дорівнює 25. Однак якщо кут між послідовними сегментами перевершує деякий заданий програмою значення, то проводиться дроблення інтервалу між сусідніми точками, і, таким чином, число точок, в яких обчислюється функція, автоматично збільшується.

При використанні так званого адаптивного алгоритму обчислення функції в декількох точках призводить до зменшення часу обчислень, але може привести до зменшення точності. Якщо точністю нехтувати не можна, то слід задати наступну опцію: Method -> {Compiled-> False}.

на малюнку 6.6 ми побудували квадратичную параболу. У прикладі In [1] ми не використовували ніяких додаткових опцій. У прикладі In [2] ми змінили колір і товщину лінії графіка за допомогою опції PlotStyle -> {Green, Thick, Dashed}, перенесли початок координат в точку (0,0), задавши AxesOrigin -> {0,0}, за допомогою опції GridLines -> {{6,8, {10, Directive [Red, Dashed, Thickness [0.01]]}, 12,14}, {10,20,30}} накинули на малюнок сітку, змінивши колір, товщину і тип однією з її ліній, а також попутно підвищили до ста число точок, в яких обчислюється функція, опцією PlotPoints-> 100 і відмовилися від прискорення побудови графіка за рахунок зменшення точності за допомогою опції Method -> {Compiled-> False}.

Детальніше про опції AxesOrigin і GridLines см. Книги Е. М. Воробйова [1, с. 77-78] і А. Н. Прокопені і А. В. Чічуріна [5, с. 52] .


Мал.6.6.

Вплив специфічних опцій функцій Plot і ParametricPlot на зображення

Опція AspectRatio визначає ставлення висоти двовимірного малюнка до його ширині. За замовчуванням їй задано значення 1 / GoldenRatio, де GoldenRatio є іменована константа, "золотий перетин", приблизно рівне 1.61803. Користувач може присвоїти опції будь чисельне значення, керуючись необхідністю.

За допомогою опції Axes можна вказувати на малюнку або прибирати з нього координатні осі. Якщо опції присвоєно значення True (воно ж задається за замовчуванням), то будуть намальовані всі осі. Якщо присвоєно значення False, то осей на малюнку не буде зовсім. Якщо опція задана як список Axes -> {axx, axy}, то вираз axx визначає наявність на малюнку осі абсцис, а axy - осі ординат, причому axx і axy можуть набувати значень True і False.

Якщо осі все-таки були збережені на малюнку, то може стати в нагоді опція AxesStyle, яка дозволяє управляти способом зображення осей. За допомогою графічних директив можна задавати відносну товщину осей, використовуючи Thickness [d], насиченість лінії GrayLevel [d], колір в різних колірних координатах RGBColor [d1, d2, ...] і Hue [d1, d2, ...], довжину послідовних ділянок переривчастої лінії Dashing [d1, d2, ...], причому d1, d2, ... укладені в інтервалі від 0 до 1.

Опція AxesStyle не впливає на зовнішній вигляд малюнка, якщо Axes-> False.

Mathematica самостійно розставляє координатні позначки на осях, однак якщо користувача автоматична розстановка не влаштовує, він може розставити їх самостійно за допомогою опції Ticks -> {{x1, x2, ..}, {y1, y2, ...}}, де x1 , x2, .. і y1, y2, ... вказують координати відміток на осях абсцис і ординат, відповідно. Один з внутрішніх списків можна замінити на Automatic, тоді по цій осі розстановка відміток буде автоматичною. Коли осей на малюнку немає (в разі Axes-> False), опція Ticks ніякого дії на малюнок не надає.

Опція AxesLabel дозволяє підписати осі: задається також у вигляді списку {Xname, Yname}, де Xname, Yname назви осей абсцис і ординат, відповідно. У разі якщо Axes-> False, опція AxesLabel ніяких написів на малюнку не зробить.

Дати назву всьому малюнку можна за допомогою опції PlotLabel.

За замовчуванням всі малюнки будуються на білому тлі, однак кольором фону можна управляти за допомогою опції Background. Колір задається в одній з трьох колірних схем: для дисплеїв це RGB [d1, d2, d3] (червоний, синій, зелений) і Hue [h, s, b] (h - обов'язковий параметр, що визначає положення кольори в кольоровій Hue-палітрі , s - насиченість, b - яскравість кольору; h, s, b знаходяться на відрізку від 0 до 1), а для кольорових принтерів CMY [d1, d2, d3, d4] (синій, пурпуровий, жовтий, чорний). Можна також визначити сірий колір фону і міняти його відносну інтенсивність, задавши опцію у вигляді Background-> GrayLevel [d], де d може змінюватися в межах від 0 до 1, при цьому d = 0 встановлює чорний фон, d = 1 - білий фон .

Опція ColorOutput дозволяє "підігнати" колірні директиви під конкретне графічний пристрій. Так установка ColorOutput-> GrayLevel розфарбовує зображення у відтінки сірого.

Опція TextStyle дозволяє задати тип і розмір шрифту тексту на малюнку.

на Мал. 6.7 ми побудували параметричну залежність 2 * Sin [v] від 3 * Cos [v]. При цьому в прикладі In [1] ми обійшлися автоматичним завданням всіх опцій. У прикладі In [2] ми задали відношення висоти до ширини малюнка як зворотний експоненту за допомогою опції AspectRatio-> 1 / E, змінили колір і товщину осей, задавши опцію AxesStyle -> {{Thick, RGBColor [0.9,0,0.8]} , {Thick, Green}}, задали власні позначки на осі абсцис Pi / 2, 0 і -Pi / 2, залишивши автоматичне завдання відміток по осі ординат, Ticks -> {{0, Pi / 2, -Pi / 2}, Automatic}, зробили написи по осях, AxesLabel -> { "Вісь абсцис", "Вісь ординат"}, і підписали весь малюнок, PlotLabel -> "малюнок", збільшили шрифт написів на малюнку і змінили їх колір, TextStyle -> {16 , Blue}, а також зробили фон малюнка світло сірим, Background-> GrayLevel [0.9].

Детальніше про опції AspectRatio, ColorOutput і опціях управління координатними осями см. Книги Е. М. Воробйова [1, с. 72-74] і А. Н. Прокопені і А. В. Чічуріна [5, с. 51-52] .


Мал.6.7.

Зміна зовнішнього вигляду малюнка за допомогою опцій. приклад 1

Опція, задана у вигляді Frame-> True, укладає малюнок в прямокутну рамку. Кожну сторону цієї рамки, за годинниковою стрілкою, починаючи з нижнього боку, можна підписати за допомогою опції FrameLabel -> { "side1", "side2", "side3", "side4"}. За замовчуванням написи side1 і side3 розташовуються горизонтально, а side2 і side4 - вертикально (і читаються знизу вгору). Розташувати всі написи горизонтально дозволяє опція RotateLabel-> False. Якщо опція задана у вигляді FrameLabel -> "label", то напис label поміщається біля лівого боку рамки. Опція FrameStyle виконує ті ж функції по відношенню до рамки, що і опція AxesStyle - до осей. Опція FrameStyle не впливає на зовнішній вигляд малюнка, якщо Frame-> False.

Опція може бути задана у вигляді Frame -> {{bleft, bright}, {bupper, blower}}, де bleft, bright, bupper і blower визначають присутність лівої, правої, верхньої та нижньої меж рамки, відповідно. Ці аргументи можуть приймати тільки значення True або False (відповідно, наявність або відсутність лінії).

Опція Frame -> {uplow, lefrig} визначає наявність (відсутність) одночасно верхній і нижній або правій і лівій кордонів рамки.

Якщо задана опція у вигляді Frame-> True, то координатні позначки ставляться не на осях, а на сторонах рамки. Самостійно поставити розстановку відміток на рамці можна опцією FrameTicks, дія якої аналогічно дії опції Ticks для осей. Аналогічно, коли рамки на малюнку немає (в разі Frame-> False), опція FrameTicks не впливає на малюнок.

Для вибору області графіка залежності, яка буде відображатися на малюнку, є опція PlotRange. За замовчуванням відображається найбільш характерна для залежності частину графіка, а нехарактерні регіони ігноруються. Якщо привласнити її значення All, то будуть відображатися всі значення. Вибрати область відображення самостійно можна, задавши опцію у вигляді PlotRange -> {{xmin, xmax}, {ymin, ymax}}, де {xmin, xmax}, {ymin, ymax} визначають межі по осях абсцис і ординат, відповідно, в яких буде побудований графік.

на Мал. 6.8 ми побудували кубічну параболу на   Мал . У прикладі In [1] ми обійшлися автоматичним завданням всіх опцій. У прикладі In [2] ми побудували графік в заданих межах, PlotRange -> {{2,8}, {- 10,30}}, уклали малюнок в прямокутну рамку, Frame-> True, і позбулися координатних осей, Axes- > False, підписали всі сторони прямокутної рамки, FrameLabel -> { "низ", "ліво", "верх", "право"}, і поміняли колір її ліній, FrameStyle -> {{Red}, {Green}, {Blue }, {Magenta}}, самостійно задали положення координатних відміток на стороні рамки уздовж осі абсцис, FrameTicks -> {{Automatic, None}, {{2,5,8}, None}}.

Детальніше про опції PlotRange і опціях управління рамкою см. Книги Е. М. Воробйова [1, с. 73-75] і А. Н. Прокопені і А. В. Чічуріна [5, с. 51-52] .


Мал.6.8.

Зміна зовнішнього вигляду малюнка за допомогою опцій. приклад 2

На малюнках особливим чином можна виділяти не тільки лінії графіків, а й цілі галузі. Для цього використовується опція Filling. Якщо на малюнку побудований тільки один графік, то опції можна задати наступні значення: Axis, Top, Bottom, якийсь чисельне значення.

У In [1] на Мал. 6.9 кілька разів побудуємо одну і ту ж криву, задаючи при кожному побудові різні значення опції Filling. При завданні опції у вигляді Filling-> Axis заповнюється кольором область між лінією графіка і віссю абсцис (верхнє ліве зображення в Out [1] на Мал. 6.9 ), Filling-> Тop - область вище графіка, а Filling-> Bottom - область нижче графіка (верхнє праве і нижнє ліве зображення, відповідно), при завданні опції деякого значення n, Filling-> n, кольором заповнюється область між лінією графіка і прямий, паралельної осі абсцис, що відповідає значенню n (нижнє праве зображення).


Мал.6.9.

Виділення області на малюнку з одним графіком

Якщо на одному малюнку зображені графіки відразу декількох залежностей, до областей, обмеженим лініями цих графіків можна застосовувати ще більш виборче виділення. на Мал. 6.10 ми побудували графіки двох функцій однієї і тієї ж змінної. Задавши опції у вигляді Filling-> Axis (верхнє ліве зображення на Мал. 6.10 ), Ми заповнили кольором область між лініями графіків та віссю абсцис, при цьому області під різними графіками заповнюються різними кольорами, а область перекриття областей заповнюється суперпозицией цих квітів. Опція у вигляді Filling -> {2-> Axis} заповнює кольором тільки область під лінією графіка другий (в списку аргументу) функції (верхнє праве зображення). При завданні Filling -> {1 -> {2}} (ліве нижнє зображення) заповнює область між графіками функцій під номерами 1 і 2. Колір заповнення областей, безумовно, можна вибирати самостійно. Для цього ми поставили опцію у вигляді Filling -> {1 -> {{2}, {Green, Red}}} (нижнє праве зображення), і тепер область між кривими буде заповнюватися зеленим кольором, якщо перша крива знаходиться під другий, і червоним - навпаки, коли перша крива знаходиться над другою.

Безумовно, можлива більш гнучке налаштування оформлення областей на малюнках, але з огляду на її специфічності залишимо цю тему за межами нашого розгляду в рамках реального курсу.

Детальніше про опції заповнення областей між графіками см. Книгу В. П. Дьяконова [2, с. 445-448] .


Мал.6.10.

Виділення області на малюнку з одним графіком