Star Wars

# instalowanie niezbednych bibliotek 
if (!requireNamespace("dplyr", quietly = TRUE)) {
  install.packages("dplyr", repos = "https://cloud.r-project.org/")
}

if (!requireNamespace("knitr", quietly = TRUE)) {
  install.packages("knitr")
}

if (!requireNamespace("DT", quietly = TRUE)) {
  install.packages("DT")
}

if (!requireNamespace("ggplot2", quietly = TRUE)) {
  install.packages("ggplot2")
}

if (!requireNamespace("reshape2", quietly = TRUE)) {
  install.packages("reshape2")
}

if (!requireNamespace("tidyr", quietly = TRUE)) {
  install.packages("tidyr")
}

if (!requireNamespace("plotly", quietly = TRUE)) {
  install.packages("plotly")
}
# ładowanie niezbednych pakietow
library(dplyr)
library(knitr)
library(DT)
## Warning: pakiet 'DT' został zbudowany w wersji R 4.2.3
library(ggplot2)
## Warning: pakiet 'ggplot2' został zbudowany w wersji R 4.2.3
library(reshape2)
library(tidyr)
library(plotly)

Tabela Postaci

#wczytywanie danych
data(starwars)

#tworzenie interaktywnej tabeli
data_selected = select(starwars, name, height, mass, birth_year, sex, species, eye_color, hair_color, skin_color)

datatable(data_selected, 
          options = list(
            pageLength = 5,  # Ustawienie liczby wierszy na stronę
            scrollY = "300px",  # Wysokość obszaru przewijania
            scrollCollapse = TRUE,  # Skalowanie suwaka przy zmniejszaniu rozmiaru tabeli
            paging = TRUE  # Włączenie paginacji
          ))

Wykres przedstawiaijacy proporcje plci postaci

# Tworzenie wykresu ggplot dla danych z pakietu starwars

ggplot(starwars, aes(x = sex, fill = sex)) +
  # Dodanie warstwy słupków do wykresu
  geom_bar() +
  # Dodanie tytułu oraz etykiet osi x i y dla wykresu
  labs(title = "Proporcje płci postaci w Gwiezdnych Wojnach",
       x = "Płeć",
       y = "Liczba postaci") +
# Manualne definiowanie kolorów dla poszczególnych płci
  scale_fill_manual(values = c("female" = "pink", "male" = "blue","NA" = "grey", "none" = "yellow", "hermaphroditic" = "purple"))

Wykres przedstawiajacy proprcje gatunkow

# Zliczenie wystąpień każdego gatunku
species_counts = starwars %>%
  count(species) %>%
  arrange(desc(n))  # Sortowanie malejąco według liczby wystąpień

# Wybieranie pięciu najczęstszych gatunków
top_species = species_counts %>% 
  slice_head(n = 5)

# Obliczenie liczby postaci w pozostałych gatunkach
other_count = sum(species_counts$n) - sum(top_species$n)

# Tworzenie ramki danych dla wykresu
plot_data = bind_rows(top_species, data.frame(species = "Reszta", n = other_count))

# Tworzenie etykiet z procentowym udziałem
plot_data = plot_data %>%
  mutate(percent = n / sum(n) * 100)  # Obliczenie procentowego udziału

# Stworzenie wykresu kołowego z granicami wizualnymi i etykietami procentowymi
ggplot(plot_data, aes(x = "", y = n, fill = species)) +
  geom_bar(stat = "identity", width = 1, color = "black") +  # Dodanie granic wizualnych
  coord_polar("y", start = 0) +
  labs(title = "Proporcje 5 najczęstszych gatunków postaci w Gwiezdnych Wojnach") +
  theme_void() +
  scale_fill_brewer(palette = "Set3") +
  geom_text(aes(label = paste0(round(percent, 1), "%")), position = position_stack(vjust = 0.5))  # Dodanie etykiet procentowych

Postacie dopasowane do filmu w ktorym wystapily

# Przygotowanie danych
films_characters <- starwars %>%
  select(name, films) %>%
  unnest(films) %>%
  mutate(films = paste0("Episode ", films)) %>%
  group_by(films) %>%
  summarise(characters = paste(name, collapse = ", "))

