I'm trying to produce in R a similar plotly plot as the one described in this website and produced using Python. It's a horizontal barplot which was created by stacking multiple subplot onto of each other.
The plot looks like:
I'm getting close but I can't fully manage to reproduce it. The way the plot is program is roughly by:
- making one barplot for each category wanted, with the proper title and text
- Stack all the plots with the
make_subplotfunction - remove unnecessary label and format properly the text.
The biggest problem I'm facing so far is the fact I'm not able to repeat the title of each individual subplots within the main plot.
Here is my code. Notice that there is a different title for each plot:
library(plotly)
# preparing bogus data
d <- data.frame(question = paste0("Question ", 1:10),
value = seq(20, 1, -2))
# setting up a list to store the plots
ls_p <- NULL
# Create one plot (subplot) for each categories in my data
for(i in 1:nrow(d)){
ls_p[[i]] <- plot_ly(d[i,], x=~value, y=~question) |>
add_bars(orientation='h') |> #
add_text(x=~value, y=~question, text=~value) |>
layout(title = list(text=d$question[i],
xanchor = "left",
align = "left"),
showlegend=F,
grid=list(showgrid=F),
xaxis=list(range=c(0,max(d$value)),
showticklabels =F),
yaxis=list(showticklabels = F)
)
}
# regroup all the subplots together
subplot(ls_p, nrows= nrow(d), shareX = T, which_layout = 1, titleX = F, titleY = F)
This code produces:
It is wrong a multiple ways:
- Only the title of the first plot is written, all subsequent plots lack there titles
- The title is not left align
- text (values) is centered to the end of the bars, not kept in the inside right section
- The first and last bar are thicker than the others.
It's there a way to produce this kind of graph in ploty-R or are we limited to plotly-python?



