Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3_R_візуалізація_2

.pdf
Скачиваний:
7
Добавлен:
07.02.2016
Размер:
529.01 Кб
Скачать

4. Графічні засоби та візуалізація в R. Функції barplot(), boxplot(), curve(), pie(), stripchart()

4.1. Теоретичний вступ

Поряд із функцією plot() в R використовується багато інших засобів візуалізації даних. Зокрема, це функції barplot(), boxplot(), curve(), pie(), stripchart() та інші. Загальний набір їх аргументів є подібним до функції plot(). Першій чи перші аргументи вказують на вектор(и) даних, за якими треба побудувати діаграму. Далі йдуть аргументи, що визначають особливості побудови її окремих елементів.

Функція barplot() використовується для створення стовпчастих (лінійчастих) діаграм. До її основних аргументів належать такі:

height – числовий вектор або матриця, що задають висоти стовпчиків;

beside – використовується, якщо height є матрицею і може набувати значень TRUE або FALSE; у першому випадку стовпчики діаграми групуються згідно із стовпчиками матриці, а у другому – будується діаграма із накопиченням;

width – числовий вектор, що задає ширину стовпчиків; це не обов’язків параметр, за його відсутності всі стовпчики будуть мати однакову ширину;

space – число або числовий вектор, що задають величину простору між стовпчиками;

names.arg – текстовий вектор, що вказує підписи стовпчиків або груп стовпчиків за віссю абсцис; якщо він не вказаний, то як підписи будуть використовуватися (якщо вони є) імена елементів вектора height або заголовки стовпчиків матриці height;

legend.text – вектор, що містить текстові елементи легенди, використовуваний коли height є матрицею (мітки легенди повинні відповідати рядкам матриці); цей аргумент також може набувати значення "TRUE", тоді автоматично як мітки легенди використовуватимуться назви рядків матриці (якщо вони є);

horiz – набуває логічних значень TRUE або FALSE (використовується за замовченням); у першому випадку стовпчики будуть розташовані горизонтально, а у другому – вертикально);

density – числовий вектор, що задає щільність штрихування стовпчиків;

angle – кут нахилу штрихів у градусах;

col – вектор кодів кольорів для стовпчиків та їх елементів; за замовченням використовується сірий колір, якщо height є вектором, та різні градації сірого кольору, якщо height є матрицею;

border – задає колір контуру стовпчиків, за замовченням border = NA

– контур є чорним.

Також можуть використовуватися інші аргументи, що задають властивості окремих елементів діаграм.

На рис. 4.1 показано декілька прикладів стовпчастих діаграм, побудованих за допомогою команд:

Рис. 4.1 – Приклади стовпчастих діаграм

>m = matrix (nrow = 3, ncol = 4)

>m[1,] = c(4.6, 2.5, 5.1, 1.4)

>m[2,] = c(4.4, 2.7, 4.9, 1.5)

>m[3,] = c(4.2, 2.6, 4.7, 1.7)

>old.par <- par(mfrow=c(2,2))

>barplot(m, beside = TRUE, names.arg = c("2011", "2012", "2013", "2014"), xlab = "Year",

+ col = c(2,3,4), legend.text = c("A", "B", "C"))

>barplot(m, beside = FALSE, names.arg = c("2011", "2012", "2013", "2014"), xlab = "Year",

+ col = c(5,6,7))

>barplot(m, beside = TRUE, names.arg = c("2011", "2012", "2013", "2014"), ylab = "Year",

+ col = c(8,9,10), horiz = TRUE, density = 25, angle = c(30, 60, 135), border = c(21, 22, 23))

>barplot(m, beside = FALSE, names.arg = c("2011", "2012", "2013", "2014"), ylab = "Year",

+ col = c(11,12,13), horiz = TRUE, density = 16, angle = c(30, 60, 135))

>par(old.par)

Функцію boxplot() використовують для побудови діаграм типу "ящик з вусами". Такі діаграми відображають основні характеристики розподілу даних. Їх основними елементами є:

прямокутник, дві протилежні сторони якого відповідають першому та третьому квартилям розподілу (ці квартилі відділяють першу та останню чверті даних у впорядкованому за зростанням масиві); якщо діаграма розташована вертикально, це будуть нижня та верхня сторони, а за її горизонтального розташування – ліва та права;

відрізок у середині прямокутника, що відповідає медіані розподілу (це значення яке перебуває у центрі впорядкованого за зростанням масиву даних);

вуси – два вертикальні (за вертикального розташування діаграми) або горизонтальні (за її горизонтального розташування) відрізки, що виходять з протилежних сторін прямокутника;

точки, що виходять поза межі діапазону, який показують вуси. Деякі аргументи функції boxplot():

x – числовий вектор або лист, що складається з числових векторів, для яких потрібно побудувати діаграму (посилання на дані можна задавати і деякими іншими способами);

range – задає довжину вусів; якщо range дорівнює нулю, то вуси поширюються до крайніх точок даних; якщо range є додатним числом, то їх кінці відповідають крайнім точкам даних, що перебувають від медіани розподілу на відстані не більшої, ніж добуток інтерквартильної відстані на range;

varwidth – набуває логічних значень TRUE або FALSE; якщо varwidth = TRUE, то ширина прямокутників пропорційна квадратному кореню з кількості спостережень у групах;

notch – набуває логічних значень TRUE або FALSE і вказує на необхідність показати довірчий інтервал для медіани у вигляді виїмки; якщо notch = TRUE, з обох боків прямокутника біля медіани зображується виїмка, що відповідає величині довірчого інтервалу; якщо для двох вибірок ці виїмки не перетинаються, це свідчить про наявність статистично значущої різниці між їх значеннями;

outline – керує зображенням крайніх точок; якщо outline = FALSE, точки, що виходять поза межі заданого вусами інтервалу, не зображуються на діаграмі;

names – вектор символів або виразів, що вказує підписи груп даних на графіку;

boxwex – масштабний фактор, що керує шириною прямокутників;

staplewex – задає довжину відрізка, що обмежує вуси; якщо staplewex = 1, ця довжина дорівнює ширині прямокутника;

plot – визначає необхідність виведення діаграми (якщо plot = TRUE) або даних, що використовуються при її побудові (якщо plot = FALSE);

border – вектор, що задає кольори контурів прямокутників та інших ліній діаграми;

col – вектор, що задає кольори заливки прямокутників;

horizontal – вказує на розташування прямокутників: горизонтальне, якщо значення дорівнює TRUE або вертикальне якщо воно дорівнює FALSE (використовується за замовченням).

at – числовий вектор, що задає відстані між прямокутниками, за замовченням він має значення 1/n, де n – кількість прямокутників.

На рис. 4.2 показано декілька прикладів діаграм типу ящик з вусами, побудованих за допомогою команд:

x1 = rnorm(150, 20, 3)

x2 = runif(150, 10, 30)

x3 = rnorm(50, 25, 2) old.par <- par(mfrow=c(2,2))

boxplot(c(x1, x2), x3, names = c("x1 and x2", "x3"), border = c ("31", "32"), col = c ("33", "34"))

boxplot(x1, x2, x3, range = 1.5, names = c("x1", "x2", "x3"), notch = TRUE, outline = FALSE,

boxwex = 0.4, border = c ("35", "36", "37"), col = c ("38", "39", "40"), at = c(1, 1.5, 3))

boxplot(x1, x2, x3, range = 0.5, varwidth = TRUE, border = c ("51", "52",

"53"),

col = c ("54", "55", "56"), horizontal = TRUE)

boxplot(x1 + x2, x3, range = 2.5, staplewex = 1, border = c ("57", "58"), col = c ("59", "60"))

par(old.par)

Рис. 4.2 – Приклади побудови діаграм типу ящик з вусами

Якщо значення plot = FALSE, замість діаграми виводиться узагальнена інформація про дані, що містить такі компоненти:

stats – матриця, кожний стовпчик якої містить значення, що для відповідного ряду даних задають положення крайніх точок вусів, першого й третього квартилів та медіани;

n – вектор, елементами якого є кількості спостережень у кожній групі;

conf – матриця, кожний стовпчик якої задає нижній та верхній довірчий інтервали для медіани (положення виїмки);

out – значення даних, що лежать поза межами крайніх точок вусів;

group – вектор, елементи якого вказують, до яких груп належать відповідні елементи out;

names – вектор імен груп.

Наприклад, використовуючи команду

boxplot(x1, c(x2, x3), plot = FALSE)

ми отримаємо для попереднього масиву даних результат, наведений на рис.

4.3.

Рис. 4.3 – Узагальнена статистика для побудови boxplot діаграми

Функція curve() використовується для побудови графіків функцій на заданих інтервалах. Її можна розглядати, як S3 метод для класу функцій plot(), тому багато аргументів збігаються і використовуються так само, як у plot(). Основними аргументами цієї функції є:

expr – ім'я функції, виклик, чи вираз, записаний як функція від x, що створює об’єкт такої самої довжини, як і x;

from, to – задають діапазон змінювання змінної x, за замовченням (якщо add = FALSE) використовується інтервал від 0 до 1;

the range over which the function will be plotted

add – додає нову криву до попереднього графіка, якщо значення дорівнює TRUE, будує її у новому графічному вікні із збереженням значень аргументів from, to та log з попереднього графіка, якщо значення дорівнює NA; береться рівним FALSE, якщо немає відкритих графічних пристроїв;

n – ціле число, що задає кількість точок, в яких потрібно розрахувати значення функції;

xname – рядок символів, що задає ім’я осі x.

На рис. 4.4, 4.5 показано приклади застосування функції curve(), побудовані за командами:

old.par <- par(mfrow=c(2,2))

curve(2/(exp(x)+exp(-x)), -3, 3, ylab = "f(x)", ylim = c(-1.2, 1.2), col =

"red")

