W ggplot2 wielkość elementów określa się osobno. Kiedy zmienia się rozmiar figury, elementy, na przykład legenda, nie zmieniają się. Może to stanowić problem w Shiny, gdy wielkość danych wyjściowych ggplot2 zmienia się wraz z oknem przeglądarki. Poniżej znajduje się kod manekinowej aplikacji Shiny i dwóch liczb wyjściowych w różnych rozmiarach okna przeglądarki. Mniejsza figurka jest brzydka, ponieważ część jej legendy została odcięta.ggplot2 i Shiny: jak skalować rozmiar legendy z rozmiarem rysunku?
Czy istnieje metoda skalowania rozmiaru legendy o wielkości figury bezpośrednio w ggplot2 bez wstępnego zapisywania rysunku w postaci pliku obrazu na błyszczące aplikacje?
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)
Postać w większym oknie przeglądarki wygląda dobrze:
Ale w małym oknie przeglądarki, górna część legendy nie pojawi się:
Dzięki. To sprawia, że liczba jest znacznie lepsza. –