aitech-wizualizacja/02.ipynb

4.2 MiB
Raw Blame History

Logo 1

Wizualizacja danych

3-6. Biblioteka ggplot2 [laboratoria]

Tomasz Górecki (2021)

Logo 2

library(repr) # To resize plots in Jupyter
options(repr.plot.width = 16, repr.plot.height = 9)
library(ggplot2)
library(grid) # For multiplots
library(gridExtra) # For multiplots
library(ggthemes) # Additinal themes
library(PogromcyDanych) # Library with data sets
setLang(lang = 'eng') # Change language to English for data sets from PogromcyDanych
Warning message:
“package ggplot2 was built under R version 3.6.2”
Loading required package: dplyr

Warning message:
“package dplyr was built under R version 3.6.2”

Attaching package: dplyr


The following object is masked from package:gridExtra:

    combine


The following objects are masked from package:stats:

    filter, lag


The following objects are masked from package:base:

    intersect, setdiff, setequal, union


Loading required package: SmarterPoland

Loading required package: httr

Warning message:
“package httr was built under R version 3.6.2”
Loading required package: htmltools

Warning message:
“package htmltools was built under R version 3.6.2”

Biblioteka ggplot2

Pakiet _ggplot2 jest jednym z najbardziej zaawansowanych narzędzi do tworzenia wykresów statystycznych. Oznacza to, że konstrukcja pakietu jest na tyle elastyczna, że można z nim wykonać praktycznie każdą grafikę statystyczną.

Podstawowa składnia

Karty pomocy

Przykłady

Wykres punktowy

ggplot(cats_birds, aes(x = weight, y = speed)) +
  geom_point() # Basic ggplot
ggplot(cats_birds, aes(x = weight, y = speed, shape = group)) + 
  geom_point(size = 5) # With different shapes
ggplot(cats_birds, aes(x = weight, y = speed, size = group)) + 
  geom_point() # With different sizes
Warning message:
“Using size for a discrete variable is not advised.”
ggplot(cats_birds, aes(x = weight, y = speed, color = group)) + 
  geom_point(size = 5) # With different colors
ggplot(cats_birds, aes(x = weight, y = speed, shape = group, color = habitat)) + 
  geom_point(size = 5) # Combined different shapes and colors

Dodawanie tekstu do wykresu

ggplot(cats_birds, aes(x = weight, y = speed, label = species)) + 
  geom_text(hjust = 0) + 
  xlim(0, 350) # With text
ggplot(cats_birds, aes(x = weight, y = speed, label = species, color = group)) + 
  geom_text(hjust = -0.1) + 
  geom_point() + 
  xlim(0, 350) # Two geometries
ggplot(cats_birds, aes(x = weight, y = speed, label = species)) + 
  geom_text(hjust = -0.1, aes(color = group)) + 
  geom_point() + 
  xlim(0, 350) # Local aesthetic

Wykres liniowy i wykres typu "wstążka"

head(WIG)
A data.frame: 6 × 8
DateNameOpening PriceMax PriceMin PriceClosing PriceChangeTurnover
<date><fct><dbl><dbl><dbl><dbl><dbl><dbl>
12013-12-02WIG54627547905393553935-1.41 640784
22013-12-03WIG54026540265325053277-1.22 914148
32013-12-04WIG53222532855253652867-0.77 968047
42013-12-05WIG52837529005257552597-0.51 808039
52013-12-06WIG52838528995251352728 0.251012872
62013-12-09WIG53113531875288152881 0.29 599884
ggplot(WIG, aes(x = Date, y = `Closing Price`)) + 
  geom_line() # Line geometry
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
ggplot(WIG, aes(x = Date, 
                ymin = 52000, 
                ymax = `Closing Price`)) + 
  geom_ribbon() # Ribbon geometry
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”
Warning message in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <c5>”
Warning message in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
“niepowodzenie konwersji 'paź 2014' w 'mbcsToSbcs': kropka zastąpiona <ba>”

Dodawanie trendu do wykresu

auta2012 %>% 
  filter(Brand == 'Skoda', Model == 'Octavia') %>% 
  select(Brand, Model, Year, Price.in.PLN, Type.of.fuel) -> data.skods # Preapre data
