En
la siguiente entrada mostraremos algunos ejemplos de cómo usar la función gghighlight para resaltar alguna serie
en R. para el siguiente ejemplo usamos la base EuStockMarkets disponible en la
base de R. En primer lugar, obtenemos una base tipo long, donde cada columna de las variables la colocamos una debajo
de otra, mientras que el nombre de las variables la colocamos en una nueva
variable llamada stock. Adicionalmente, repetimos la secuencia de fechas.
library(tidyverse)
library(tidyr)
# Cargar los
datos EuStockMarkets
data("EuStockMarkets")
# Convertir los
datos a formato largo
eu_stocks_long <- EuStockMarkets |>
as.data.frame() |>
mutate(fecha = time(EuStockMarkets)) |>
pivot_longer(cols = -fecha, names_to = "stock", values_to = "value")
eu_stocks_long |> head()
## # A tibble: 6 x 3
## fecha stock value
## <dbl> <chr> <dbl>
## 1 1991. DAX 1629.
## 2 1991.
SMI 1678.
## 3 1991.
CAC 1773.
## 4 1991.
FTSE 2444.
## 5 1992.
DAX 1614.
## 6 1992.
SMI 1688.
Ahora
usamos ggplot para graficar las fechas. Note que ordenar la base en esta
secuencia permite usar la función group by de dplyr para realizar estimaciones
por serie como si fuera por variable.
ggplot(eu_stocks_long, aes(x = fecha, y = value, color = stock)) +
geom_line() +
labs(title = "Series de EuStockMarkets, datos diario
1991-1998",
x = "Fecha", y = "Precion (t)", color = "Acción") +
theme_classic() +
theme(legend.position = "top", legend.title = element_blank())
Resaltar series con
gghighlight
El
paquete gghighlight de R permite resaltar una variable basada en una
determinada condición. En este primer ejemplo solo resaltamos la serie “DAX”.
library(gghighlight)
ggplot(eu_stocks_long, aes(x = fecha, y = value, color = stock)) +
geom_line() +
labs(title = "Series de EuStockMarkets, datos diario
1991-1998",
x = "Fecha", y = "Precion (t)", color = "Acción") +
gghighlight(stock == "DAX") +
theme_classic() +
theme(legend.position = "top", legend.title = element_blank())
En
caso de querer resaltar dos series podemos usar el operador contenido en %in%. Por ejemplo: stock %in% c(“DAX”,“CAC”).
ggplot(eu_stocks_long, aes(x = fecha, y = value, color = stock)) +
geom_line() +
labs(title = "Series de EuStockMarkets, datos diario
1991-1998",
x = "Fecha", y = "Precion (t)", color = "Acción") +
gghighlight(stock %in% c("DAX","CAC")) +
theme_classic() +
theme(legend.position = "top", legend.title = element_blank())
Igual
podemos indicar mediante negación cuales series no quisiéramos aparezcan usando
el operador de negación del operador contenido en %!in%:
`%!in%` = Negate(`%in%`)
ggplot(eu_stocks_long, aes(x = fecha, y = value, color = stock)) +
geom_line() +
labs(title = "Series de EuStockMarkets, datos diario
1991-1998",
x = "Fecha", y = "Precion (t)", color = "Acción") +
gghighlight(stock %!in% c("DAX","CAC")) +
theme_classic() +
theme(legend.position = "top", legend.title = element_blank())
Además
del nombre, podemos resaltar series que cumplan determinada condición
económica.
ggplot(eu_stocks_long, aes(x = fecha, y = value, color = stock)) +
geom_line() +
labs(title = "Series de EuStockMarkets, datos diario
1991-1998",
x = "Fecha", y = "Precion (t)", color = "Acción") +
gghighlight(max(value) > 8000) +
theme_classic() +
theme(legend.position = "top", legend.title = element_blank())
Formato de las líneas no resaltadas
el
argumento use direct label evita que la etiqueta de las series resaltadas
aparezca al final del gráfico. Además, unhighlighted params permite modificar
las características de las series que no son resaltadas.
ggplot(eu_stocks_long, aes(x = fecha, y = value, color = stock)) +
geom_line(linewidth = 1.3, col = "darkred") +
labs(title = "Series de EuStockMarkets, datos diario
1991-1998",
x = "Fecha", y = "Precion (t)", color = "Acción") +
gghighlight(max(value) > 8000,
use_direct_label = FALSE,
unhighlighted_params
= list(linewidth = 0.5, colour = alpha("blue", 0.4))) +
theme_classic() +
theme(legend.position = "top", legend.title = element_blank())
Podemos segmentar el grágico para cada
una de las series identificadas.
ggplot(eu_stocks_long, aes(x = fecha, y = value, color
= stock)) +
geom_line(linewidth = 1.3) +
labs(title = "Series de EuStockMarkets, datos diario 1991-1998",
x = "Fecha", y = "Precion (t)", color = "Acción") +
gghighlight(stock %!in% c("DAX","CAC"),
use_direct_label = FALSE,
unhighlighted_params = list(linewidth = 0.5, colour = alpha("blue", 0.4))) +
theme_classic() +
theme(legend.position = "top", legend.title = element_blank()) +
facet_grid(~ stock)