Как преобразовать ggplot в plot_ly? - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь создать Shiny Dashboard, которая также содержит графики. Plotly - это такой замечательный пакет, который обеспечивает отличную визуализацию и интерактивность для пользователей.

Я знаю, что лучший способ конвертировать ggplot в plotly - использовать функцию ggplotly (). Но когда я использую ggplotly, я сталкиваюсь с проблемами размера и внешнего вида графиков на панели инструментов. Я задавал вопрос по этому вопросу раньше ( ggplotly не работает должным образом, когда число граней больше ), а также я попытался сообщество сюжета преодолеть эту проблему, но я считаю, что это ошибка.

Наконец я решил, что мне нужно вручную преобразовать ggplot в plot_ly. Но при этом я сталкиваюсь с некоторыми препятствиями на дороге, а также я не очень уверен в том, правильно ли то, что я делаю, или это самый простой способ.

Код, который я использовал для создания ggplot:

Source_Data_dupli <-
data.frame(
key = c(1, 1, 1, 2, 2, 2, 3, 3, 3,4,4,5,5,6,7),
Product_Name = c(
"Table",
"Table",
"Chair",
"Table",
"Bed",
"Bed",
"Sofa",
"Chair",
"Sofa",
"Table",
"Bed",
"Chair",
"Table",
"Bed",
"Bed"
 ),
Product_desc = c("XX", "XXXX", "YY", "X", "Z", "ZZZ", "A", "Y", 
"A","Y","XX", "XXXX", "YY", "X", "Z"),
sd =c(0.1,0.3,0.4,0.5,0.6,0.7,0.7,0.8,0.5,0.9,0.5,0.2,0.3,0.4,0.5),
Cost = c(1, 2, 3, 4, 2, 3, 4, 5, 6, 7,6,8,9,12,34)
)

################ ggplot ####################

Source_Data %>% 
ggplot(aes(Product_Name, Cost, fill = Product_desc)) + 
geom_col(position = position_dodge2(width = .9, preserve = "single")) + 
geom_errorbar(aes(ymin=Cost-sd, ymax=Cost+sd), position = 
position_dodge2(width = .9, preserve = "single", padding = .5)) +
geom_text(aes(y=Cost+sd, label=Cost), position = position_dodge2(width=.9), 
vjust = -1) +
facet_wrap(~key, scales = "free_x", strip.position = "bottom") +
theme(strip.placement = "outside") + 
theme_bw()

Спасибо за помощь в Advance.

Дэвид

...