Вы почти у цели. Вам просто нужно использовать порядок top_3$parent
в вашем categoryarray
вместо cost
, как показано ниже:
layout(yaxis = list(title = 'Cost'),
xaxis = list(title = 'Parent',
categoryorder = "array",
categoryarray = top_3$parent),
barmode = 'stack')
Итак, используя полный код печати:
plot_ly(sample[sample$parent %in% top_3$parent,],
x = ~parent, y = ~cost, type = 'bar', color = ~topic) %>%
layout(yaxis = list(title = 'Cost'),
xaxis = list(title = 'Parent',
categoryorder = "array",
categoryarray = top_3$parent),
barmode = 'stack') %>%
config(displayModeBar = FALSE)
Вы должны получить следующий участок: