Как мне остановить, чтобы annotation_custom делала каждую графическую карту с размером окна или, по крайней мере, делала их квадратными? - PullRequest
0 голосов
/ 27 марта 2020

Я работал над блестящим приложением, и я не могу понять, как обеспечить, чтобы размер окна не вызывал изменения в остальной части программы, что вызывает очевидные ошибки, как вы можете видеть здесь : https://imgur.com/a/bwdkdow. По крайней мере, я бы хотел, чтобы он был квадратным, и было бы лучше, если бы был способ гарантировать, что он просто имел фиксированный размер, но при этом мог бы работать на мониторах разных размеров функционально.

код:

 output$graph <- renderPlot({
    req(input$album_link)
    album <- get_album(str_split_fixed(input$album_link, "\\/", 5)[[5]])
    track_names <- album[["tracks"]][["items"]][["name"]]
    track_length <- album[["tracks"]][["items"]][["duration_ms"]]
    max_track <- max(track_length)
    track_length <- max_track -track_length
    album_df <- data.frame("track_length" = track_length, "track_names" = track_names)
    album_cover <- image_read(album[["images"]][["url"]][1])

    ggplot(data=album_df, aes(x=factor(track_names, track_names), y=-1 * track_length)) +
       ggtitle("Songs vs length")+
       annotation_custom(rasterGrob(album_cover, 
                                    width = unit(1,"npc"), 
                                    height = unit(1,"npc")), 
                         -Inf, Inf, -Inf, Inf)+
       geom_bar(stat="identity", position = "identity", color = 'NA', alpha = 0.9, width = 1, fill = 'white') +
       scale_y_continuous(expand = c(0, 0), limits = c(-1 * max_track, 0)) +
       scale_x_discrete(expand = c(0, 0)) +
       theme(axis.title.x=element_blank(), 
             axis.title.y=element_blank(),
             axis.text.x=element_blank(),
             axis.ticks.x=element_blank()
       ) + 
       coord_flip()



...