R logos con HexSticker
Cuando hice el logo del blog no sabía que existía un paquete dedicado a esto de hacer logos hexagonales en R, así que lo diseñé con un programa gráfico al estilo “tradicional”.
El ecosistema de R está creciendo tan rápido que hoy día podemos encontrar librerías para TODO, incluso para pintar nuestro logo hexagonal sin salir del entorno del programa. Preparad vuestra imaginación que hoy vamos a hablar de la librería hexSticker con la que vamos a diseñar unos cuantos logos.
hexSticker
Se trata de un paquete que puedes instalar desde CRAN, y cuya web de desarrollo está en github https://github.com/GuangchuangYu/hexSticker. Para instalar el paquete:
# Instalar el paquete
install.packages("hexSticker")
Su uso principal es para hacer logos de nuevos paquetes, pero también lo puedes usar para lo que quieras relacionado con pintar hexágonos, que es lo que hace.
Básicamente crea un hexágono en el que puedes elegir los colores de fondo, el borde y algunos parámetros gráficos, además puedes insertar dentro unos complementos que son:
- una imagen externa (jpg, png, svg…), o un gráfico de ggplot que sitúa en el centro del hexágono
- un título o nombre del paquete que por defecto sitúa como texto en el centro
- un enlace web, por defecto situado en la parte baja derecha de la figura.
Para cada una de estas cosas nos deja unas opciones de personalización como desplazarlas un poco en x o y por el lienzo, modificar el tipo y tamaño de letra y los colores. Además tiene otros argumentos para limpiar la zona exterior del hexágono si se sale la imagen (white_around_sticker
) o añadir un reflejo luminoso al logo (spotlight
) que da un toque especial más profesional.
Lo mejor es ver cómo funciona sobre ejemplos. En este primer caso tenemos una pequeña imagen (png) de un globo con fondo transparente que queremos poner en el centro del sticker:
library(hexSticker)
#ruta relativa a la imagen de fondo que queremos en el logo
imgurl <- "images/globo2.png"
# creamos nuestro sicker
logo.1<-sticker(imgurl, #imagen de fondo
s_x=1, s_y=1, # posición imagen relativa 1=centro
s_width=0.6, s_height=0.5, #estirar la imagen ancho-largo
#opciones del título
package="GloboR", # titulo del logo
p_color = "black", #color de la fuente de titulo
p_size=15, # tamaño fuente del titulo
p_x = 0.7, p_y = 1.4, #posicion del titulo
#opciones de la url
url = "www.enrdados.net", # url
u_color = "white", # color fuente enlace
u_size = 6, # tamaño del fuente enlace
h_fill="salmon", h_color="black",h_size = 2, #color de relleno, borde hex y grosor de linea
#opciones generales
filename="globo1.png", # fichero de salida
white_around_sticker = T,# recorta el borde exterior del hex
spotlight=F) #añade una luz que ilumina parte del sticker
#dpi = 600)
logo.1
GloboRR
Esta vez partimos de un png transparente que metemos en un hexagono de color azul y añadimos un brillo en el sticker
library(hexSticker) # Create Hexagon Sticker in R
library(showtext) # Using Fonts More Easily in R Graphs
#Loading Google fonts (http://www.google.com/fonts)
font_add_google("Inconsolata", "incon")
logo.2<-sticker(
# Subplot (image)
subplot = "images/globo2.png", # nombre y ruta relativa de la imagen
s_y = 1, # Posición (y)
s_x = 1.1, # Posición (x)
s_width = 0.6, # ancho , escala 1=sin cammbios
s_height=0.6, # alto
# Font
package = "GloboR", # titulo
p_size = 15, # Fuente tamaño
p_y = 0.8, # Posición tit (y)
p_x=0.6, # Posición tit (x)
p_family = "incon", # Define fuente letra
# Spotlight
spotlight = TRUE, # pone el brillo o luz
l_y=0.8, # Posición de la luz (y)
l_x=0.7, # Posición de luz (x)
# Sticker colors
h_fill = "#5d8aa6", # Color del fondo
h_color = "#2A5773", # Color del borde
h_size=3, # ancho del borde
# Resolution
dpi=600, # Sets DPI
# Save
filename="logo3.png" # define el fichero destino
# donde almacena el sticker
)
logo.2
Stiker de enRdados
Aunque tengo el logo del blog hecho, he visto que el hexágono no me salió perfecto, vamos que está como estirado. Para arreglarlo voy a usar hexSticker
tomando el logo actual como fondo de uno nuevo generado con la librería.
#ruta relativa a la imagen de fondo del icono
imgurl <- "images/LogoenRdados.png"
logoenRdados<-sticker(imgurl, #imagen de fondo
s_x=1.01, s_y=0.95, # posicion imagen
s_width=1.1, s_height=1, #estirar la imagen ancho-largo
package="", # nombre del paquete
p_color = "black", #color de la fuente de paquete
p_size=10, # tamaño fuente del paquete
p_x = 1, p_y = 1,
url = "www.enrdados.net", # url
u_color = "white", # color fuente enlace
u_size = 5, # tamaño del fuente enlace
h_fill="#f9690e", h_color="firebrick4",h_size=3, #relleno y borde hex
filename="logo2.png", # fichero de salida
white_around_sticker = T,# recorta el borde exterior del hex
spotlight=F, #añade una luz que ilumina parte del sticker
dpi = 600) # higher dpi means higher resolution)
#añade una linea de hexagono nueva
#p.3 <- p.2 + geom_hexagon(size = 1, fill = NA, color = "black")
logoenRdados
Sticker con ggplot
Por ultimo vamos a hacer un logo nuevo usando una gráfica de ggplot, en este caso un mapa de España para el que usaré la librería mapSpain
de rOpenSpain, por cierto no dejes de ver esta web, están haciendo un trabajo tremendo para acceso a datos libres en España.
library(hexSticker)
library(ggplot2)
library(mapSpain) # de rOpenSpain
library(sf) # para capas
# cargamos una capa de españa con las comunidades autónomas
CCAA.sf <- esp_get_ccaa() # función de mapSpain
mapaESP<-ggplot(CCAA.sf) +
geom_sf(color = "black", fill = "lightgrey")+
theme_void() # quita ejes y escalas del mapa
# vemos el mapa generado:
mapaESP
# ahora creamos el sticker con este mapa imagen de ggplot
logo.mapaES <- sticker(mapaESP,
s_x=1, s_y=0.9, s_width=1.5, s_height=2,
package="EspañaRR ",
p_color = "black", #color de la fuente de paquete
p_size=10, # tamaño fuente del paquete
p_x = 1, p_y = 1.5,
url = "www.enrdados.net", # url
u_color = "white", # color fuente enlace
u_size = 4, # tamaño del fuente enlace
#hexagono:
h_fill="#478bca", h_color="black",h_size = 2, # relleno y borde hex
filename="mapa-sticker.png", # fichero de salida
white_around_sticker = T,# recorta el borde exterior del hex
spotlight=T,l_x=0.5,l_y=1.4)
logo.mapaES
Esto es todo, espero que con los ejemplos quede claro cómo usar HexSticker.
Adelante con R!