shiny::actionButton("toggle-code", "Pokaż/Ukryj Kod", class = "btn btn-info")
# Wczytanie niezbędnych bibliotek
library(ggplot2)
## Warning: pakiet 'ggplot2' został zbudowany w wersji R 4.2.3
library(palmerpenguins)
# Interaktywna przegląd danych
library(DT)
## Warning: pakiet 'DT' został zbudowany w wersji R 4.2.3
datatable(penguins, options = list(pageLength = 5), caption = "Interaktywna Tabela")
# Podstawowe informacje o danych
head(penguins)
## # A tibble: 6 × 8
##   species island    bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
##   <fct>   <fct>              <dbl>         <dbl>             <int>       <int>
## 1 Adelie  Torgersen           39.1          18.7               181        3750
## 2 Adelie  Torgersen           39.5          17.4               186        3800
## 3 Adelie  Torgersen           40.3          18                 195        3250
## 4 Adelie  Torgersen           NA            NA                  NA          NA
## 5 Adelie  Torgersen           36.7          19.3               193        3450
## 6 Adelie  Torgersen           39.3          20.6               190        3650
## # ℹ 2 more variables: sex <fct>, year <int>
summary(penguins)
##       species          island    bill_length_mm  bill_depth_mm  
##  Adelie   :152   Biscoe   :168   Min.   :32.10   Min.   :13.10  
##  Chinstrap: 68   Dream    :124   1st Qu.:39.23   1st Qu.:15.60  
##  Gentoo   :124   Torgersen: 52   Median :44.45   Median :17.30  
##                                  Mean   :43.92   Mean   :17.15  
##                                  3rd Qu.:48.50   3rd Qu.:18.70  
##                                  Max.   :59.60   Max.   :21.50  
##                                  NA's   :2       NA's   :2      
##  flipper_length_mm  body_mass_g       sex           year     
##  Min.   :172.0     Min.   :2700   female:165   Min.   :2007  
##  1st Qu.:190.0     1st Qu.:3550   male  :168   1st Qu.:2007  
##  Median :197.0     Median :4050   NA's  : 11   Median :2008  
##  Mean   :200.9     Mean   :4202                Mean   :2008  
##  3rd Qu.:213.0     3rd Qu.:4750                3rd Qu.:2009  
##  Max.   :231.0     Max.   :6300                Max.   :2009  
##  NA's   :2         NA's   :2
# Tabela mas ciała pingwinów
knitr::kable(head(penguins[, c("species", "island", "body_mass_g")]), 
             caption = "Tabela Mas Ciała Pingwinów")
Tabela Mas Ciała Pingwinów
species island body_mass_g
Adelie Torgersen 3750
Adelie Torgersen 3800
Adelie Torgersen 3250
Adelie Torgersen NA
Adelie Torgersen 3450
Adelie Torgersen 3650
# Podsumowanie mas ciała pingwinów
summary(penguins$body_mass_g)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    2700    3550    4050    4202    4750    6300       2
# Obliczenia statystyczne dla masy ciała w zależności od gatunku
mean_masa_ciala <- tapply(penguins$body_mass_g, penguins$species, mean)
median_masa_ciala <- tapply(penguins$body_mass_g, penguins$species, median)
sd_masa_ciala <- tapply(penguins$body_mass_g, penguins$species, sd)

