Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.
Introducere
Vendée Globe 2024 este pe drumuri!
Am vrut să văd dacă pot încerca o hartă a căpitanilor cu R.
Urmați acest tutorial dacă doriți să îl încercați singur!
Obținerea datelor
Clasamentul și coordonatele skipperului (printre alte date) sunt actualizate la fiecare patru ore pe site-ul cursei.
Puteți descărca seturile de date de aici.
Am curățat diferitele seturi de date și am creat un set de date „global”, care poate fi descărcat aici.
Începem scriptul prin încărcarea pachetelor pe care le vom folosi:
-
{tidyverse} pentru a curăța datele și a crea parcele
-
{readxl} pentru a importa foile Excel care conțin datele
-
{showtext} pentru a schimba fonturile utilizate
-
{parzer} pentru a converti coordonatele
Dacă nu aveți aceste pachete instalate, utilizați pur și simplu install.packages()
funcţie.
library(tidyverse) library(readxl) library(showtext) library(parzer)
Încărcăm și fonturile pe care le vom folosi în ploturi: Roboto Condensed.
# Import the fonts font_add_google("Roboto Condensed", "Roboto Condensed") showtext_auto()
Acum putem importa setul de date curat:
# Download the dataset df <- readr::read_csv("clean_data.csv")
Pentru o prezentare rapidă a datelor, folosim glimpse()
funcția din pachetul {dplyr}:
# Explore the dataset glimpse(df)
Rows: 2,160 Columns: 24 $ Date <dbl> 20241110, 20241110, 20241110, 20241110, 20… $ Time <chr> "130400", "130400", "130400", "130400", "1… $ Rank <chr> "1", "2", "3", "4", "5", "6", "7", "8", "9… $ Nat <chr> "FRA", "GBR", "FRA", "FRA", "FRA", "FRA", … $ Sail <chr> "FRA 2030", "FRA 100", "FRA 172", "FRA 56"… $ Surname <chr> "Meilhat", "Goodchild", "Duc", "Amedeo", "… $ Name <chr> "Paul", "Sam", "Louis", "Fabrice", "Maxime… $ Hour_FR <chr> "14:02 FRrn", "14:02 FRrn", "14:02 FR… $ Latitude <chr> "46°25.94'N", "46°26.02'N", "46°26.01'N", … $ Longitude <chr> "01°50.17'W", "01°50.14'W", "01°50.01'W", … $ Last30min_heading <chr> "297°", "270°", "291°", "277°", "240°", "2… $ Last30min_speed <chr> "0.9 kts", "0.8 kts", "0.6 kts", "0.6 kts"… $ Last30min_VMG <chr> "0.5 kts", "0.7 kts", "0.4 kts", "0.5 kts"… $ Last30min_distance <chr> "0.0 nm", "0.0 nm", "0.0 nm", "0.0 nm", "0… $ SinceLastStandings_heading <chr> "297°", "270°", "291°", "280°", "240°", "2… $ SinceLastStandings_speed <chr> "0.9 kts", "0.8 kts", "0.6 kts", "0.7 kts"… $ SinceLastStandings_VMG <chr> "0.5 kts", "0.7 kts", "0.4 kts", "0.5 kts"… $ SinceLastStandings_distance <chr> "0.0 nm", "0.0 nm", "0.0 nm", "0.1 nm", "0… $ Last24hrs_heading <chr> "205°", "205°", "204°", "204°", "204°", "2… $ Last24hrs_speed <chr> "0.2 kts", "0.2 kts", "0.2 kts", "0.2 kts"… $ Last24hrs_VMG <chr> "0.2 kts", "0.2 kts", "0.2 kts", "0.1 kts"… $ Last24hrs_distance <chr> "4.6 nm", "4.6 nm", "4.5 nm", "4.5 nm", "4… $ Distance_to_finish <chr> "24272.3 nm", "24272.4 nm", "24272.5 nm", … $ Distance_to_leader <chr> "0.0 nm", "0.1 nm", "0.1 nm", "0.2 nm", "0…
Curățarea datelor
Folosim următorul cod pentru a analiza coordonatele:
df <- df |> mutate(lon = parzer::parse_lon(Longitude), lat = parzer::parse_lat(Latitude))
Crearea hărții
Harta lumii
Mai întâi obținem datele pentru harta lumii:
world <- map_data("world")
Căpitanii
Apoi creăm o hartă simplă cu cele mai recente clasamente:
ggplot() + geom_polygon(data = world, aes(x = long, y = lat, group = group), fill = "#afcfdf") + geom_point(data = filter(df, Date == 20241120, Time == "060000"), aes(x = lon, y = lat), col = "white", size = 0.8) + coord_fixed(ratio = 1.3, xlim = c(-35, 0), ylim = c(5, 30)) + labs(title = "Vendée Globe 2024", subtitle = "2024-11-20 6:00") + theme_void() + theme(panel.background = element_rect(colour = "#485fb0", fill = "#485fb0"), plot.background = element_rect(colour = "#485fb0", fill = "#485fb0"), # plot.margin = margin(t = -50, r = -150), plot.title = element_text(colour = "white", family = "Roboto Condensed", size = 20, hjust = 0.5), plot.subtitle = element_text(colour = "white", family = "Roboto Condensed", size = 15, hjust = 0.5))
Salvați harta
Salvăm acum harta:
ggsave("20241120_060000.png", p, dpi = 320, width = 6, height = 6)
Și iată rezultatul:
Noobz.ro.com oferă actualizări zilnice prin e-mail despre R știri și tutoriale despre învățarea R și multe alte subiecte. Faceți clic aici dacă doriți să publicați sau să găsiți un job R/data-science.
Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.
Continuați să citiți: Vendée Globe 2024