Tworzenie prostych wykresów w R

Pokażemy teraz, w jaki sposób z wektora liczbowego można utworzyć wykres pokazujący rozkład pewnej zmiennej. Wróćmy do naszego przykładu z pytaniem o ulubioną porę roku.

poraroku <- c(zima=15, wiosna=26, lato=26, jesień=33)
poraroku
##   zima wiosna   lato jesień 
##     15     26     26     33 

Jeśli chcemy pokazać ten rozkład na wykresie słupkowym, korzystamy z punkcji barplot:

barplot(poraroku)

plot of chunk unnamed-chunk-2

Do wykresu możemy dodawać kolejne elementy, jeśli chcemy, aby był bardziej czytelny. Na przykład, jesli chcemy dodać tytuł wykresu oraz nazwę osi pionowej, piszemy:

barplot(poraroku, main = "Ulubiona pora roku", ylab = "Odsetek")

plot of chunk unnamed-chunk-3

Argument main oznacza tytuł główny wykresu, argument ylab oznacza tytuł osi pionowej. Analogiczny argument xlab oznacza tytuł osi poziomej, ale w tym przykładzie z niego nie korzystamy.

Przypuśćmy, że chcemy zmienić wypełnienie słupków na jasnoniebieskie. Piszemy wówczas:

barplot(poraroku, main = "Ulubiona pora roku", ylab = "Odsetek", 
    col = "lightblue")

plot of chunk unnamed-chunk-4

Możemy też każdy słupek wypełnić innym kolorem:

barplot(poraroku, main = "Ulubiona pora roku", ylab = "Odsetek", 
    col = c("lightblue", "lightgreen", "orange", "brown"))

plot of chunk unnamed-chunk-5

Argument col jest w tym przypadku wektorem znakowym, którego elementy to nazwy kolorów użytych do wypełnienia słupków. Listę wszystkich kolorów dostepnych w R można uzyskać wpisując colors().

Jeśli nie chcemy, aby słupki miały czarne obramowanie, możemy je zmienić w taki sam sposób, w jaki zmienia się kolor wypełnienia. Za kolor obramowania odpowiada argument border, którego wartość to wektor znakowy z nazwami kolorów. Na przykład, jeśli chcemy, aby wszystkie słupki miały żółte obramowanie, piszemy:

barplot(poraroku, main = "Ulubiona pora roku", ylab = "Odsetek", 
    col = c("lightblue", "lightgreen", "orange", "brown"), border = "yellow")

plot of chunk unnamed-chunk-6

Jeśli chcemy, aby obramowanie słupków było takie samo, jak ich wypełnienie, piszemy:

barplot(poraroku, main = "Ulubiona pora roku", ylab = "Odsetek", 
    col = c("lightblue", "lightgreen", "orange", "brown"), border = c("lightblue", 
        "lightgreen", "orange", "brown"))

plot of chunk unnamed-chunk-7

Wysokość osi pionowej możemy dostosować tak, aby sięgała ponad najwyższy słupek. Wykorzystuje się do tego argument ylim, który odpowiada za wysokość osi pionowej. Argument ten wymaga podania dwóch liczb, z których pierwsza określa dolną granicę osi, a druga — jej górną granicę. Ponieważ najwyższy słupek ma wysokość 33, wysokość osi pionowej możemy określić na 35 jednostek w następujący sposób:

barplot(poraroku, main = "Ulubiona pora roku", ylab = "Odsetek", 
    col = c("lightblue", "lightgreen", "orange", "brown"), border = c("lightblue", 
        "lightgreen", "orange", "brown"), ylim = c(0, 35))

plot of chunk unnamed-chunk-8

Przypuśćmy jeszcze, że chcemy zmienić nieco etykiety słupków, tak, by każda zaczynała się dużą literą. Robi się to za pomocą argumentu names.arg:

barplot(poraroku, main = "Ulubiona pora roku", ylab = "Odsetek", 
    col = c("lightblue", "lightgreen", "orange", "brown"), border = c("lightblue", 
        "lightgreen", "orange", "brown"), ylim = c(0, 35), names.arg = c("Zima", 
        "Wiosna", "Lato", "Jesień"))

plot of chunk unnamed-chunk-9

Argument ten jest wektorem znakowym, którego poszczególne elementy odpowiadają nazwom słupków. Wektor ten musi mieć tyle elementów, ile jest słupków na wykresie. Argument ten jest szczególnie przydatny wtedy, kiedy wektor liczbowy, z którego utworzony został wykres, nie zawiera nazw. Na przykład:

barplot(c(15, 26, 26, 33), main = "Ulubiona pora roku", ylab = "Odsetek", 
    col = c("lightblue", "lightgreen", "orange", "brown"), border = c("lightblue", 
        "lightgreen", "orange", "brown"), ylim = c(0, 35), )

plot of chunk unnamed-chunk-10

Ale:

barplot(c(15, 26, 26, 33), main = "Ulubiona pora roku", ylab = "Odsetek", 
    col = c("lightblue", "lightgreen", "orange", "brown"), border = c("lightblue", 
        "lightgreen", "orange", "brown"), ylim = c(0, 35), names.arg = c("Zima", 
        "Wiosna", "Lato", "Jesień"))

plot of chunk unnamed-chunk-11

Praca domowa ;-)

  1. Proszę wejśc na stronę The Survey Results
  2. Proszę znaleźć rozkład odpowiedzi na pytanie o ulubiony rodzaj sztuki w Islandii.
  3. Z odsetków podanych na tej stronie proszę utworzyć wektor liczbowy o nazwie art i nadać każdemu elementowi tego wektoru odpowiednią nazwę.
  4. Proszę znaleźć informację o tym, ile osób odpowiedziało na to pytanie, a następnie proszę wykorzystać tę informację do tego, aby przekształcić odsetki na liczebności.
  5. Proszę sprawdzić, czy liczebności sumują się do wartości podanej na stronie z wynikami badania.
  6. Ile osób byłoby w najliczeniejszej kategorii, gdyby liczba uczestników badania wynsioła \( N=500 \)?
  7. Proszę utworzyć wykres słupkowy pokazujący rozkład procentowy odpowiedzi na pytanie o ulubiony rodzaj sztuki. Proszę do wykresu dodać tytuł. Każdy słupek proszę wypełnić innym kolorem.