Seguiremos utilizando los mismos paquetes que la parte anterior.
Code
# ejecutar estas líneas para poder instalar {datos}# install.packages("remotes")# remotes::install_github("cienciadedatos/datos")library(datos) # datoslibrary(highcharter) # gráficoslibrary(ggplot2) # más gráficos library(readr) # lectura de datoslibrary(dplyr) # manipulación de datoslibrary(tidyr) # más manipulación de datos
tourfrance <-read_csv(here::here("posts/2020-06-02-30diasdegraficos-parte-3/data/tour_france_state_8.txt"))hc21 <-hchart(tourfrance, "area", hcaes(distance, elevation), fillOpacity =0.25) %>%hc_title(text ="Tour de Francia 2017, Etapa 8: <i>Dole - Station des Rousses</i>") %>%hc_subtitle(text ="Ejemplo obtendido de la documentación de HighchartsJS") %>%hc_xAxis(labels =list(format ="{value} km"), title =list(text ="Distancia")) %>%hc_yAxis(labels =list(format ="{value} m"), title =list(text ="Elevación")) %>%hc_tooltip(headerFormat ="Distance: {point.x:.1f} km<br>",pointFormat ="{point.y} m a. s. l." )hc21
Code
df1 <-read_csv('"x","y", "text"27.98,255, "Arbois"45.5,611,"Montrond"63,651,"Mont-sur-Monnet"84,789,"Bonlieu"129.5,382,"Chassal"159,443,"Saint-Claude"')df2 <-read_csv('"x","y","text"101.44,1026,"Col de la Joux"138.5,748,"Côte de Viry"176.4,1202,"Montée de la Combe<br>de Laisia Les Molunes"')df3 <-read_csv('"x","y","text"96.2,783,"6.1 km climb<br>4.6% on avg."134.5,540,"7.6 km climb<br>5.2% on avg."172.2,925,"11.7 km climb<br>6.4% on avg."')df_to_annotations_labels <-function(df, xAxis =0, yAxis =0) {stopifnot(hasName(df, "x"))stopifnot(hasName(df, "y"))stopifnot(hasName(df, "text")) df %>%rowwise() %>%mutate(point =list(list(x = x, y = y, xAxis =0, yAxis =0))) %>%select(-x, -y) }df1_p <-df_to_annotations_labels(df1)df2_p <-df_to_annotations_labels(df2)df3_p <-df_to_annotations_labels(df3)hc21 %>%hc_annotations(list(labelOptions =list(backgroundColor ='rgba(255,255,255,0.5)', verticalAlign ="top", y =15),labels =list_parse(df1_p) ),list(labels =list_parse(df2_p) ),list(labelOptions =list(shape ="connector",align ="right",justify =FALSE,crop =TRUE,style =list(fontSize ="0.8em", textOutline ="1px white") ),labels =list_parse(df3_p) ) ) %>%hc_caption(text ="Este gráfico utiliza la función Anotaciones de Highcharts para colocar etiquetas en varios puntos de interés. Las etiquetas son <i>responsivas</i> y se ocultarán para evitar la superposición en pantallas pequeñas." )
library(ggplot2)p25 <-ggplot(datos::flores, aes(Largo.Sepalo, Especie)) +geom_violin()dflores <- datos::flores %>%distinct(Especie) %>%mutate(y =as.numeric(Especie))d25 <-as_tibble(layer_data(p25, 1)) %>%select(x, y, violinwidth, width, ndensity) %>%mutate_all(round, 3) %>%mutate(y =as.numeric(y)) %>%left_join(dflores, by ="y")d25 <- d25 %>%filter(row_number() %%2==0)hchart(d25, "arearange", hcaes(x, low = y - violinwidth*width -1, high = y + violinwidth*width -1, group = Especie)) %>%hc_yAxis(categories = dflores$Especie, type ="categorical", endOnTick =FALSE,startOnTick =FALSE,title =list(text ="Especie") ) %>%hc_xAxis(title =list(text ="Largo del Sépalo") ) %>%hc_tooltip(useHTML =TRUE,pointFormat ="<span style='color:{point.color};'>●</span> {series.name}: <b>{point.ndensity:,.4f}</b><br/>" )
Fin
Lamentablemente el tiempo (quizás la ganas!) dictaron a que no pudiese completar todos los días del challenge. ¿Fail? Para nada! Aprendí mucho de highcharts, volví a escribir en el blog <3 e hice post en español.