# Wyświetlenie tabeli
knitr::kable(films_characters, caption = "Filmy i dopasowane postacie w Gwiezdnych Wojnach")
Filmy i dopasowane postacie w Gwiezdnych Wojnach
films characters
Episode A New Hope Luke Skywalker, C-3PO, R2-D2, Darth Vader, Leia Organa, Owen Lars, Beru Whitesun lars, R5-D4, Biggs Darklighter, Obi-Wan Kenobi, Wilhuff Tarkin, Chewbacca, Han Solo, Greedo, Jabba Desilijic Tiure, Wedge Antilles, Jek Tono Porkins, Raymus Antilles
Episode Attack of the Clones C-3PO, R2-D2, Owen Lars, Beru Whitesun lars, Obi-Wan Kenobi, Anakin Skywalker, Yoda, Palpatine, Boba Fett, Nute Gunray, Jar Jar Binks, Watto, Shmi Skywalker, Ayla Secura, Mace Windu, Ki-Adi-Mundi, Kit Fisto, Plo Koon, Mas Amedda, Gregar Typho, Cordé, Cliegg Lars, Poggle the Lesser, Luminara Unduli, Barriss Offee, Dormé, Dooku, Bail Prestor Organa, Jango Fett, Zam Wesell, Dexter Jettster, Lama Su, Taun We, Jocasta Nu, R4-P17, Wat Tambor, San Hill, Shaak Ti, Sly Moore, Padmé Amidala
Episode Return of the Jedi Luke Skywalker, C-3PO, R2-D2, Darth Vader, Leia Organa, Obi-Wan Kenobi, Chewbacca, Han Solo, Jabba Desilijic Tiure, Wedge Antilles, Yoda, Palpatine, Boba Fett, Lando Calrissian, Ackbar, Mon Mothma, Arvel Crynyd, Wicket Systri Warrick, Nien Nunb, Bib Fortuna
Episode Revenge of the Sith Luke Skywalker, C-3PO, R2-D2, Darth Vader, Leia Organa, Owen Lars, Beru Whitesun lars, Obi-Wan Kenobi, Anakin Skywalker, Wilhuff Tarkin, Chewbacca, Yoda, Palpatine, Nute Gunray, Ayla Secura, Mace Windu, Ki-Adi-Mundi, Kit Fisto, Eeth Koth, Adi Gallia, Saesee Tiin, Plo Koon, Poggle the Lesser, Luminara Unduli, Dooku, Bail Prestor Organa, R4-P17, Shaak Ti, Grievous, Tarfful, Raymus Antilles, Sly Moore, Tion Medon, Padmé Amidala
Episode The Empire Strikes Back Luke Skywalker, C-3PO, R2-D2, Darth Vader, Leia Organa, Obi-Wan Kenobi, Chewbacca, Han Solo, Wedge Antilles, Yoda, Palpatine, Boba Fett, IG-88, Bossk, Lando Calrissian, Lobot
Episode The Force Awakens Luke Skywalker, R2-D2, Leia Organa, Chewbacca, Han Solo, Ackbar, Finn, Rey, Poe Dameron, BB8, Captain Phasma
Episode The Phantom Menace C-3PO, R2-D2, Obi-Wan Kenobi, Anakin Skywalker, Jabba Desilijic Tiure, Yoda, Palpatine, Qui-Gon Jinn, Nute Gunray, Finis Valorum, Jar Jar Binks, Roos Tarpals, Rugor Nass, Ric Olié, Watto, Sebulba, Quarsh Panaka, Shmi Skywalker, Darth Maul, Ayla Secura, Dud Bolt, Gasgano, Ben Quadinaros, Mace Windu, Ki-Adi-Mundi, Kit Fisto, Eeth Koth, Adi Gallia, Saesee Tiin, Yarael Poof, Plo Koon, Mas Amedda, Ratts Tyerell, Padmé Amidala

Czestosc wystepowania kolorow wlosow

# Przygotowanie danych
starwars_filtered <- starwars %>% filter(!is.na(hair_color))

# Obliczenie liczby postaci dla każdego koloru włosów
hair_color_counts <- starwars_filtered %>%
  count(hair_color) %>%
  arrange(desc(n))

# Tworzenie kolorowego wykresu słupkowego
p <- ggplot(hair_color_counts, aes(x = reorder(hair_color, n), y = n, fill = hair_color)) +
  geom_bar(stat = "identity") +
  scale_fill_manual(values = rainbow(nrow(hair_color_counts))) +
  labs(title = "Liczba postaci z konkretnym kolorem włosów w Star Wars",
       x = "Kolor włosów",
       y = "Liczba postaci") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

p

Czestosc wystepowania koloru oczu

# Przygotowanie danych
starwars_filtered <- starwars %>% filter(!is.na(eye_color))

# Obliczenie liczby postaci dla każdego koloru oczu
eye_color_counts <- starwars_filtered %>%
  count(eye_color) %>%
  arrange(desc(n))

# Tworzenie kolorowego wykresu słupkowego
p <- ggplot(eye_color_counts, aes(x = reorder(eye_color, n), y = n, fill = eye_color)) +
  geom_bar(stat = "identity") +
  scale_fill_manual(values = hcl.colors(length(unique(eye_color_counts$eye_color)), palette = "Dark2")) +
  labs(title = "Liczba postaci z konkretnym kolorem oczu w Star Wars",
       x = "Kolor oczu",
       y = "Liczba postaci") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

p