data.skods
A data.frame: 3954 × 5
BrandModelYearPrice.in.PLNType.of.fuel
<fct><fct><dbl><dbl><fct>
SkodaOctavia201052750benzyna
SkodaOctavia200316800olej napedowy (diesel)
SkodaOctavia200738900olej napedowy (diesel)
SkodaOctavia200939999olej napedowy (diesel)
SkodaOctavia200828500olej napedowy (diesel)
SkodaOctavia200836800olej napedowy (diesel)
SkodaOctavia201043821olej napedowy (diesel)
SkodaOctavia200845900olej napedowy (diesel)
SkodaOctavia200833500olej napedowy (diesel)
SkodaOctavia200112600benzyna
SkodaOctavia201059800olej napedowy (diesel)
SkodaOctavia200835900olej napedowy (diesel)
SkodaOctavia200827500benzyna+LPG
SkodaOctavia200944500olej napedowy (diesel)
SkodaOctavia200944500olej napedowy (diesel)
SkodaOctavia201047500olej napedowy (diesel)
SkodaOctavia200732500olej napedowy (diesel)
SkodaOctavia200840900olej napedowy (diesel)
SkodaOctavia200732500benzyna
SkodaOctavia200838900olej napedowy (diesel)
SkodaOctavia1999 8500benzyna
SkodaOctavia1998 8890benzyna
SkodaOctavia200838500olej napedowy (diesel)
SkodaOctavia200321388olej napedowy (diesel)
SkodaOctavia200836990benzyna
SkodaOctavia200530900benzyna+LPG
SkodaOctavia1999 2900benzyna
SkodaOctavia1997 6900olej napedowy (diesel)
SkodaOctavia200426500benzyna
SkodaOctavia200222072olej napedowy (diesel)
SkodaOctavia2000 8900benzyna
SkodaOctavia200624500olej napedowy (diesel)
SkodaOctavia201151870benzyna
SkodaOctavia200629999benzyna
SkodaOctavia200836000olej napedowy (diesel)
SkodaOctavia200628900benzyna
SkodaOctavia200218700olej napedowy (diesel)
SkodaOctavia200626900olej napedowy (diesel)
SkodaOctavia200624900olej napedowy (diesel)
SkodaOctavia201032999benzyna
SkodaOctavia200115900olej napedowy (diesel)
SkodaOctavia201042195benzyna
SkodaOctavia200118900benzyna
SkodaOctavia201167180benzyna
SkodaOctavia201175129olej napedowy (diesel)
SkodaOctavia201176550benzyna
SkodaOctavia200526500olej napedowy (diesel)
SkodaOctavia200727900olej napedowy (diesel)
SkodaOctavia200522000olej napedowy (diesel)
SkodaOctavia199810900olej napedowy (diesel)
SkodaOctavia199711800olej napedowy (diesel)
SkodaOctavia200014900olej napedowy (diesel)
SkodaOctavia201032900olej napedowy (diesel)
SkodaOctavia1999 7800benzyna
SkodaOctavia200011800olej napedowy (diesel)
SkodaOctavia1999 6850benzyna+LPG
SkodaOctavia2005 8900olej napedowy (diesel)
SkodaOctavia2007 2600benzyna
SkodaOctavia200118600olej napedowy (diesel)
SkodaOctavia200014200olej napedowy (diesel)
ggplot(data.skods, aes(x = Year, y = Price.in.PLN)) + 
  geom_point() # Too many points
ggplot(data.skods, aes(x = Year, y = Price.in.PLN)) + 
  geom_smooth() # Smoothed regression line + standard error
`geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'

ggplot(data.skods, aes(x = Year, y = Price.in.PLN)) + 
  geom_smooth(se = FALSE)
`geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'

ggplot(data.skods, aes(x = Year, y = Price.in.PLN)) + 
  geom_point() + 
  geom_smooth(se = FALSE)
`geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'

ggplot(data.skods, aes(x = Year, y = Price.in.PLN)) + 
  geom_point(size = 0.5) + 
  geom_smooth(se = FALSE, size = 3) # Layers are independent
`geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'

ggplot(data.skods, aes(x = Year, y = Price.in.PLN)) + 
  geom_point(size = 0.5) +
  geom_smooth(se = FALSE, size = 2) + 
  geom_smooth(method = 'lm', size = 2, color = 'green') + 
  geom_smooth(method = 'lm', formula = y ~ poly(x, 2), size = 2, color = 'red')
`geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'

`geom_smooth()` using formula 'y ~ x'

Wykres pudełkowy

auta2012 %>% 
  filter(Brand == 'Skoda', Year == 2007) %>% 
  select(Brand, Model, Year, Price.in.PLN, Type.of.fuel) -> data.skods # Prepare data set
data.skods
A data.frame: 950 × 5
BrandModelYearPrice.in.PLNType.of.fuel
<fct><fct><dbl><dbl><fct>
SkodaFabia 200721850olej napedowy (diesel)
SkodaOctavia 200738900olej napedowy (diesel)
SkodaOctavia 200732500olej napedowy (diesel)
SkodaOctavia 200732500benzyna
SkodaSuperb 200736600olej napedowy (diesel)
SkodaFabia 200714500olej napedowy (diesel)
SkodaOctavia 200736600olej napedowy (diesel)
SkodaFabia 200725494olej napedowy (diesel)
SkodaOctavia 200734900olej napedowy (diesel)
SkodaFabia 200718900olej napedowy (diesel)
SkodaOctavia 200735900olej napedowy (diesel)
SkodaFabia 200719732benzyna
SkodaFabia 200724119olej napedowy (diesel)
SkodaFabia 200731500olej napedowy (diesel)
SkodaRoomster200719700olej napedowy (diesel)
SkodaFabia 200729900olej napedowy (diesel)
SkodaOctavia 200737900olej napedowy (diesel)
SkodaFabia 200723700olej napedowy (diesel)
SkodaFabia 200723200olej napedowy (diesel)
SkodaOctavia 200727900olej napedowy (diesel)
SkodaOctavia 200744500olej napedowy (diesel)
SkodaOctavia 200710900olej napedowy (diesel)
SkodaRoomster200721900olej napedowy (diesel)
SkodaFabia 200721200benzyna
SkodaSuperb 200739999olej napedowy (diesel)
SkodaOctavia 200728900olej napedowy (diesel)
SkodaOctavia 200723526olej napedowy (diesel)
SkodaRoomster200732900benzyna
SkodaOctavia 200739900olej napedowy (diesel)
SkodaOctavia 200724900olej napedowy (diesel)
SkodaOctavia 2007 600olej napedowy (diesel)
SkodaOctavia 200735800olej napedowy (diesel)
SkodaOctavia 200744900olej napedowy (diesel)
SkodaFabia 200724900benzyna
SkodaFabia 200725900benzyna
SkodaFabia 200725900benzyna
SkodaFabia 200724900benzyna
SkodaFabia 200724900benzyna
SkodaFabia 200725900benzyna
SkodaRoomster200728900benzyna
SkodaOctavia 200729200olej napedowy (diesel)
SkodaOctavia 200729900olej napedowy (diesel)
SkodaFabia 200715300olej napedowy (diesel)
SkodaOctavia 200734500olej napedowy (diesel)
SkodaOctavia 200735900olej napedowy (diesel)
SkodaOctavia 200732500olej napedowy (diesel)
SkodaOctavia 200727900benzyna+LPG
SkodaFabia 200713200olej napedowy (diesel)
SkodaOctavia 200733500olej napedowy (diesel)
SkodaOctavia 200734900olej napedowy (diesel)
SkodaOctavia 200734900olej napedowy (diesel)
SkodaFabia 200726900olej napedowy (diesel)
SkodaFabia 200720200benzyna
SkodaRoomster200719900olej napedowy (diesel)
SkodaOctavia 200727900olej napedowy (diesel)
SkodaFabia 200714800benzyna
SkodaFabia 200716800olej napedowy (diesel)
SkodaOctavia 2007 2600benzyna
SkodaFabia 200713900olej napedowy (diesel)
SkodaFabia 200712700benzyna
ggplot(data.skods, aes(x = Model, y = Price.in.PLN)) + 
  geom_boxplot()
data.skods$Model <- reorder(data.skods$Model, data.skods$Price.in.PLN, median)
ggplot(data.skods, aes(x = Model, y = Price.in.PLN)) + 
  geom_boxplot() # Sorted
ggplot(data.skods, aes(x = Model, y = Price.in.PLN)) + 
  geom_boxplot(aes(fill = Model)) + 
  guides(fill = FALSE) # Remove legend for fill

Histogram

ggplot(data.skods, aes(x = Price.in.PLN)) + 
  geom_histogram()
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(data.skods, aes(x = Price.in.PLN, fill = Model)) + 
  geom_histogram(color = 'white')
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Wykres słupkowy

ggplot(data.skods , aes(x = Model)) + 
  geom_bar()
ggplot(data.skods , aes(x = Model, fill = Type.of.fuel)) + 
  geom_bar()

ggplot2 - modyfikacje

ggplot(cats_birds, aes(x = weight, y = speed, shape = group)) + 
  geom_point(size = 5) # How to adjust this plot?
ggplot(cats_birds, aes(x = weight, y = speed, shape = group)) + 
  geom_point(size = 5) +
  ggtitle('Cats vs birds') + 
  theme(plot.title = element_text(size = 20)) + # Title
  xlab('Weight [kg]') + ylab('Speed [km/h]') + # Axis' labels
  scale_shape_discrete(name = 'Cats and birds') + 
  theme(legend.position = 'top') + # Title and position of legend
  geom_text(data = cats_birds[c(6, 8), ], 
            aes(label = species), hjust = -0.2) # Additional text
ggplot(cats_birds, aes(x = weight, y = speed, shape = group, color = group)) + 
  geom_point(size = 5) # Control mapping
ggplot(cats_birds, aes(x = weight, y = speed, shape = group, color = group)) + 
  geom_point(size = 5) + 
  scale_shape_manual(values = c('B', 'C'), 
                     breaks = c('Bird', 'Cat')) + # Shape of groups and labels on legend
  scale_color_manual(values = c('blue', 'red'), 
                     breaks = c('Bird', 'Cat')) + # Colors
  scale_y_continuous(limits = c(0, 200), 
                     expand = c(0, 0)) # Remove margins for X axis
ggplot(cats_birds, aes(x = weight, y = speed, size = length, color = lifespan)) + 
  geom_point() # Control mapping - continuous variable
ggplot(cats_birds, aes(x = weight, y = speed, size = length, color = lifespan)) + 
  geom_point() + 
  scale_size_continuous(range = c(2, 7), limits = c(0, 3)) + # Size and range of points
  scale_color_gradient(low = 'gold', high = 'red') # Colors

ggplot2 - legenda

ggplot(cats_birds, aes(x = weight, y = speed, shape = group)) +
  geom_point(size = 5) 
ggplot(cats_birds, aes(x = weight, y = speed, shape = group)) +
  geom_point(size = 5) + 
  scale_shape_manual(values = c('B', 'C'), 
                     labels = c('Angry birds', 'Big cats'), 
                     name = 'Animals') + 
  theme(legend.background = element_rect(color = 'red', fill = 'grey95'),
        legend.title = element_text(size = 15),
        legend.position = c(0.8, 0.8)) # Position, color of legend

ggplot2 - multiplots

figure <- ggplot(cats_birds, aes(x = weight, y = speed)) +
  geom_point(size = 5) # We have now object figure, we don't plot
print(figure) # Plot
# 1 solution
print(figure + ggtitle('Figure 1'), 
      vp = viewport(x = 0.25, y = 0.75, width = 0.5, height = 0.5))
print(figure + ggtitle('Figure 2'), 
      vp = viewport(x = 0.25, y = 0.25, width = 0.5, height = 0.5))
print(figure + ggtitle('Figure 3'), 
      vp = viewport(x = 0.75, y = 0.5, width = 0.5, height = 1))
# 2 solution
pushViewport(viewport(layout = grid.layout(2, 2))) # Create layout
print(figure + ggtitle('Figure 1'), 
      vp = viewport(layout.pos.row = 1, layout.pos.col = 1)) # Position 1x1
print(figure + ggtitle('Figure 2'), 
      vp = viewport(layout.pos.row = 2, layout.pos.col = 1)) # Position 2x1
print(figure + ggtitle('Figure 3'), 
      vp = viewport(layout.pos.row = 1:2, layout.pos.col = 2)) # Position (1:2)x2
# 3 solution - simplest but not so flexible and we need additional library
grid.arrange(figure + ggtitle('Figure 1'), 
             figure + ggtitle('Figure 2'), 
             figure + ggtitle('Figure 3'),
             ncol = 2)

ggplot2 - szablony

figure <- ggplot(cats_birds, aes(x = weight, y = speed, color = group)) +
  geom_point(size = 5)
figure + theme_bw() # White background and grey lines
figure + theme_excel_new() # Excel
figure + theme_minimal() # Simple
figure + theme_economist() # Economist (newspapper)

Zadania

Zbiory danych dla zadań 1-8 znajdują się w pakiecie _PogromcyDanych (wersja angielska).

  1. Dla zbioru danych _cats_birds przedstaw zależność pomiędzy zmiennymi length oraz speed na wykresie rozrzutu. Dodaj trend liniowy do wykresu. Obie grupy zwierząt powinny mieć własną prostą regresji oraz typ i kolor punktów.

  2. W zbiorze danych _pearson mamy informacje o wzroście ojców i synów. Przedstaw zależność pomiędzy tymi cechami na wykresie rozrzutu. Dodaj trend liniowy bez przedziału ufności.

  3. W zbiorze danych _seriesIMDB mamy informacje o odcinkach około 200 seriali. Stwórz wykres, w którym na osi Y będzie nazwa serialu, a na osi X wykres pudełkowy ocen odcinków danego serialu. Popraw wykres tak, aby seriale były posortowane według median ocen.

  4. W zbiorze danych _diagnosis mamy zmienną eduk4_2013 z poziomami edukacji i zmienną gp29 z odpowiedziami na pytanie co jest najważniejsze w życiu. Stwórz wykres słupkowy. Każdy słupek odpowiada jednemu poziomowi edukacji. Każdy słupek powinien być podzielony na części wypełnione różnymi kolorami w zależności od zmiennej gp29.

  5. Ze zbioru _auta2012 wybierz jedynie auta Volkswagen Passat. Użyj funkcji geom_smooth(), aby przedstawić zależność pomiędzy rokiem produkcji i ceną. Spróbuj zastosować różne szablony wykresu.

  6. Zmień poniższy wykres:

    ggplot(cats_birds, aes(x = weight, y = speed, size = lifespan, color = lifespan)) + geom_point()

    Zastąp skalę kolorów na gradient od koloru zielonego do czerwonego i zastąp kropki kwadratami. Dodaj tytuł i etykiety osi.

  7. Ze zbioru danych _auta2012 wybierz wszystkie samochody marki Toyota. Na wykresie kołowym zwizualizuj liczbę pięciu najpopularniejszych modeli. Następnie te same dane przedstaw na wykresie słupkowym w kolejności malejących liczebności. Nie zapomnij o legendzie.

  8. Dla wzrostu synów i ojców ze zbioru danych _pearson narysuj na jednym wykresie histogram wraz z nieparametryczną oceną gęstości dla każdej cechy. Linie pomiędzy słupkami histogramu pokoloruj na biało. Oba wykresy powinny być obok siebie na jednym diagramie.

  9. Dla zbioru danych _iris przygotuj obrazek jak na poniższym rysunku. Rozważ użycie funkcji geom_density2d() oraz theme_light().

  1. Dla zbioru danych _iris przygotuj obrazek jak na poniższym rysunku.
  1. Dla zbioru danych _mtcars przygotuj obrazek jak na poniższym rysunku.
  1. Dla zbioru danych _economics z pakietu ggplot2 przygotuj obrazek jak na poniższym rysunku. Wykorzystaj szablon theme_economist_white() z pakietu ggthemes.