Я работаю над отчетом RMarkdown с элементами Shiny, использую ggplot2 и трансформирую его графики, используя ggplotly.В обычном отчете RMarkdown все работает отлично.ggplotly не позволяет поставить горизонтальную легенду внизу, но мне все же удалось это сделать, используя этот ответ .
Сюжет теперь выглядит великолепно
Код для этого графика
semiformal_savings_chart <- ggplot(semiformal_savings, aes(x = Country, y =
Percent, fill = Category)) +
geom_bar(stat = 'identity', width = 0.7) +
theme_tufte() +
scale_fill_brewer(palette = "Paired") +
theme(axis.title.y = element_blank()) +
theme(axis.title.x = element_blank()) +
ylim(0, 80) +
theme(legend.text = element_text(size = 12)) +
theme(axis.text.x = element_text(size = 12)) +
theme(axis.text.y = element_text(size = 12)) +
theme(plot.margin = margin(0.1, 0.1, 0.1, 0.1, "cm"))
ggplotly(semiformal_savings_chart) %>% config(displayModeBar = F) %>%
layout(legend = list(orientation = "h", x = 0.4, y = -0.2))
Когда я ставлюв формате Shiny я вынужден удалить последние две строки кода с помощью ggplotly, который отключает панель Plotly.Просто подключение к ggplot с pipe не работает, и я получаю сообщение об ошибке.
Ошибка: нет применимого метода для 'layout', примененного к объекту класса "c ('theme', 'gg')"
Реакционная способность работает отлично, но вShiny my, теперь у моего графика есть панель Plotly + легенда справа, что мне не нравится.
Код Shiny выглядит следующим образом
semiformal_savings_data <- reactive({
filter(semiformal_savings,
Country %in% input$Country)
selectInput(inputId = "Country", label = "Please select a
country/countries", choices = unique(semiformal_savings$Country),
selected = unique(semiformal_savings$Country), multiple = TRUE)
plotlyOutput("semiformalsavingsPlot")
output$semiformalsavingsPlot <- renderPlotly({
ggplot(semiformal_savings_data(), aes(x = Country, y = Percent, fill =
Category)) + geom_bar(stat = 'identity', width = 0.7) +
theme_tufte() +
scale_fill_brewer(palette = "Paired") +
theme(axis.title.y = element_blank()) +
theme(axis.title.x = element_blank()) +
ylim(0, 80) +
theme(legend.text = element_text(size = 12)) +
theme(axis.text.x = element_text(size = 12)) +
theme(axis.text.y = element_text(size = 12)) +
theme(plot.margin = margin(0.1, 0.1, 0.1, 0.1, "cm"))
})
Но эта часть сейчас отсутствует
%>% config(displayModeBar = F) %>% layout(legend = list(orientation = "h",
x = 0.4, y = -0.2))
Как прикрепить эту функциональность к моему почти идеальному сюжету?
Спасибо!