После некоторых советов по тонкой настройке легенды на боковой панели моей flexdashboard. (Я в основном восстанавливаю функциональность Tableau с помощью R).
Как видите, мне удалось собрать что-то вместе, но мне действительно было бы интересно:
сопоставление цвета фона с боковой панелью
позиционирование лучше, так что вокруг него меньше "белого пространства" и он выровнен по левому краю
размер шрифта (и квадратов) немного больше, чем в настоящее время
появление.
Очень ценю любые советы, которые вы все могли бы дать.
Дополнительные бонусные баллы вы можете предложить любому руководству для достижения этой цели с помощью ggplotly (мой следующий шаг), чтобы легенда стала интерактивной с помощью щелчков).
---
title: "dash"
output: flexdashboard::flex_dashboard
runtime: shiny
---
```{r setup, include=FALSE}
library(tidyverse)
library(plotly)
data_set <- iris %>%
gather(key, value, -Species) %>%
group_by(Species, key) %>%
summarise(average_value = mean(value))
```
SideBar {.sidebar}
---
```{r}
# radio button
radioButtons("species_filter", "Species:", choices = c("All", levels(data_set$Species)), selected = "All")
# this function retrieves the legend out of the ggplot
g_legend <- function(a.gplot){
tmp <- ggplot_gtable(ggplot_build(a.gplot))
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
legend <- tmp$grobs[[leg]]
return(legend)}
# plot the extracted legend in the sidebar
renderPlot(gridExtra::grid.arrange(g_legend(plot())))
```
Column
-----------------------------------------------------------------------
### Chart A
```{r}
# stacked bar plot
plot <- reactive(
data_set %>%
{if (input$species_filter == "All") {.}
else {filter(., Species == input$species_filter)}} %>%
ggplot() +
aes(key, average_value, fill = Species) %>%
geom_bar(stat = "identity")
)
renderPlot(plot() + theme(legend.position="none"))
```