plotly / plotly.R

An interactive graphing library for R
https://plotly-r.com
Other
2.54k stars 622 forks source link

geom_GeomLabelRepel() to be implemented #1972

Open daianasparta opened 3 years ago

daianasparta commented 3 years ago

I have a graph, made with ggplot, with three labels, each for one variable, but when I try to make it dinamic by using the function ggplotly, I get a warning since the geom geom_label_repel is not implemented yet in plotly.

I copy the script of my graph and the warning I get:

# g1 <- tabla1 %>% ggplot()+
  geom_hline(yintercept = 0, color = "grey", alpha =0.7, size = 0.5) +
  geom_line(aes(Fecha, Cobros),
            size = 1, color = cols_arg) +
  geom_point(aes(Fecha, Cobros),
             size = 2, color = cols_arg) +
  geom_line(aes(Fecha, Pagos),
            size = 1, color = cols_arg2[1]) +
  geom_point(aes(Fecha, Pagos),
             size = 2, color = cols_arg2[1]) +
  geom_col(aes(Fecha, Balanza, fill = color_bza)) +
  scale_fill_manual(values = c("deficit" = cols_arg2[6],
                               "superavit" = cols_arg2[2])) +
  scale_x_date(limits = c(min(tabla1$Fecha),max(tabla1$Fecha)+months(6)),
               date_breaks = "1 months", 
               date_labels = "%b%y", 
               expand = c(0,10))+
  labs(title="xxx",subtitle = "...",x="",y="",
       caption="xxx")+
  theme_minimal() +
  ggrepel::geom_label_repel(data = filter(ungroup(tabla1), Fecha == max(Fecha)),
                            aes(Fecha, Cobros, label = "Cobros"),
                            nudge_x = 30,
                            na.rm = TRUE,
                            size=4,
                            segment.colour = "transparent",
                            color=cols_arg) +
  ggrepel::geom_label_repel(data = filter(ungroup(tabla1), Fecha == max(Fecha)),
                            aes(Fecha, Pagos, label = "Pagos"),
                            nudge_x = 30,
                            na.rm = TRUE,
                            size=4,
                            segment.colour = "transparent",
                            color=cols_arg2[1]) +
  ggrepel::geom_label_repel(data = filter(ungroup(tabla1), Fecha == max(Fecha)),
                            aes(Fecha, Balanza, label = "Balanza"),
                            nudge_x = 40,
                            na.rm = TRUE,
                            size=4,
                            segment.colour = "transparent",
                            color=cols_arg2[6])+
  theme(
    text = element_text(family = familia_fuente), 
    plot.title    = element_markdown(size = 10),
    plot.subtitle = element_markdown(size = 8),
    plot.caption  = element_markdown(size = 6),
    strip.text.y  = element_text(size = 8, face = "bold"),
    axis.text.x   = element_text(size = 6,angle=90),
    axis.text.y   = element_text(size = 8),
    panel.grid.minor.x = element_blank(),
    legend.position = "none",
    strip.placement = "outside")

g1 <- ggplotly(g1) %>%
   layout(hovermode = "x")
g1

THE WARNING MESSAGE: Warning messages: 1: In geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]) : geom_GeomLabelRepel() has yet to be implemented in plotly. If you'd like to see this geom implemented, Please open an issue with your example code at https://github.com/ropensci/plotly/issues 2: In geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]) : geom_GeomLabelRepel() has yet to be implemented in plotly. If you'd like to see this geom implemented, Please open an issue with your example code at https://github.com/ropensci/plotly/issues 3: In geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]) : geom_GeomLabelRepel() has yet to be implemented in plotly. If you'd like to see this geom implemented, Please open an issue with your example code at https://github.com/ropensci/plotly/issues

jkkishore85 commented 2 years ago

Hi,

I just had the same issue and I am presently using geom_text() with position_nudge(). Did you find any other function/option to avoid overlapping when using plotly ?

Thanks

tzvi909 commented 1 year ago

+1 for wanting this implemented too

pitercius commented 2 months ago

We would like to see this implemented too