ggplot2 - потужний інструмент для створення якісних графіків у R. Ця бібліотека надає велику кількість можливостей для візуалізації даних, а сама концепція створення графіків - логічна і вишукана. У даному прикладі ми будемо зображати результати паспортної частини при анкетуванні лікарів (переважно Львівської області). Анкетування стосувалось різних аспектів впровадження клініко-фармацевтичної служби у стаціонарних закладах охорони здоров’я України (Настюха Ю.С.). Зараз будемо дивитись на розподіл опитаних лікарів за їх кваліфікаційним рівнем та місцем проживання, а також за статтю і віком у залежності від місця проживання.

Але спочатку слід завантажити бібліотеку ggplot2 (якщо у Вас її ще немає), і тоді підключити

install.packages("ggplot2")
library(ggplot2)

Тепер завантажимо самі дані:

anketa = read.csv("http://stat.org.ua/data/doctors-survey.csv")

Подивимось що в нас за стовпчики (функція str() показує структуру об’єкта):

str(anketa)
## 'data.frame':	500 obs. of  5 variables:
##  $ X     : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ age   : int  52 36 29 34 72 58 55 40 47 52 ...
##  $ levels: Factor w/ 2 levels "Інтерн","Лікар-спеціаліст": 2 2 2 2 2 2 2 2 2 2 ...
##  $ gender: Factor w/ 2 levels "жінки","чоловіки": 1 2 1 1 2 2 2 1 2 1 ...
##  $ place : Factor w/ 4 levels "Інші нас. пункти",..: 3 2 2 3 3 2 2 3 3 4 ...

У стовпчику X - порядкові номери респондентів, у age - вік, у levels - кваліфікація, у gender - стать і у place - місце проживання.

Поглянемо на розподіл опитуваних за рівнем та місцем проживання:

table(anketa$levels, anketa$place)
##                   
##                    Інші нас. пункти Львівська область м. Львів Не вказано
##   Інтерн                         46                21      134        101
##   Лікар-спеціаліст                3                51      133         11

А тепер візуалізуємо цю табличку за допомогою стовпчикової діаграми. Особливий прийом для поділу графіків за певним фактором (щоб получився взаємний розподіл кількох величин) - команда facet_grid() :

ggplot(anketa,aes(levels,fill=levels))+ #будем зображувати кваліфікацію, причому різними кольорами
geom_bar()+ #хочемо з даних стовпчикову діаграму
facet_grid(. ~ place)+ #робим окремі малюночки для кожного місця проживання
scale_fill_brewer(palette="Set1")+ #міняєм кольори, буде червоний і синій
xlab("Посада")+ylab("Кількість опитаних")+ #написи на осях
theme(legend.position="none") #легенду не виводити

стовпчикова діаграма, розподіл двох змінних

Таким графіком ми розкриваємо інформацію хто ж були респондентами. По аналогії із поділом за місцем проживання, віконця графіка можна розбивати одною змінною по горизонталі, а другою - по вертикалі. Так, створимо графік розподілу за віком в залежності від статі та місця проживання. Але нас не цікавлять інтерни - вони всі приблизно одного віку, а їх місце проживання наразі непостійне.

ggplot(anketa[anketa$levels!="Інтерн",], #інтернів не берем
aes(age))+ #зображувати будем розподіл віку
geom_histogram(binwidth = 5,aes(fill=gender))+ #виводимо гістограму, інтервали по 5 років, різні кольори для статі
facet_grid(gender ~ place)+ #по вертикалі ділим за статтю, по горизонталі - за місцем проживання
scale_fill_brewer(palette="Set1")+#міняєм кольори, буде червоний і синій
xlab("Вік")+ylab("Кількість опитаних")+ #написи на осях
theme(legend.position="none") #легенду не виводити

гістограма, розподіл трьох змінних

Молоді лікарі-спеціалісти були переважно зі Львова. Розподіл за віком жінок та чоловіків не має особливих відмінностей. А загалом, більша частина респондентів представлена лікарями віком від 45 до 60 років.


<a name="nast", id="anchor">Організаційно-методичні засади створення та діяльності клініко-фармацевтичної служби у стаціонарних закладах охорони здоров’я України : автореф. дис. на здобуття наук. ступеня канд. фармац. наук : [спец.] 15.00.01 “Технологія ліків, організація фармацевтичної справи та судова фармація” / Ю. С. Настюха ; Львів. нац. мед. ун-т ім. Данила Галицького. – Львів, 2013. – 26 с.</a>