Тримапи являють собою дуже цікавий спосіб відображення багатовимірних даних. Причому, вони об’єднують на одному рисунку як числові так і номінальні дані. Хоча подібні методи відображення даних застосовуються, здебільшого, у маркетинговій практиці, для геолога вони також можуть стати у нагоді - можна наглядно охарактеризувати кількість проб по окремих породах і їхні властивості.
Для побудови тримапу ми використаємо пакет portfolio і добре нам відому таблицю granity, яку можна завантажити за посиланням на головній сторінці цього блогу:>library(portfolio)#завантажуємо пакет portfolio
Loading required package: grid
Loading required package: lattice
Loading required package: nlme#автоматично завантажуються потрібні пакети
>map.market(id=granity$NUM, area=granity$NUM, group=granity$label, color=granity$Al2O3, main="Тримап")#будуємо тримап
![]() |
| Тримап |
Проявіть терпіння - графік будується доволі повільно. При значних об’ємах таблиці (декілька тисяч рядків) процес побудови може тривати 10-20 хвилин.
Тепер давайте розберемось - що ми отримали і як цим користуватись. Велики прямокутники, обмежені сірими лініями показують загальну кількість проб, відібраних по тій чи іншій породі. Як видно на графіку - найбільше проб у нас відібрано по різним гранітам. Зелені прямокутники всередені - відображають окремі проби, а їхній колір вказує на вміст оксиду алюмінію. Зверніть увагу на те, що зелені прямокутники різні за площами - це результат підгонки їхніх контурів до границь великих прямокутників (різновидів порід). Саме через цю підгонку графік так повільно будується.
Єдине, що псує загальну картину - це "неправильна" шкала (із від’ємними значеннями) і сірий фон графіка. Але, як кажуть у народі: "...бувають моменти у житті, коли і оцет сприймається солодким".
Параметри команди map.market наступні: id задає унікальний ідентифікатор проби (він не повинен дублюватись в наборі даних); area вказує на ознаку, за якою будуть будуватись малі прямокутники (ми обрали вектор granity$NUM); group задає номінальну ознаку, за якою проби будуть групуватись і складатись у великі прямокутники; color вказує на ознаку, яка буде відображатись інтенсивністю кольору.
За умовчанням пакет portfolio будує лише зелені тримапи. Щоб розфарбувати графіки в інші кольори необхідно завантажити сторонню функцію treemapbrewer.r і завантажити бібліотеку RColorBrewer. Функцію treemapbrewer.r можна знайти за адресою http://dl.dropbox.com/u/10640416/treemapbrewer.r - просто перейдіть за посиланням і збережіть сторінку як файл з розширенням "*.r" у будь-яку директорію файлової системи (не обов’язково в поточну робочу директорію R). Функція treemapbrewer.r додає до команди побудови тримапів map.market можливості налаштування кольорів, залучаючи до цього процесу згадану вище бібліотеку RColorBrewer.
Із кольорів функція treemapbrewer.r надає нам наступні палітри змішаних кольорів: Blues, BuGn, BuPu, GnBu, Greens, Greys, Oranges, OrRd, PuBu, PuBuGn, PuRd, Purples, RdPu, Reds, YlGn, YlGnBu, YlOrBr, YlOrRd, BrBG, PiYG, PRGn, PuOr, RdBu, RdGy, RdYlBu, RdYlGn, Spectral. Всі вони являють собою поєднання двох, чи більше кольорів (це можна зрозуміти з абревіатури палітр). Давайте спробуємо побудувати тримап із трохи веселішою кольоровою гамою:
> install.packages("RColorBrewer")# встановлюємо пакет RColorBrewer
> library(RColorBrewer)# завантажуємо пакет RColorBrewer
> source("treemapbrewer.r")#завантажуємо функцію treemapbrewer.r в робочій простір R; якщо функцію було збережено не в поточну робочу директорію - треба вказати повний шлях до файла. Після завантаження функції - у робочому просторі R повинен з’явитись об’єкт "treemap"; це можна перевірити командою "ls()"
> treemap(id=granity$NUM, area=granity$NUM, group=granity$label, color=granity$Al2O3, main="Тримап", pal="YlOrRd", linecol="yellow", textcol="red")#будуємо тримап
![]() |
| Тримап із нестандартним кольоровим забарвленням |
Я думаю, що користувачі, дивлячись на команду побудови тримапу і графічний результат, самі здогадались який параметр за що відповідає. Саме так! Параметр pal відповідає власне за тіло тримапу, linecol - за колір розділових ліній, а textcol - за колір тексту всередені графіку. Спробуйте інші кольори! Вони також чудово виглядають і прикрасять собою будь-який звіт або науковий твір.


Немає коментарів:
Дописати коментар