如何有条件地更改R'中图表的纵横比;什么是闪亮的包裹?

如何有条件地更改R'中图表的纵横比;什么是闪亮的包裹?,r,shiny,R,Shiny,只是在玩,已经爱上它了。但是,如何根据绘制的图表,使反应绘图/绘图输出组合中的图表具有不同的大小 在第一个示例中,我选择了“收益率曲线”分析,并获得了我想要的纵横比: 但当我选择另一个分析时,在这个例子中是一个热图,它现在与扭曲它的“产量曲线”图表大小相同(单元格应该是正方形,而不是矩形) 如何根据已选择的图表更改图表大小?我尝试过将height参数设置为NA、NULL或“”,但它不喜欢这些 单独使用,但在同一个应用程序中,如何在侧边栏面板顶部的selectInput和textInputs之

只是在玩,已经爱上它了。但是,如何根据绘制的图表,使反应绘图/绘图输出组合中的图表具有不同的大小

在第一个示例中,我选择了“收益率曲线”分析,并获得了我想要的纵横比:

但当我选择另一个分析时,在这个例子中是一个热图,它现在与扭曲它的“产量曲线”图表大小相同(单元格应该是正方形,而不是矩形)

如何根据已选择的图表更改图表大小?我尝试过将height参数设置为NA、NULL或“”,但它不喜欢这些

单独使用,但在同一个应用程序中,如何在侧边栏面板顶部的selectInput和textInputs之间获得一些空白?我试过h4(“”),但不起作用

这是我的ui.R:

library(shiny)

shinyUI(pageWithSidebar(
    headerPanel(h1("SAGB Relative Value Tool")),
    sidebarPanel(
        h4("Choose analysis:"),
        selectInput("analysis1", "", 
            choices = c("Yield curve", "Optical asset swap spreads", 
                        "Cheap dear box", "Cheap dear charts", "Switch signaliser", 
                        "Barbells")),
        h4(" "),
        h4("Yield override:"),
        lapply(bondNames, function(x)
            textInput(paste(x, "bond"), x, last(sagb$sagb)[x]))
    ),
    mainPanel(
        h3(textOutput("AnalysisHeader")),
        plotOutput("AnalysisOutput", height = "10in"))
))
这是我的服务器

library(shiny)

shinyServer(function(input, output) {

    output$AnalysisHeader  <- reactiveText(function() {
        input$analysis1
    })


    output$AnalysisOutput <- reactivePlot(function() {
        switch(input$analysis1,
            "Yield curve" = wo(whichOut = 1),
            "Optical asset swap spreads" = wo(whichOut = 2),
            "Cheap dear box" = wo(whichOut = 3),
            "Cheap dear charts" = wo(whichOut = 4),
            "Switch signaliser" = wo(whichOut = 5),
            "Barbells" = wo(whichOut = 6)
        )

    })


})
库(闪亮)
shinyServer(功能(输入、输出){
输出$AnalysisHeader(有时这样做是个好主意(与我自己交谈,参见我对OP的评论)

然而,到目前为止,我还没能设法去上班(使用
height=“15in”

编辑:它现在正在工作,
高度必须是数字,可选的
units=“px”
res
当然可以将
单位
转换为像素

编辑2:别忘了更新Shiny[到最新版本],它修复了我遇到的一些错误

编辑3:以下是动态更改高度的示例:

getVarHeight <- function() {
    return(getNumberOfPlots() * 400)
}
output$out <- reactivePlot(doPlots, height=getVarHeight)

bondNames是程序中的一个全局列表变量,它调用runApp(),其中包含南非政府债券(“SAGB”)市场中12种活跃债券的名称。此处,它用于创建侧栏收益率覆盖输入(虽然有点草率——我刚刚发现了NumericiInput,我应该使用for循环而不是lappy,并且我的粘贴忽略了sep=”“参数)。无论如何与问题无关。例如,wo()和sagb$sagb数据结构也是包含代码的一部分。我支持这个问题(以防来自Rstudio的人想知道有多少人对此功能感兴趣!),但我不能静态设置高度,因为根据动态用户界面,绘图的数量会有所不同……谢谢Kevin-我确实做了RTFM,并看到了这一点;)但是我应该在plotOutput函数中添加什么,它的默认高度为400px。我相信您也可以将
height=“auto”
传递给
plotOutput
函数,这应该使plotOutput使用其内容的“自然”高度。(确保不要使用
height=“auto”)
对于同时进行的
reactivePlot
plotOutput
来说:每个都将根据另一个来确定高度,我猜最终的高度是0px。)
Error in switch(units, `in` = res, cm = res/2.54, mm = res/25.4, px = 1) *  : 
  non-numeric argument to binary operator
getVarHeight <- function() {
    return(getNumberOfPlots() * 400)
}
output$out <- reactivePlot(doPlots, height=getVarHeight)
plotOutput(outputId = "plot_rain", height="100%"))