R ggplot2和SHINK:如何使用图形大小缩放图例的大小?

R ggplot2和SHINK:如何使用图形大小缩放图例的大小?,r,ggplot2,shiny,R,Ggplot2,Shiny,在ggplot2中,单独指定元素的大小。当图形的大小更改时,元素(例如图例)不会更改。当输出ggplot2图形的大小随浏览器窗口的变化而变化时,这可能是一个问题。下面是一个虚拟闪亮应用程序的代码和两个不同浏览器窗口大小的输出图形。较小的数字是丑陋的,因为它的传说的一部分已经被切断 是否有一种方法可以直接在ggplot2中使用地物大小缩放图例大小,而无需将地物预先保存为闪亮应用程序的图像文件 library(shiny) library(ggplot2) ui <- fluidPage(

在ggplot2中,单独指定元素的大小。当图形的大小更改时,元素(例如图例)不会更改。当输出ggplot2图形的大小随浏览器窗口的变化而变化时,这可能是一个问题。下面是一个虚拟闪亮应用程序的代码和两个不同浏览器窗口大小的输出图形。较小的数字是丑陋的,因为它的传说的一部分已经被切断

是否有一种方法可以直接在ggplot2中使用地物大小缩放图例大小,而无需将地物预先保存为闪亮应用程序的图像文件

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)
库(闪亮)
图书馆(GG2)

ui这里有一种固定图例顶部的方法,这样它就不会从绘图区域的顶部跑掉。您只需将图例.对齐(0.5,1)
添加到ggplot
主题
。第一个值使图例的x位置居中。第二个值“顶部对齐”图例的y位置。(您可以通过将第一个值更改为0.5到1来右对齐图例,这将防止图例从图形的右边缘跑出(如果这是一个问题的话)。这并不能解决相对大小问题,但完整图例将始终可见并位于同一位置

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.98),
              legend.justification=c(0.5, 1))
      print(aaa)
    }
  )
}

服务器谢谢。这使得这个数字好得多。