custom colors in R Plotly

DLo picture DLo · Feb 24, 2016 · Viewed 20.6k times · Source

I'm currently a beginner in Plotly and have a problem I can't seem to solve. I have my plotly stacked bar chart but I don't know how to color each individual category. I am currently using R.

This is my current stacked bar chart: enter image description here

My current code is:

p = plot_ly(x, x = day, y = count, type = "bar", group = status) %>% layout(barmode = "stack", showlegend = T)

I've tried using the "color = " parameter and also markers, but nothing correctly colors my graph.

Answer

mal picture mal · Feb 26, 2016

You need to specify a factor for the color parameters, and then a vector of colours for the colors parameter.

Here is a simple solution. Note the ordering required on the data frame before plotting.

require(dplyr)
require(plotly)

set.seed(42)

df <- data.frame(x = rep(LETTERS[1:5], 3), 
                 y = rexp(15, rate = 0.5),
                 z = c(rep("Adam", 5), rep("Arthur", 5), rep("Ford", 5)))
df <- arrange(df, desc(z))

plot_ly(df, 
        x = x, 
        y = y, 
        color = z, 
        colors = c("grey50", "blue", "red"), 
        type = "bar") %>% 
    layout(barmode = "stack")

The ordering on the data frame matters strangely. I would have thought plot_ly would use the order of the levels but it doesn't.

EDIT: This example uses plotly 3.x.x. If you use plotly 4.x.x or above, this code may not work as is. See here for more details: https://www.r-bloggers.com/upgrading-to-plotly-4-0-and-above/