# Wyświetlenie wyników obliczeń
cat("Średnia masa ciała dla każdego gatunku:\n")
## Średnia masa ciała dla każdego gatunku:
print(mean_masa_ciala)
##    Adelie Chinstrap    Gentoo 
##        NA  3733.088        NA
cat("\nMediana masy ciała dla każdego gatunku:\n")
## 
## Mediana masy ciała dla każdego gatunku:
print(median_masa_ciala)
##    Adelie Chinstrap    Gentoo 
##        NA      3700        NA
cat("\nOdchylenie standardowe masy ciała dla każdego gatunku:\n")
## 
## Odchylenie standardowe masy ciała dla każdego gatunku:
print(sd_masa_ciala)
##    Adelie Chinstrap    Gentoo 
##        NA  384.3351        NA
# Wykres kołowy dla udziału poszczególnych gatunków
library(dplyr)
## 
## Dołączanie pakietu: 'dplyr'
## 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
penguins %>%
  group_by(species) %>%
  summarise(count = n()) %>%
  ggplot(aes(x = "", y = count, fill = species)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y") +
  labs(title = "Udział poszczególnych gatunków pingwinów",
       x = NULL,
       y = NULL) +
  theme_void()

# Wykres histogramu rozkładu mas ciała pingwinów
ggplot(penguins, aes(x = body_mass_g)) +
  geom_histogram(binwidth = 500, fill = "skyblue", color = "black") +
  labs(title = "Rozkład mas ciała pingwinów",
       x = "Masa Ciała (g)",
       y = "Liczba pingwinów")
## Warning: Removed 2 rows containing non-finite values (`stat_bin()`).

# Instalacja i załadowanie pakietu plotly (jeśli nie jest jeszcze zainstalowany)
if (!requireNamespace("plotly", quietly = TRUE)) {
  install.packages("plotly")
}
library(plotly)
## 
## Dołączanie pakietu: 'plotly'
## Następujący obiekt został zakryty z 'package:ggplot2':
## 
##     last_plot
## Następujący obiekt został zakryty z 'package:stats':
## 
##     filter
## Następujący obiekt został zakryty z 'package:graphics':
## 
##     layout
# Wykres pudełkowy z interaktywnym tooltipem
plot_ly(penguins, x = ~species, y = ~body_mass_g, type = "box",
        text = ~paste("Gatunek: ", species, "<br>Masa Ciała: ", body_mass_g)) %>%
  layout(title = "Interaktywny Wykres Pudełkowy Masy Ciała",
         xaxis = list(title = "Gatunek"),
         yaxis = list(title = "Masa Ciała (g)"))
## Warning: Ignoring 2 observations
# Wykres punktowy przedstawiający korelację między długością płetwy a masą ciała pingwina
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(alpha = 0.5, color = "darkred") +
  labs(title = "Korelacja między długością płetwy a masą ciała pingwina",
       x = "Długość Płetwy (mm)",
       y = "Masa Ciała (g)")
## Warning: Removed 2 rows containing missing values (`geom_point()`).

# Wykres pudełkowy przedstawiający rozkład mas ciała pingwinów w zależności od gatunku
labs(title = "Rozkład mas ciała pingwinów w zależności od gatunku",
       x = "Gatunek",
       y = "Masa Ciała (g)")
## $x
## [1] "Gatunek"
## 
## $y
## [1] "Masa Ciała (g)"
## 
## $title
## [1] "Rozkład mas ciała pingwinów w zależności od gatunku"
## 
## attr(,"class")
## [1] "labels"
# Instalacja pakietu plotly (jeśli nie jest zainstalowany)
# install.packages("plotly")

# Wczytanie biblioteki plotly
library(plotly)

# Wykres 3D
fig <- plot_ly(penguins, x = ~bill_length_mm, y = ~bill_depth_mm, z = ~body_mass_g,
               color = ~species, colors = c("Adelie" = "red", "Chinstrap" = "blue", "Gentoo" = "green"),
               marker = list(size = 5, opacity = 0.8)) %>%
  add_markers() %>%
  layout(scene = list(xaxis = list(title = "Długość Dzioba (mm)"),
                      yaxis = list(title = "Głębokość Dzioba (mm)"),
                      zaxis = list(title = "Masa Ciała (g)"),
                      margin = list(l = 0, r = 0, b = 0, t = 0)))

# Wyświetlenie wykresu
fig
## Warning: Ignoring 2 observations
# Ciekawostki o pingwinach
cat("### Ciekawostki o pingwinach\n\n")
## ### Ciekawostki o pingwinach
cat("1. Pingwiny są doskonałymi pływakami i nurkami. Potrafią zanurkować na głębokość nawet kilkuset metrów.\n")
## 1. Pingwiny są doskonałymi pływakami i nurkami. Potrafią zanurkować na głębokość nawet kilkuset metrów.
cat("2. Gatunek krótkoskrzydłego pingwina Adeli jest najczęściej spotykanym pingwinem w Antarktyce.\n")
## 2. Gatunek krótkoskrzydłego pingwina Adeli jest najczęściej spotykanym pingwinem w Antarktyce.
cat("3. Pingwiny mają specjalne gruczoły, które pomagają im pozbyć się nadmiaru soli z organizmu po spożyciu słonej wody.\n")
## 3. Pingwiny mają specjalne gruczoły, które pomagają im pozbyć się nadmiaru soli z organizmu po spożyciu słonej wody.