curve(sin(3*x), add = TRUE, col = "maroon", type = "o", cex = 1.5) curve(exp(x)*sin(3*x), -3, 3, ylab = "f(x)", col = "peru", type = "s") curve(2/(exp(x)+exp(-x)), -3, 3, ylab = "f(x)", ylim = c(-1.2, 1.2), col =

"tan", lwd = 3)

curve(cos(x), -5, 5, ylab = "f(x)", ylim = c(-1.2, 1.2), col = "purple", n = 9) par(old.par)

Рис. 4.4 – Приклади використання функції curve()

old.par <- par(mfrow=c(2,2))

curve(qnorm, type = "h", col = 101, ylab = "Quantile function", ylim = c(-3,

5))

curve(qunif, type = "l", col = 102, add = TRUE)

curve(qexp, type = "p", col = 103, add = TRUE)

curve(dlogis, main = "Density", lwd = 3, col = 104, col.main = 154, xlim = c(-3, 3), ylim = c(0, 0.4))

curve(dnorm, lwd = 3, col = 124, col.main = 164, add = TRUE) y <- function(x) sin(cos(x)*exp(-x/3))

curve(y, -8, 7, n = 2001, col = 106, lwd = 4)

curve(tan, xname = "t", xlim = c(-6, 6), ylim = c(-5, 5), col = "green", main = "curve(tan)", col.main = "darkblue")

abline(h = -4:4, v = -6:6, lty = 3, col = "gray") par(old.par)

Рис. 4.5 – Інші приклади використання функції curve()

В останньому прикладі використано функцію abline(). Вона додає на графік додаткові лінії, призначені для кращого сприйняття даних. Зокрема – це можуть бути лінії координатної сітки (як у прикладі, асимптоти тощо). Основними аргументами цієї функції є:

a, b – числа, що задають координату точки перетину з віссю ординат та тангенс кута нахилу до осі абсцис;

h – значення чи набір значень ординат для горизонтальних ліній;

v – значення чи набір значень абсцис для вертикальних ліній;

coef – вектор довжини 2, що задає координату точки перетину з віссю ординат та тангенс кута нахилу до осі абсцис (не використовується одночасно із задаванням a, b);

reg – об’єкт, за яким розраховують значення coef, як коефіцієнти

лінійної регресійної моделі.

На рис. 4.5 наведено ще деякі приклади застосування функції abline(), згідно з командами:

old.par <- par(mfrow=c(2,2))

curve(x + sin(5*x)*exp(-x), xlim = c(-1, 3), col = 71, type = "p", cex = 1.5) abline(a = 0, b = 1, lty = 3, col = 73)

curve((2*x^3 + 3*x^2)/(x^2 - x + 5), xlim = c(-7, 7), col = "maroon", type =

"o")

abline(coef = c(3, 2), lty = 3, col = 74)

curve(atan, xlim = c(-10, 10), col = "tomato", type = "o", cex = 1.5) abline(h = seq(-1.5, 1.5, by = 0.5), v = seq(-8, 8, by = 2), lty = 3, col = 75) x = seq(-2, 2, len = 12)

y = 2*x + 3 + rnorm(12, 0, 1) mod = lm(y~x)

plot(x, y, type = "p", col = 76, cex = 1.5, pch = 2) abline(reg = mod, lty = 3, col = 78)

abline(a = 3, b = 2, lty = 2, col = 80) par(old.par)

Функція pie() використовується для створення кругових діаграм. До її основних аргументів належать такі:

x – вектор невід'ємних числових даних, які відображаються у вигляді секторів діаграми;

labels – один чи декілька виразів або рядок символів, що задають імена секторів;

edges – зазначає необхідність апроксимації круга багатокутником із заданою кількістю кутів;

radius – за замовченням радіус дорівнює 1, але, якщо підписи даних не вміщуються на діаграмі, може виникнути потреба зменшити значення радіуса;

clockwise – логічне значення, що вказує на необхідність розташування даних за годинниковою стрілкою (TRUE), або проти неї (FALSE); друге значення використовується за замовченням;

Рис. 4.5 – Приклади застосування функції abline()

init.angle – число, що визначає розташування першого сектора (у градусах); за замовченням воно дорівнює 0 (третя година) для clockwise = FALSE і 90 (дванадцята година) для clockwise = TRUE;

density – задає густину ліній штриховки (у кількості ліній на дюйм); недодатні значення або NULL (використовується за замовченням) означає відсутність штриховки;

angle – задає кут нахилу ліній штриховки (у градусах до осі абсцис проти годинникової стрілки);

col – вектор, що задає кольори сегментів.

На рис. 4.6 показано приклад побудови кругової діаграми, згідно з командами:

>GDP <- c(17402, 16800, 16158, 6774, 4624, 3461, 3012, 400, 33256)

>lbls <- c("ЄС", "США", "Китай", "Індія", "Японія", "Росія", "Бразилія", "Україна", "Інші")

>pct <- round(GDP/sum(GDP)*100)

>lbls <- paste(lbls, pct) # add percents to labels

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]