Basic Waterfall Chart
library(plotly)x=list("Sales","Consulting","Net revenue","Purchases","Other expenses","Profit before tax")measure=c("relative","relative","total","relative","relative","total")text=c("+60","+80","","-40","-20","Total")y=c(60,80,0,-40,-20,0)data=data.frame(x=factor(x,levels=x),measure,text,y)fig<-plot_ly(data,name="20",type="waterfall",measure=~measure,x=~x,textposition="outside",y=~y,text=~text,connector=list(line=list(color="rgb(63, 63, 63)")))fig<-fig%>%layout(title="Profit and loss statement 2018",xaxis=list(title=""),yaxis=list(title=""),autosize=TRUE,showlegend=TRUE)figSetting Marker Size and Color
This example uses decreasing, increasing, and total attributes to customize the bars.
library(plotly)y=c(375,128,78,0,-327,-78,0,32,89,0,-45,0)x=c("Sales","Consulting","Maintenance","Net revenue","Purchases","Material expenses","Operating profit","Investment income","Financial income","Profit before tax","Income tax (15%)","Profit after tax")measure=c("relative","relative","relative","total","relative","relative","total","relative","relative","total","relative","total")data=data.frame(x=factor(x,levels=x),y,measure)fig<-plot_ly(data,x=~x,y=~y,measure=~measure,type="waterfall",base=300,decreasing=list(marker=list(color="Maroon",line=list(color="red",width=2))),increasing=(marker=list(color="Teal")),totals=list(marker=list(color="deep sky blue",line=list(color='blue',width=3))))fig<-fig%>%layout(title="Profit and loss statement",xaxis=list(title="",tickfont="16",ticks="outside"),yaxis=list(title=""),waterfallgap="0.3")figlibrary(plotly)x=c(375,128,78,27,0,-327,-12,-78,-12,0,32,89,0,-45,0)y=c("Sales","Consulting","Maintenance","Other revenue","Net revenue","Purchases","Material expenses","Personnel expenses","Other expenses","Operating profit","Investment income","Financial income","Profit before tax","Income tax (15%)","Profit after tax")measure=c("relative","relative","relative","relative","total","relative","relative","relative","relative","total","relative","relative","total","relative","total")data=data.frame(x,y=factor(y,levels=y),measure)fig<-plot_ly(data,x=~x,y=~y,measure=~measure,type="waterfall",name="2018",orientation="h",connector=list(mode="between",line=list(width=4,color="rgb(0, 0, 0)",dash=0)))fig<-fig%>%layout(title="Profit and loss statement 2018<br>waterfall chart displaying positive and negative",xaxis=list(title="",tickfont="16",ticks="outside"),yaxis=list(title="",type="category",autorange="reversed"),xaxis=list(title="",type="linear"),margin=c(l=150),showlegend=TRUE)figWhat About Dash?
Dash for R is an open-source framework for building analytical applications, with no Javascript required, and it is tightly integrated with the Plotly graphing library.
Learn about how to install Dash for R at https://dashr.plot.ly/installation.
Everywhere in this page that you see fig, you can display the same figure in a Dash for R application by passing it to the figure argument of the Graph component from the built-in dashCoreComponents package like this:
library(plotly)fig<-plot_ly()# fig <- fig %>% add_trace( ... )# fig <- fig %>% layout( ... ) library(dash)library(dashCoreComponents)library(dashHtmlComponents)app<-Dash$new()app$layout(htmlDiv(list(dccGraph(figure=fig))))app$run_server(debug=TRUE,dev_tools_hot_reload=FALSE)