library(tidyverse)
library(magrittr)
library(insuranceData)
library(ggplot2)
# url='http://www.businessandeconomics.mq.edu.au/our_departments/Applied_Finance_and_Actuarial_Studies/acst_docs/glms_for_insurance_data/data/claimslong.csv'
# df <- read.csv(url)
data("ClaimsLong")
<- ClaimsLong
df
<- df %>% group_by(period) %>%
resumen summarise(pct_exposicion = n(),
frecuencia = sum(claim)/n())
<- ggplot(resumen,aes(x = period)) +
g2 geom_col(aes(y = pct_exposicion), fill="yellow",alpha=0.7) +
geom_line(aes(y=frecuencia * 500000 ), group = 1,color="red") +
geom_text(aes(y = frecuencia * 500000, label = paste(round(frecuencia*100),'%')),
vjust = 1.4, color = "red", size = 2) +
scale_y_continuous(sec.axis = sec_axis(~.* 500000, name = "Frecuencia [%]"))
g2
¿Dos ejes de ordenadas? (Parte 1/n)
gráficos
2021
Anoche me iba a ir a la cama tras escuchar un podcast, pero al final estuve entretenido debatiendo con Raúl Vaquerizo, Alberto González Almuiña y Jesús Lagos , sobre los gráficos con dos ejes de ordenadas. Aquí os dejo el tweet que puso Raúl.
Pues yendo al post que puso Raúl construía el siguiente gráfico.
Y bueno, no está mal, pero no me acaba de gustar, sobre todo porque al fin y al cabo todos sus períodos tienen el mismo valor
resumen#> # A tibble: 3 × 3
#> period pct_exposicion frecuencia
#> <int> <int> <dbl>
#> 1 1 40000 0.131
#> 2 2 40000 0.141
#> 3 3 40000 0.156
Ahora que lo pienso, casi que con la tabla valdría. Pero que pasaría si tenemos diferentes valores
set.seed(155)
%<>%
resumen mutate(pct_exposicion = pct_exposicion * 10*runif(3))
resumen#> # A tibble: 3 × 3
#> period pct_exposicion frecuencia
#> <int> <dbl> <dbl>
#> 1 1 315266. 0.131
#> 2 2 173523. 0.141
#> 3 3 304162. 0.156
ggplot(resumen,aes(x = period)) +
geom_col(aes(y = pct_exposicion), fill="yellow",alpha=0.7) +
geom_line(aes(y=frecuencia * 500000 , group=), group = 1,color="red") +
geom_text(aes(y = frecuencia * 500000, label = paste(round(frecuencia*100),'%')),
vjust = 1.4, color = "red", size = 2) +
scale_y_continuous(sec.axis = sec_axis(~.* 500000, name = "Frecuencia [%]"))
Me gusta aún menos este gráfico, yo propongo el siguiente en su lugar.
%>%
resumen ggplot(aes(x = period, y = frecuencia)) +
geom_point(aes(size=pct_exposicion)) +
geom_line() +
scale_size_continuous(range=c(4, 10)) +
scale_y_continuous(labels = scales::percent, limits = c(0,0.2))
Dónde representamos la variable frecuencia en el eje de ordenadas y con el tamaño de los puntos representamos la otra variable.