\(\color{lightseagreen}{\it\text{четврти део }}\)


\(\color{lightseagreen}{\text{3. Bar-plot}}\)

Bar-plot се користи за приказ категоричких променљивих. На њему се приказује колико има података у бази из одређене категорије.

library(ggplot2)
ggplot(mpg, aes(manufacturer))+
 geom_bar(aes(fill=class))

Мало ћемо улепшати график.

ggplot(mpg, aes(manufacturer))+
 geom_bar(aes(fill=class), width = 0.5) + 
  theme(axis.text.x = element_text(angle=65, vjust=0.6)) +
  labs(title="Categorywise Bar Chart", 
       subtitle="Manufacturer of vehicles", 
       caption="Source: Manufacturers from 'mpg' dataset")

Прегледнија варијанта оваквог графика се добија додавањем аргумента position = "dodge" функцији geom_bar(). Тако се добија график код кога је лакше поређење по категоријама.

ggplot(mpg, aes(manufacturer))+
 geom_bar(aes(fill=class), width = 0.5, position = "dodge") + 
  theme(axis.text.x = element_text(angle=65, vjust=0.6)) +
  labs(title="Categorywise Bar Chart", 
       subtitle="Manufacturer of vehicles", 
       caption="Source: Manufacturers from 'mpg' dataset")


\(\color{lightseagreen}{\text{4. Хистограм}}\)

Хистограм jе наjjедноставниjа непараметарска “оцена” густине расподеле. То jе посебна врста графика са bar-овима, коjа се користи за приказ расподеле фреквенциjа низа (непрекидних) нумеричких вредности.

У примеру који следи користе се подаци из базе weather из пакета nycflights13.

#install.packages("nycflights13")
library(nycflights13)
# dodajemo kolonu u kojoj je temperatura po celzijusovoj skali
weather$celsius <- (weather$temp - 32) * 5 / 9

# izdvajamo podatke samo za jedan dan
weather_today <- weather[weather$month == 2 & weather$day == 28, ]

library(ggplot2)

ggplot(weather_today, aes(x = celsius)) + 
  geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

График не изгледа добро, јер је број категорија превелик за податке који се користе (функција задаје број категорија 30, ако јој се не проследи другачије), али то можемо да променимо.

ggplot(weather_today, aes(x = celsius)) + 
  geom_histogram(bins = 10)

Број категорија се може одредити помоћу формуле \(\lceil log_2n + 1\rceil\), што се R-у добија позивом функције nclass.Sturges().

bin_count <- nclass.Sturges(weather_today$celsius)
ggplot(weather_today, aes(x = celsius)) + 
  geom_histogram(bins = bin_count)

Како би график добио јасну форму хистограма, обојићемо границе између стубића, као и саме стубиће.

ggplot(weather_today, aes(x = celsius)) + 
  geom_histogram(bins = bin_count, color = "white", fill = "lightblue")

Границе интервала категорија се у R-у могу одредити позивом функције pretty().

bin_count <- nclass.Sturges(weather_today$celsius)
R_breaks <- pretty(range(weather_today$celsius), n = bin_count, min.n = 1)
ggplot(weather_today, aes(x = celsius)) + 
  geom_histogram(breaks = R_breaks, color = "white", fill = "lightblue")

Дакле, функција geom_histogram() не задаје неке смислене подразумеване вредности броја категорија и њихових граница, већ те вредности треба претходно прилагодити подацима који се користе и проследити функцији.

\(\color{lightseagreen}{\text{Цртање више графика одједном}}\)

За цртање више графике одједном користи се функција facet_wrap().

Нацртаћемо хистограме за податке из претхдног примера за различите месеце.

ggplot(weather, aes(x = celsius)) +
  geom_histogram(color = "white", fill = "lightblue") +
  facet_wrap(~ month)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 1 rows containing non-finite values (stat_bin).


\(\color{lightseagreen}{\text{5. Box-plot}}\)

Box-plot је график на коме су приказане неке од важних сумарних статистика и погодан је за поређење расподела.

ggplot(mpg, aes(class, cty)) + 
  geom_boxplot(varwidth=T, fill="plum") + 
  labs(title="Box plot", 
       subtitle="City Mileage grouped by Class of vehicle",
       caption="Source: mpg",
       x="Class of Vehicle",
       y="City Mileage")

Правоугаони дијаграм садржи [25%,75%] узорка, дебела линија на правоугаонику представља медијану. Линије иду до најмање/највеће вредности која упада у дужину од 1.5 дужине правоугаоника (IQR - интерквартилно растојање) од крајева правоугаоника. Кружићи представљају екстремне вредности.


\(\color{lightseagreen}{\text{6. Виолински график}}\)

Овај график приказује густину унутар група, али даје мање информација од box-plot-a.

library(ggplot2)

ggplot(mpg, aes(class, cty))+ 
  geom_violin() + 
  labs(title="Violin plot", 
       subtitle="City Mileage vs Class of vehicle",
       caption="Source: mpg",
       x="Class of Vehicle",
       y="City Mileage")


\(\color{lightseagreen}{\text{7. Кружни дијаграм - пита}}\)

ggplot(mpg, aes(x = "", fill = factor(class))) + 
  geom_bar(width = 1) +
  labs(fill="class", 
       x=NULL, 
       y=NULL, 
       title="Pie Chart of class", 
       caption="Source: mpg")+
  coord_polar(theta = "y")