Crearea unui pom de Crăciun animat în R

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

Cu Crăciunul de mâine, am decis să creăm un Pom de Crăciun animat folosind {ggplot2}, {sf} și {gganimate}.

Mai întâi avem nevoie de un copac. Pentru a face acest lucru am folosit un poligon {sf} în care trecem în coordonatele bradului de Crăciun ca o matrice de listă pentru
st_polygon. Putem folosi apoi geom_sf pentru a adăuga acest strat pe un obiect ggplot.

library(ggplot2)
library(gganimate)
library(sf)

tree_coords =
 list(
 matrix(
 c(-4, 0,
 -2.22, 2,
 -3.5, 2,
 -1.5, 4,
 -2.5, 4,
 -0.8, 6,
 -1.5, 6,
 0, 8,
 1.5, 6,
 0.8, 6,
 2.5, 4,
 1.5, 4,
 3.5, 2,
 2.22, 2,
 4, 0,
 -4, 0),
 ncol=2, byrow=T
 )
 )

tree = st_polygon(tree_coords)

gg_tree = ggplot() +
 geom_sf(aes(), data=tree)

gg_tree

Forma de pom de Crăciun realizată cu pachetele sf și Ggplot2 R.Forma de pom de Crăciun realizată cu pachetele sf și Ggplot2 R.

Bine, deci acum avem o formă de copac. Acum trebuie să facem un pic mai plăcut de Crăciun schimbând:

  • Culoarea folosind: fill = "forestgreen", color = "darkgreen"
  • Adăugarea portbagajului:
    geom_rect(aes(xmin = -0.75, xmax = 0.75, ymin = -2, ymax = 0), fill = "saddlebrown", color = "sienna4")
  • Adăugați o stea în partea de sus:
    geom_point(aes(x = 0, y = 8), color = "gold", shape = 8, size = 7, stroke = 3)
  • Scoateți axa cu: theme_void()
  • Setați chenarul: coord_sf(xlim = c(-6, 6), ylim = c(-4, 10))
  • Adăugați un mesaj de Crăciun:
    annotate("text", x = 0, y = 9.5, label = "Merry Christmas n From Jumping Rivers!", size = 6)

Acum arborele nostru arată astfel:

gg_tree = ggplot() +
 geom_sf(aes(), data=tree, fill = "forestgreen", color = "darkgreen") +
 geom_rect(aes(xmin = -0.75, xmax = 0.75, ymin = -2, ymax = 0), fill = "saddlebrown", color = "sienna4") +
 geom_point(aes(x = 0, y = 8), color = "gold", shape = 8, size = 7, stroke = 3) +
 theme_void() +
 coord_sf(xlim = c(-6, 6), ylim = c(-4, 10)) +
 annotate("text", x = 0, y = 9.5, label = "Merry Christmas n From Jumping Rivers!", size = 6)

gg_tree

Brad de Crăciun verde realizat cu pachetul Ggplot2 R.Brad de Crăciun verde realizat cu pachetul Ggplot2 R.

Apoi trebuie să folosim din nou {sf} pentru a face niște lumini pentru copac, apoi {gganimate} pentru a face luminile să clipească.

Plasarea punctelor în limitele copacului a fost o sarcină mai dificilă decât ne așteptam până când am căzut peste st_sample căruia îi putem trece un poligon și va crea câteva puncte eșantion în interiorul granițelor. De asemenea, creăm un vector pentru a colora punctele.

points = st_sample(tree, 75)
colours = sample(c("red", "yellow", "blue"), 75, replace = TRUE)

gg_tree = ggplot() +
 geom_sf(aes(), data=tree, fill = "forestgreen", color = "darkgreen") +
 geom_sf(aes(), data=points, color = colours) +
 geom_rect(aes(xmin = -0.75, xmax = 0.75, ymin = -2, ymax = 0), fill = "saddlebrown", color = "sienna4") +
 geom_point(aes(x = 0, y = 8), color = "gold", shape = 8, size = 7, stroke = 3) +
 theme_void() +
 coord_sf(xlim = c(-6, 6), ylim = c(-4, 10)) +
 annotate("text", x = 0, y = 9.5, label = "Merry Christmas n From Jumping Rivers!", size = 6)

gg_tree

Brad de Crăciun cu luminițe realizat cu pachetele sf și Ggplot2 R.Brad de Crăciun cu luminițe realizat cu pachetele sf și Ggplot2 R.

Acum îl putem anima pentru a face luminile să strălucească folosind transition_time
şi ease_aes:

gg_tree +
 transition_time(1:75) +
 ease_aes('linear')

GIF final pentru brad de Crăciun cu lumini strălucitoare.GIF final pentru brad de Crăciun cu lumini strălucitoare.

În cele din urmă, un Crăciun și un An Nou minunat din partea echipei Jumping Rivers!

Pentru actualizări și revizuiri ale acestui articol, consultați postarea inițială

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.