Using the code below, I have a stacked bar chart as shown.
myDF <- structure(list(Group = structure(1:3, .Label = c("2017-04-02",
"2017-04-09", "2017-04-16"), class = "factor"), Passive = c(4,
1, 0), Promoter = c(12, 1, 4), Detractors = c(0, 0, 0)), .Names = c("Group",
"Passive", "Promoter", "Detractors"), row.names = c(NA, -3L), class = "data.frame")
x <- list(
title = ""
)
y <- list(
title = "Count"
)
p <- plot_ly(myDF, x = ~Group)
if ("Detractors" %in% colnames(myDF[-1])){
p <- add_trace(p, y = ~`Detractors`, name = 'Detractors', type = 'bar',
marker = list(color = '#D52728')) #red
}
if ("Passive" %in% colnames(myDF[-1])){
p <- add_trace(p, y = ~`Passive`, name = 'Passive', type = 'bar',
marker = list(color = '#1F78B4')) #orange
}
if ("Promoter" %in% colnames(myDF[-1])){
p <- add_trace(p, y = ~`Promoter`, name = 'Promoter', type = 'bar',
marker = list(color = '#2BA02D')) #green
}
p <- layout(p, xaxis = x, yaxis = y, barmode = 'stack', legend = list(orientation = 'h'), showlegend=T)
p
I want to show the Net Promoter Scores on top of each bar. The formula I use for calculating the NPS is:
(Number of Promoters — Number of Detractors) / (Number of Respondents) x 100
.
So for the first bar it would be ((12 - 0)/16) * 100 = 75
. I want to show NPS: 75
on top of the first bar. Similarly for the second and third bar, the number on top will be (1-0)/2*100 = 50
and (4-0)/4*100 = 100
respectively. I will be getting more data for coming weeks, so there will be a bar for each week of data in the future. Is there a way to show this calculated value on top on the bars?