In ggplot2 le dimensioni degli elementi sono specificate separatamente. Quando cambia la dimensione della figura, gli elementi, ad esempio la legenda, non cambiano. Questo potrebbe essere un problema in Shiny quando la dimensione dell'output di figure ggplot2 cambia con la finestra del browser. Di seguito è riportato il codice di un'app fittizia Shiny e due figure di output con dimensioni diverse della finestra del browser. La figura più piccola è brutta in quanto parte della sua leggenda è stata tagliata.ggplot2 e Shiny: come ridimensionare la dimensione della legenda con la dimensione della figura?
Esiste un metodo per ridimensionare la dimensione della legenda con la dimensione della figura direttamente in ggplot2 senza pre-salvare la figura come file immagine per le app lucide?
library(shiny)
library(ggplot2)
ui <- fluidPage(
br(), br(), br(),
plotOutput("test", height = "auto")
)
server <- function(input, output, session) {
output$test <- renderPlot(
height = function() {
0.8 * session$clientData$output_test_width
},
expr = {
aaa <- ggplot(mtcars, aes(wt, mpg, color = cyl)) +
geom_point() +
theme(legend.position = c(0.9, 0.9))
print(aaa)
}
)
}
shinyApp(ui, server)
La figura in una finestra del browser più grande sembra buono:
Ma nella piccola finestra del browser, la parte superiore della leggenda non si presenta:
Grazie. Questo rende la figura molto meglio. –