4.1 MiB
Wizualizacja danych
3-6. Biblioteka ggplot2 [laboratoria]
Tomasz Górecki (2021)
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
Ładowanie wymaganego pakietu: dplyr Dołączanie pakietu: ‘dplyr’ Następujący obiekt został zakryty z ‘package:gridExtra’: combine Następujące obiekty zostały zakryte z ‘package:stats’: filter, lag Następujące obiekty zostały zakryte z ‘package:base’: intersect, setdiff, setequal, union Ładowanie wymaganego pakietu: SmarterPoland Ładowanie wymaganego pakietu: httr Ładowanie wymaganego pakietu: htmltools
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ą.
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)
Date | Name | Opening Price | Max Price | Min Price | Closing Price | Change | Turnover | |
---|---|---|---|---|---|---|---|---|
<date> | <fct> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | |
1 | 2013-12-02 | WIG | 54627 | 54790 | 53935 | 53935 | -1.41 | 640784 |
2 | 2013-12-03 | WIG | 54026 | 54026 | 53250 | 53277 | -1.22 | 914148 |
3 | 2013-12-04 | WIG | 53222 | 53285 | 52536 | 52867 | -0.77 | 968047 |
4 | 2013-12-05 | WIG | 52837 | 52900 | 52575 | 52597 | -0.51 | 808039 |
5 | 2013-12-06 | WIG | 52838 | 52899 | 52513 | 52728 | 0.25 | 1012872 |
6 | 2013-12-09 | WIG | 53113 | 53187 | 52881 | 52881 | 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
head(data.skods)
Brand | Model | Year | Price.in.PLN | Type.of.fuel | |
---|---|---|---|---|---|
<fct> | <fct> | <dbl> | <dbl> | <fct> | |
1 | Skoda | Octavia | 2010 | 52750 | benzyna |
2 | Skoda | Octavia | 2003 | 16800 | olej napedowy (diesel) |
3 | Skoda | Octavia | 2007 | 38900 | olej napedowy (diesel) |
4 | Skoda | Octavia | 2009 | 39999 | olej napedowy (diesel) |
5 | Skoda | Octavia | 2008 | 28500 | olej napedowy (diesel) |
6 | Skoda | Octavia | 2008 | 36800 | olej 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
head(data.skods)
Brand | Model | Year | Price.in.PLN | Type.of.fuel | |
---|---|---|---|---|---|
<fct> | <fct> | <dbl> | <dbl> | <fct> | |
1 | Skoda | Fabia | 2007 | 21850 | olej napedowy (diesel) |
2 | Skoda | Octavia | 2007 | 38900 | olej napedowy (diesel) |
3 | Skoda | Octavia | 2007 | 32500 | olej napedowy (diesel) |
4 | Skoda | Octavia | 2007 | 32500 | benzyna |
5 | Skoda | Superb | 2007 | 36600 | olej napedowy (diesel) |
6 | Skoda | Fabia | 2007 | 14500 | olej napedowy (diesel) |
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
Warning message: “`guides(<scale> = FALSE)` is deprecated. Please use `guides(<scale> = "none")` instead.”
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).
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.
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.
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.
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.
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.
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.
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.
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.
Dla zbioru danych _iris przygotuj obrazek jak na poniższym rysunku. Rozważ użycie funkcji geom_density2d() oraz theme_light().
- Dla zbioru danych _iris przygotuj obrazek jak na poniższym rysunku.
- Dla zbioru danych _mtcars przygotuj obrazek jak na poniższym rysunku.
- Dla zbioru danych _economics z pakietu ggplot2 przygotuj obrazek jak na poniższym rysunku. Wykorzystaj szablon theme_economist_white() z pakietu ggthemes.