3_R_візуалізація_2
.pdf
>lbls <- paste(lbls,"%",sep="") # ad % to labels
>pie(GDP, labels = lbls, main="Валовий внутрішній продукт за ППС,
млрд. $, 2013",
+ edges = 30, radius = 0.91, clockwise = TRUE, init.angle = 180, + density = c(25, 35, 20, 30, 15, 25, 35, 20, 30),
+ angle = 60*1:9, col = rainbow(9), col.main = 156)
Рис. 4.6 – Приклад побудови кругової діаграми
Функція stripchart() використовується для створення одновимірних діаграм розкиду чи точкових графіків за наявними даними. Найчастіше їх використовують як альтернативу boxplot діаграмам для малих вибірок. До основних аргументів функції stripchart() належать такі:
x – дані, за якими треба побудувати діаграму; за замовченням, це має бути числовий вектор, або список з числових векторів, кожний з яких відповідає певному компоненту діаграми; також може використовуватися формула типу y~g, що зазначає спосіб групування даних у векторі y згідно із рівнем фактора g;
data – таблиця даних чи список, звідки треба витягти змінну x;
subset – вектор, що задає підмножину спостережень, що використовуватиметься для побудови діаграми;
method – задає спосіб відокремлення точок, що збігаються; за замовченням використовується метод "overplot", за якого такі точки наносять на вже побудовані раніше; метод "jitter" (тремтіння) використовує невеликі випадкові відхилення точок від їх справжніх положень; у методі "stack" точки зображують поруч одна з одною (його недоцільно використовувати, якщо відстані між точками є невеликими);
jitter – для методу "jitter" задає величину розкиду точок, за замовченням дорівнює 0.1;
offset – для методу "stack" задає відстань між символами (у скільки разів вона перевищує розмір символу, за замовченням дорівнює 1/3;
vertical – задає вертикальне (якщо значення дорівнює TRUE) або горизонтальне (якщо FALSE) розташування діаграми, за замовченням використовується значення FALSE;
group.names – вектор підписів компонентів діаграми (векторів даних);
at – задає відстань від компонентами діаграми; за замовченням дорівнює 1/n, де n – кількість компонент.
На рис. 4.7 наведено приклад побудови одновимірних діаграм розкиду згідно з командами:
Рис. 4.7 – Приклад побудови одновимірних діаграм розкиду
x <- rweibull(25, 1, 1) xr <- round(x, 1)
stripchart(x, pch = 2, col = 2, xlim = c(-0.2, 2.7)) ; m <- mean(par("usr")[1:2])
text(m, 1.08, "stripchart(x, \"overplot\")", col = 2)
stripchart(xr, pch = 6, col = 3, method = "stack", add = TRUE, at = 1.2, offset = 0.5)
text(m, 1.32, "stripchart(round(x,1), \"stack\")", col = 3)
stripchart(xr, pch = 7, col = 4, method = "jitter", jitter = 0.03, add = TRUE, at = 0.7)
text(m, 0.82, "stripchart(round(x,1), \"jitter\")", col = 4)
За необхідністю ми можемо будувати діаграми не в графічному вікні, а зберігати їх в окремих файлах графічних форматів. Для цього використовують команди відкриття графічних пристроїв:
bmp(filename = "Rplot%03d.bmp",
width = 480, height = 480, units = "px", pointsize = 12, bg = "white", res = NA, ...,
type = c("cairo", "Xlib", "quartz"), antialias)
jpeg(filename = "Rplot%03d.jpeg",
width = 480, height = 480, units = "px", pointsize = 12, quality = 75,
bg = "white", res = NA, ...,
type = c("cairo", "Xlib", "quartz"), antialias)
png(filename = "Rplot%03d.png",
width = 480, height = 480, units = "px", pointsize = 12, bg = "white", res = NA, ...,
type = c("cairo", "cairo-png", "Xlib", "quartz"), antialias)
tiff(filename = "Rplot%03d.tiff",
width = 480, height = 480, units = "px", pointsize = 12,
compression = c("none", "rle", "lzw", "jpeg", "zip", "lzw+p", "zip+p"), bg = "white", res = NA, ...,
type = c("cairo", "Xlib", "quartz"), antialias)
Їх основними аргументами є:
filename – імя створюваного файла;
width, height ширина та висота пристрою;
units – одиниці вимірювання width та height; можуть використовуватися px (пікселі, встановлено за замовченням), in (дюйми), cm (сантиметри) або mm (міліметри).
pointsize – розмір шрифту для текстових елементів;
bg – початковий колір фону (його можна перевстановити при задаванні par("bg");
quality – регулює стискування зображення у відсотках до вихідного розміру;
compression – задає спосіб стискування зображення;
res – номінальна роздільна здатність у ppi.
Після побудови діаграм графічний пристрій потрібно зачинити за допомогою команди dev.off().
4.2. Завдання
1. Для виконання цього завдання на сайті Державної служби статистики України необхідно взяти інформацію про обсяги виробництва основних видів промислової продукції у 2011 – 2013 р.
(http://www.ukrstat.gov.ua/operativ/operativ2006/pr/prm_ric/prm_ric_u/vov2005 _u.html). З цієї таблиці взяти дані, що належать до рядків з номерами 9n – 8, 9n – 7, 9n – 6, 9n – 5, 9n – 4, 9n – 3, 9n – 2. Сформувати матрицю вихідних даних.
Перетворити дані так, щоб вони вказували значення відповідних показників у відсотках до рівня 2011 р.
1.1.Для перших трьох показників отриманих даних побудувати barplot діаграму, так, щоб до кожної групи належали значення одного й того самого показника, а всередині груп стовпчики відповідали різним рокам. Значення років вказати у тексті легенди, а імена показників у підписах груп. Різні групи позначити різними кольорами в межах від 5n до 5n + 10.
Для парних n обрати вертикальне розташування стовпчиків, а для непарних – горизонтальне.
Створити загальний заголовок діаграми, вказавши у ньому назви видів продукції, для яких наведено обсяги виробництва.
1.2.Для останніх трьох показників побудувати barplot діаграму, так, щоб до кожна компонента діаграми складалася з трьох прямокутників, що відповідають значенням одного й того самого показника для різних років. Значення років вказати у тексті легенди, а імена показників у підписах груп. Різні групи позначити штриховкою різного кольору в межах від 5n до 5n + 10
зрізною щільністю та різними кутами нахилу штрихів.
Для непарних n обрати вертикальне розташування стовпчиків, а для парних – горизонтальне.
2. Сформувати чотири вектори з такими параметрами:
x1 – містить 50 + 2n елементів, що підпорядковуються нормальному розподілу із середнім значенням n та стандартним відхиленням 0,2n;
x2 – містить 40 + 3n елементів, що підпорядковуються нормальному розподілу із середнім значенням 1,1n та стандартним відхиленням 0,5n;
x3 – містить 60 + n елементів, що підпорядковуються нормальному розподілу із середнім значенням 1,5n та стандартним відхиленням 0,1n;
x4 – містить 110 – n елементів, що підпорядковуються рівномірному розподілу на відрізку від 0,8n до 1,2n.
Побудувати такі boxplot діаграми:
2.1. Діаграма, стовпчики якої відповідають векторам x1, x2, x3, x4. Передбачити, що:
зазначення на діаграмі назв компонентів;
вертикальне розташування діаграм для непарних n і горизонтальне для парних n;
довжина вусів має дорівнювати 1,2 інтерквартильної відстані; довжину відрізка, що обмежує вуси, взяти рівною кількості спостережень для відповідного вектора поділеній на 150;
необхідно показати довірчі інтервали для медіан у вигляді виїмок і точки, що виходять поза межі вусів;
використати різнокольорову заливку прямокутників діаграми.
2.2. Діаграма, стовпчики якої відповідають векторам x1 + x4, x1 x4, (x2 + x3)/2. Передбачити, що:
зазначення на діаграмі назв компонентів;
вертикальне розташування діаграм для парних n і горизонтальне для непарних n;
довжина вусів має дорівнювати 0,8 інтерквартильної відстані; довжини відрізків, що обмежують вуси, взяти рівними n/(2n + 6) від ширини прямокутників;
ширина прямокутників пропорційна квадратному кореню з кількості спостережень у групах;
кольори заливки прямокутників задати їх номерами від n + 3 n + 5; кольори ліній контурів задати їх номерами від n + 6 до n + 8, а товщину ліній взяти рівною 2,5.
Для останньої діаграми побудувати узагальнену статистику.
3. Використовуючи функцію curve() побудувати на одному графіку такі
лінії:
3.1. f(x) = sin(nx)/cosh(nx) на відрізку [–20/n, 20/n], колір – 30 + n, тип графіка: "l" для варіантів 1 – 5, "s" для варіантів 6 – 10, "o" для варіантів 11 – 15, "h" для варіантів 16 – 20, "S" для варіантів 21 – 25, "b" для варіантів 26 –
30;
3.2. f(x) = sin(x) на тому самому відрізку, колір – 50 + n, тип графіка: "s" для варіантів 1 – 5, "o" для варіантів 6 – 10, "S" для варіантів 11 – 15, "b" для варіантів 16 – 20, "h" для варіантів 21 – 25, "p" для варіантів 26 – 30;
4. Створити функцію, що розраховує значення раціонального дробу вигляду (a1*x2 + a2*x + a3)/(a4*x + a5) для заданого значення x.
Побудувати її графік за допомогою функції curve(), використовуючи такі значення аргументів: колір – 2n, тип графіка: "b" для варіантів 1 – 10, "l" для варіантів 11 – 20, "p" для варіантів 21 – 30;
Додати до побудованої кривої вертикальну та похилу асимптоти, використовуючи значення аргументів: lty = 3, lwd = 2 + 15/n, col = 2n + 1.
Діапазони змінювання змінних задати так, щоб вони надавали змогу відобразити основні характерні особливості кривої.
Значення параметрів взяти з таблиці 4.1.
|
|
|
|
|
Таблиця 4.1 |
|
|
Значення параметрів для завдання 4 |
|
||
|
|
|
|
|
|
|
a1 |
a2 |
a3 |
a4 |
a5 |
1. |
-2 |
-8 |
2 |
8 |
8 |
2. |
9 |
-10 |
-2 |
7 |
-7 |
3. |
-5 |
-9 |
-9 |
-7 |
-6 |
4. |
-10 |
-4 |
-3 |
1 |
-3 |
5. |
-3 |
-3 |
8 |
-1 |
-1 |
6. |
-4 |
10 |
6 |
10 |
-5 |
7. |
9 |
-9 |
4 |
6 |
9 |
8. |
-1 |
-4 |
5 |
-3 |
6 |
9. |
-9 |
-6 |
-9 |
-3 |
0 |
10. |
0 |
-3 |
10 |
-9 |
-5 |
11. |
-10 |
9 |
-8 |
-5 |
6 |
12. |
4 |
6 |
4 |
-8 |
-7 |
13. |
5 |
3 |
-7 |
-2 |
1 |
14. |
4 |
1 |
-6 |
9 |
4 |
15. |
1 |
6 |
6 |
-5 |
-6 |
16. |
7 |
-8 |
-9 |
5 |
5 |
17. |
10 |
9 |
8 |
1 |
0 |
18. |
3 |
0 |
-7 |
-9 |
6 |
19. |
3 |
5 |
2 |
-7 |
8 |
20. |
-2 |
-6 |
-6 |
-3 |
-3 |
21. |
-4 |
6 |
4 |
-5 |
8 |
22. |
-9 |
4 |
-1 |
1 |
-5 |
23. |
-4 |
6 |
6 |
4 |
5 |
24. |
9 |
2 |
4 |
9 |
-3 |
25. |
7 |
1 |
7 |
-1 |
-6 |
|
a1 |
a2 |
a3 |
a4 |
a5 |
26. |
7 |
-4 |
4 |
4 |
-2 |
27. |
-3 |
-8 |
10 |
-4 |
1 |
28. |
-2 |
10 |
8 |
6 |
8 |
29. |
1 |
4 |
-2 |
-8 |
8 |
30. |
-2 |
-8 |
6 |
6 |
3 |
5.На сайті vstup.info взяти інформацію про показники 10 абітурієнтів заданого ВНЗ заданої спеціальності у 2014 р., починаючи із n-го за рейтингом до n + 20 –го (розрахунок позицій абітурієнтів здійснювати після вилучення абітурієнтів, що мають пільги. Для кожного показника розрахувати середнє значення. Після цього побудувати кругову діаграму, що ілюструє розподіл складових підсумкового рейтингового бала абітурієнтів. Для парних n використовувати розташування даних за годинниковою стрілкою, для непарних – проти годинникової стрілки. Кут, що задає положення першого сектора взяти рівним n + 20. На діаграмі зазначити імена секторів як назви відповідних складових підсумкового бала. Використати апроксимацію круга багатокутником, що містить 30 + n кутів, а також різнокольорову штрихову заливку секторів. Якщо є декілька варіантів наборів складових підсумкового балу, побудувати на одному графіку відповідну кількість діаграм, використовуючи для однакових складових однакову штриховку.
6.Для складових отриманого у попередньому завданні масиву даних побудувати stripchart діаграми. Для позначення складових використати задавання символів клавіатури та назви кольорів. Навести заголовок діаграми, використовуючи: півжирний звичайний шрифт для варіантів 1 – 10, простий курсив для варіантів 11 – 20, півжирний курсив для варіантів 21 – 30. Як метод використати "overplot" для варіантів 1 – 5 та 26 – 30, "stack" для варіантів 6 – 15 та "jitter" для варіантів 16 – 25. Параметри методів обрати самостійно. Отриманий графік зберегти у файлі формату *.jpg.
4.3. Приклад виконання завдання 4
1. Спочатку створюємо вихідні матриці даних:
m1 = matrix (nrow = 3, ncol = 7)
m1[1,] = c(62.7, 1763, 89.0, 28.9, 81.8, 210.6, 757.9) m1[2,] = c(65.7, 1686, 105.7, 28.5, 78.0, 203.3, 766.5) m1[3,] = c(64.2, 1560, 93.6, 29.1, 88.2, 230.6, 917)
m2 = matrix (nrow = 3, ncol = 4) m2[1,1:4] = c(100, 100, 100, 100)
m2[2,1:4] = round(m1[2, 1:4]/m1[1,1:4]*100,1)
m2[3,1:4] = round(m1[3, 1:4]/m1[1,1:4]*100,1)
Перша група команд формує матрицю, рядки якої відповідають 2011, 2012 та 2013 р., а елементи рядків надають обсяги виробництва потрібних видів продукції у відповідному році в абсолютному вимірі. Друга група команд перетворює дані перших чотирьох стовпчиків з обсягів виробництва до відносних значень, де за 100% взято рівень 2011 р. Функція round(x,1) округлює елементи отриманого масиву даних x до першого знака після коми.
Для створення першого графіка використовуємо таку систему команд:
barplot(m2, beside = TRUE, names.arg = c("Вугілля", "Хліб", "Тканини", "Чавун"), main = "Динаміка обсягів виробництва",
col = c(2,3,4), ylim = c(0, 125), legend.text = c("2011", "2012", "2013"), col.main = 140)
Результат її виконання показано на рис. 4.8.
Рис. 4.8 – Результат побудови першого графіка для завдання 4.1
Для створення другого графіка використовуємо таку систему команд:
ma = t(m1[,5:7])
barplot(ma, beside = FALSE, names.arg = c("2011", "2012", "2013"), legend.text = c("М'ясо великої рогатої худоби", "Свинина", "М’ясо свійської птиці"), xlim = c(0, 1250),
col = c(35,36,37), density = 25, angle = c(30, 60, 135), border = c(21, 22, 23), horiz = TRUE)
Результат їх виконання наведено на рис. 4.9.
Рис. 4.9 – Результат побудови другого графіка для завдання 4.1
2. Для створення першого графіка використовуємо таку систему команд:
x1 = rnorm(75, 12, 2)
x2 = rnorm(120, 12.1, 5)
x3 = rnorm(120, 15, 1)
x4 = runif(75, 8, 16)
stw = c(length(x1), length(x2), length(x3), length(x4))/200
boxplot(x1, x2, x3, x4, horizontal = FALSE, range = 1.2, notch = TRUE, staplewex = stw, col = rainbow(4), names = c("x1", "x2", "x3", "x4"))
При цьому отримуємо результати, наведені на рис. 4.10.
Рис. 4.10 – Приклад побудови першого графіка для завдання 4.2
Другий графік створюємо за допомогою такої системи команд:
boxplot(x1 + x4, c(x1, x4), (x2 +x3)/2, horizontal = TRUE, range = 0.8, col = 5:7, border = 8:10, lwd = 3, varwidth = TRUE, staplewex = 7/25, names = c("x1 + x4", "x1Ux4", "(x2 + x3)/2"))
par(old.par)
При цьому отримуємо результати, наведені на рис. 4.11.
