Mici funcții R inutile-utile – Propoziții care dispar

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe R – TomazTsqlși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)


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.

Să ne jucăm cu câteva cuvinte. Mai ales cu cuvintele care dispar.

Folosind două pachete: ggplot2 și gganimate vom construi o animație (în buclă), în care propozițiile vor fi dispărute, cuvânt cu cuvânt. Un mod frumos de a antrena animațiile ggplot.

Funcția este o combinație de dispute de cadre de date și vizualizări:

vanishing_sentence <- function(sentence, output_file = NULL, interval = 0.5) {
  
  words <- unlist(strsplit(sentence, " "))
  vanishing_order <- sample(seq_along(words))
  
  sentence_data <- data.frame(
    word = words,
    position = seq_along(words),
    vanish_step = match(seq_along(words), vanishing_order)
  )
  
  # sequence
  animation_data <- do.call(rbind, lapply(1:(max(sentence_data$vanish_step) + 1), function(step) {
    sentence_data %>%
      mutate(visible = ifelse(vanish_step >= step, TRUE, FALSE)) %>%
      group_by(position) %>%
      summarize(word = ifelse(visible, word, ""), .groups = "drop") %>%
      mutate(step = step)
  }))
  
  p <- ggplot(animation_data, aes(x = position, y = 1, label = word)) +
    geom_text(size = 6, hjust = 0.5, vjust = 0.5, fontface = "bold") +
    theme_void() +
    theme(
      plot.margin = margin(1, 1, 1, 1, "cm"),
      plot.background = element_rect(fill = "white", color = NA)
    ) +
    transition_states(step, transition_length = interval,state_length = 1) +
    enter_fade() +
    exit_fade() +
    ease_aes("linear") 
  
  
  # render and save
  if (!is.null(output_file)) {
    anim <- animate( p,nframes = length(words) + 10, fps = 10,width = 800,height = 400, renderer = gifski_renderer(output_file) )
    return(anim)
  } else {
    animate(
      p,
      nframes = length(words) + 10,
      fps = 10,
      width = 800,
      height = 400
    )
  }
}

Și odată ce aveți funcția disponibilă în mediul dvs., rulați funcția (două moduri – pentru a o salva în ieșirea Windows sau într-un fișier):

sentence <- "This sentence will gradually vanish - word by word"
# save to file
vanishing_sentence(sentence, output_file = "vanishing_sentence.gif")
# save to output
vanishing_sentence(sentence)

La mulți ani 2025! Continuați cu codarea R și rămâneți sănătoși!

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.