У меня есть следующие данные:
df <- data.frame(numbers = rep(1:3, 30),
letter = sample(c("A", "B", "C", "D"), 90, replace = TRUE),
status = sample(c("good", "bad", "ugly"), 90, replace = TRUE))
Я пытаюсь скопировать этот график ggplot2, но сделать его интерактивным:
ggplot(df, aes(letter, fill = status)) + geom_bar() + facet_wrap(.~numbers)
Если я использую ggplotly
, то я могу выбрать и отменить выбор переменных, но столбцы не перенастраиваются, поэтому я получаю что-то похожее на это:
Так что моя идея заключалась в том, чтобыприведите данные, затем создайте отдельные сюжетные графики и используйте подплот:
df_group <- df %>% group_by(numbers, letter, status) %>% tally()
df_group_cast <- dcast(df_group, numbers + letter ~ status)
p1 <- df_group_cast %>%
filter(numbers == 1) %>%
plot_ly(x = ~letter, y = ~good, type = 'bar', name = 'good') %>%
add_trace(y = ~bad, name = 'bad') %>%
add_trace(y = ~ugly, name = 'ugly') %>%
layout(yaxis = list(title = 'Count'), barmode = 'stack')
p2 <- df_group_cast %>%
filter(numbers == 2) %>%
plot_ly(x = ~letter, y = ~good, type = 'bar', name = 'good') %>%
add_trace(y = ~bad, name = 'bad') %>%
add_trace(y = ~ugly, name = 'ugly') %>%
layout(yaxis = list(title = 'Count'), barmode = 'stack')
p3 <- df_group_cast %>%
filter(numbers == 3) %>%
plot_ly(x = ~letter, y = ~good, type = 'bar', name = 'good') %>%
add_trace(y = ~bad, name = 'bad') %>%
add_trace(y = ~ugly, name = 'ugly') %>%
layout(yaxis = list(title = 'Count'), barmode = 'stack')
subplot(p1, p2, p3)
Это интерактивно, но также выглядит плохо.Я хотел бы, чтобы у них была общая шкала, одна легенда и заголовки для каждой группы чисел.
Возможно ли это?
(я пытаюсь встроить интерактивный график, подобный этому, в слайд-сифи, если есть лучшие библиотеки, я открыт для их использования. Пока что rCharts подвела меня, поэтому я пытаюсь заговорить)