= 1:10
x = x^2
y
plot(x, y, main = "Funkcja kwadratowa", xlab = "Oś X", ylab = "Oś Y",
pch = 19, col = "blue")
Wstęp do programowania
Wizualizacja danych
Wprowadzenie
Wizualizacja danych jest niezbędnym etapem w analizie danych, który pozwala odkrywać, interpretować i przedstawiać wzorce oraz trendy wynikające z danych. R oferuje wiele funkcji graficznych dzięki wbudowanemu systemowi tworzenia wykresów. Podstawową funkcją do generowania różnego rodzaju wykresów jest funkcja plot()
, która domyślnie rysuje wykres rozrzutu (punktowy) dla dwóch zmiennych numerycznych. Niemniej, posiada ona o wiele więcej zastosowań.
W powyższym przykładzie argumenty x
i y
to zmienne wejściowe (dane), main
to tytuł wykresu, xlab
i ylab
to etykiety osi X i Y, pch
to symbol punktu, a col
to kolor punktów.
Rodzaje wykresów
mtcars
to jeden z wbudowanych zestawów danych w R, który zawiera informacje o 32 różnych modelach samochodów z magazynu Motor Trend US z 1974 r. Zawiera 11 zmiennych (kolumn) związanych z osiągami i konstrukcją tych samochodów. Na jego podstawie wygenerujemy cztery podstawowe typy wykresów. Dokumentację zbioru można sprawdzić używając ?mtcars
.
# wczytanie danych do sesji
= mtcars
mtcars
# struktura danych
str(mtcars)
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
Wykres rozrzutu
Wykres rozrzutu przedstawia związek między dwiema zmiennymi ciągłymi. Każdy punkt na wykresie przedstawia pojedynczą obserwację, przy czym oś X reprezentuje zmienną niezależną (wyjaśniającą), a oś Y zmienną zależną (modelowaną). Podstawowym zastosowaniem jest wizualne zbadanie potencjalnego związku (korelacji) między dwiema zmiennymi.
plot(mtcars$wt, mtcars$mpg,
main = "Spalanie paliwa w zależności od wagi samochodu",
xlab = "Waga [1000 funtów]",
ylab = "Mile na galon (MPG)",
pch = 19,
col = "darkred")
Wykres liniowy
Wykres liniowy jest najczęściej używany do pokazywania trendów lub zmian w czasie. Oś pozioma (X) zazwyczaj reprezentuje czas, jednak nie jest to regułą. Linie proste łączą kolejne punkty, pokazując trend lub przebieg zmian, co pomaga przedstawić, w jaki sposób zmienna zależna na osi Y zmienia się wraz ze zmienną niezależną na osi X. Do utworzenia wykresu liniowego należy użyć argumentu type
w funkcji plot()
z wartością "l"
.
# dane muszą być posortowane
= mtcars[order(mtcars$wt), ]
sorted
plot(sorted$wt, sorted$mpg,
type = "l",
main = "Spalanie paliwa w zależności od wagi samochodu",
xlab = "Waga [1000 funtów]",
ylab = "Mile na galon (MPG)",
lwd = 2)
Wykres słupkowy
Wykres słupkowy służy do wizualnego przedstawiania danych kategorycznych za pomocą prostokątnych słupków. Wysokość lub długość słupków jest proporcjonalna do wartości, które reprezentują. Do wykresów słupkowych stosowana jest funkcja barplot()
zamiast plot()
.
# zlicz wystąpienia dla każdego cylindra (grupy)
= table(mtcars$cyl)
cyl_counts cyl_counts
4 6 8
11 7 14
barplot(cyl_counts, xlab = "Liczba cylindrów", ylab = "Liczba samochodów")
Histogram
Histogram służy do przedstawienia rozkładu danych liczbowych w postaci słupków. Grupuje dane w przedziały (interwały) i pokazuje częstość wystąpień obserwacji mieszczących się w każdym z przedziałów. Kształt histogramu dostarcza istotnych informacji o rozkładzie danych (np. czy jest skośny czy symetryczny). Histogram można stworzyć używając funkcji hist()
.
hist(mtcars$hp, xlab = "Konie mechaniczne [KM]", ylab = "Częstość", main = NULL)
Ustawienia wykresów
Wykresy można dostosować według własnego uznania, dodając lub modyfikując różne elementy za pomocą odpowiednich argumentów funkcji plot()
.
Kolor
Kolory punktów, linii, słupków i innych elementów można zmieniać używając argumentu col
, natomiast argument border
zmienia kolor obwódki. R obsługuje angielskie nazwy kolorów (np. red
, blue
), a także szesnastkowe kody kolorów (np. #FF0000
; czerwony). Można również skorzystać z wbudowanych palet kolorów, takich jak rainbow()
, heat.colors()
czy topo.colors()
. Pełna lista kolorów dostępna jest tutaj.
Kształt i rozmiar punktów
Argument pch
określa kształt punktów na wykresach punktowych, a argument cex
odpowiada za ich rozmiar. Listę z kształtami punktów znajdziesz tutaj.
Typ i szerokość linii
W przypadku wykresów liniowych można dostosować typ oraz szerokość linii za pomocą argumentów lty
oraz lwd
. Typ linii (lty
) można określić za pomocą tekstu ("blank"
, "solid"
, "dashed"
, "dotted"
, "dotdash"
, "longdash"
, "twodash"
) lub liczby (0, 1, 2, 3, 4, 5, 6).
Etykiety
Etykiety można edytować za pomocą argumentów takich jak xlab
(opis osi X), ylab
(opis osi Y) oraz main
(tytuł wykresu).
Dodawanie warstw
Do istniejącego wykresu można dodawać kolejne warstwy punktowe, liniowe lub poligonowe używając funkcji points()
, lines()
, rect()
oraz polygon()
.
plot(x, y, col = "black", pch = 19)
points(x, x*5, col = "blue", pch = 19)
lines(x, x*5, col = "blue", lty = 2)
Linie pomocnicze
Funkcja abline()
umożliwia dodanie linii w określonych lokalizacjach. W zależności od zdefiniowanych wartości argumentów, linia może być horyzontalna (argument h
), wertykalna (argument v
) lub może przedstawiać trend (argumenty a
– wyraz wolny oraz b
– współczynnik kierunkowy prostej).
plot(x, y)
# linia horyzontalna
abline(h = 50, col = "blue", lty = 2)
# linia wertykalna
abline(v = 5, col = "red", lty = 3)
# linia trendu
abline(a = -22, b = 11, col = "black", lty = 4)
Tekst
Funkcja text()
dodaje etykiety tekstowe do punktów lub określonych lokalizacji na wykresie. Wymagane jest określenie pozycji tekstu używając dwóch współrzędnych oraz podanie wektora tekstowego. Argumenty pos
oraz offset
pozwalają na przesunięcie tekstu względem punktów.
plot(x, y)
text(x, y, labels = 1:10, pos = 2)
text(2, 80, labels = "Nowy tekst")
Legenda
Legenda jest nieodzownym elementem interpretacji wykresów reprezentujących grupy lub serie danych. Do jej wygenerowania służy funkcja legend()
, w której należy określić położenie, nazwy i kolory grup oraz tytuł.
plot(mtcars$wt, mtcars$mpg,
main = "Spalanie paliwa w zależności od wagi i liczby cylindrów samochodu",
xlab = "Waga [1000 funtów]",
ylab = "Mile na galon (MPG)",
pch = 19,
col = mtcars$cyl)
legend("topright",
legend = sort(unique(mtcars$cyl)),
col = sort(unique(mtcars$cyl)),
pch = 19,
title = "Cylindry")
Zauważ, że wartości unikalne z kolumny cyl
nie są posortowane, w związku z czym musimy samodzielnie je posortować wraz z odpowiadającymi im kolorami.
Wykresy wielopanelowe
= -10:10
x = x
y1 = x^2
y2
# panel składający się z dwóch kolumn
par(mfrow = c(1, 2))
plot(x, y1, main = "Funkcja liniowa", pch = 19)
plot(x, y2, main = "Funkcja kwadratowa", pch = 19)
# reset do pojedynczego panelu
par(mfrow = c(1, 1))
Zapisywanie wykresów
Stworzone wykresy można zapisać do plików w różnych formatach, np. png
, pdf
czy jpeg
. Preferowane są formaty kompresji bezstratnej.
# zapisanie ryciny w formacie png
png("wykres.png", width = 400, height = 300)
plot(x, y2, main = "Funkcja kwadratowa", pch = 19)
dev.off()
Zawsze należy użyć funkcji dev.off()
po wygenerowaniu i zapisaniu wykresu do pliku.
Zadania
- Stwórz wykres liniowy z zaznaczonymi punktami. Zakres wartości zmiennej \(X\) jest od -10 do 10, natomiast zmienna Y zawiera wartości bezwzględne zmiennej \(X\).
- Stwórz ponownie powyższy wykres, ale składający się z dwóch krzywych \(Y\). Pierwsza krzywa \(Y_1\) zawiera wartości z przedziału od -10 do 10 (kolor czarny), natomiast druga krzywa \(Y_2\) zawiera wartości bezwzględne (kolor zielony).
- Do powyższego wykresu dodaj horyzontalne oraz wertykalne linie pomocnicze o interwale 1. Linie powinny być przerywane, a ich kolor szary z ustawioną przezroczystością (
#BEBEBE4D
). - Stwórz wykres rozrzutu wykorzystując dane ze zbioru
iris
oraz zmienneSepal.Length
iSepal.Width
. Jako kolor uwzględnij gatunek irysów (zmiennaSpecies
) oraz dodaj legendę do wykresu. - Stwórz wykres słupkowy przedstawiający liczebność gatunków irysów. Każdy słupek oznacz innym kolorem z palety kolorów
rainbow
. - Na podstawie zmiennych
wt
orazmpg
ze zbiorumtcars
stwórz wykres rozrzutu, następnie samodzielnie wyznacz linię trendu i dodaj ją do wykresu. Jaka jest wartość współczynnika kierunkowego prostej, a jaka wyrazu wolnego? - Stwórz histogram zmiennej
wt
. Ustaw odpowiednie etykiety osi. Wybierz również kolor słupków oraz obwódki. Jaki jest wniosek z interpretacji tego histogramu?