Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

plotly overrules ggplot2's scale_fill_manual's labels

I have a sample data set containing a end of week date and a churn value, either be negative or positive. In ggplot2 I use the scale_fill_manual() on the sign of the value as group. This works perfectly fine showing the colors for positive versus negative values. Also the labels get rewritten according to the labels provided. However if I simply make it a plotly graph I lose my labels and they are set back to the -1, 1 factors instead. Does plotly not support this and if so is their another way to get this done

library(ggplot2)
library(plotly)

dt <- structure(list(date = structure(c(18651L, 18658L, 18665L, 18672L, 
18679L, 18686L, 18693L, 18700L, 18707L, 18714L), class = c("IDate", 
"Date")), churn = c(-3.27088948787062, -0.582518144525087, -0.125024925224327, 
-0.333746898263027, -0.685714285714286, -0.340165549862042, 0.0601176470588235, 
-0.119351608461635, -0.0132513279284316, -0.011201854099989)), row.names = c(NA, 
-10L), class = c("data.table", "data.frame"))

plot_ggplot <- ggplot(dt, aes(x = date, y = churn * 100)) +
  geom_bar(stat = "identity", aes(fill = factor(sign(churn)))) +
  scale_fill_manual(
    values = c("#4da63f", "#e84e62"),
    breaks = c("-1", "1"),
    labels = c("Growing base", "Declining base")
  ) +
  ylim(-75, 25) +
  labs(
    title = "Weekly churn rate",
    fill = "Legend"
  )
plot_ggplot

ggplot output image

plot_ggplotly <- ggplotly(plot_ggplot)

plot_ggplotly

plotly output image

like image 388
Merijn van Tilborg Avatar asked Oct 16 '25 20:10

Merijn van Tilborg


1 Answers

Does this do the trick?

dt$base = ifelse(sign(dt$churn)>0, "Growing base","Declining base")
plot_ggplot <- ggplot(dt, aes(x = date, y = churn * 100)) +
  geom_bar(stat = "identity", aes(fill = base)) +
  scale_fill_manual(
    values = c("#4da63f", "#e84e62"),
    ) +
  ylim(-75, 25) +
  labs(
    title = "Weekly churn rate",
    fill = "Legend"
  )
plot_ggplot
plot_ggplotly <- ggplotly(plot_ggplot)

enter image description here

edit: I just read the comment, I think it is what was suggested

like image 57
elielink Avatar answered Oct 18 '25 11:10

elielink



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!