In ggplot2 wird die Größe der Elemente separat angegeben. Wenn sich die Größe der Figur ändert, ändern sich die Elemente, zum Beispiel die Legende, nicht. Dies könnte ein Problem in Shiny sein, wenn sich die Größe der Ausgabe von ggplot2 Figuren mit dem Browserfenster ändert. Unten ist der Code einer Dummy-Shiny-App und zwei Ausgabezahlen bei unterschiedlicher Browserfenstergröße. Die kleinere Figur ist hässlich, da ein Teil ihrer Legende abgeschnitten wurde.ggplot2 und Shiny: Wie skaliert man die Größe der Legende mit der Figurgröße?
Gibt es eine Methode, um die Legendengröße mit der Zahlengröße direkt in ggplot2 zu skalieren, ohne die Figur als Bilddatei für Shiny-Apps zu speichern?
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)
Die Figur in einem größeren Browser-Fenster sieht gut aus:
Aber in kleinen Browser-Fenster, das obere Ende der Legende nicht angezeigt wird:
Dank. Dies macht die Figur viel besser. –