13

只是和Shiny一起玩并且已经爱上了它。但是,如何根据绘制的图表使 reactivePlot / plotOutput 组合中的图表具有不同的大小?

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

在此处输入图像描述

但是当我选择另一个分析时,在这种情况下是热图,它现在与扭曲它的“收益率曲线”图表的大小相同(单元格应该是正方形,而不是矩形)。

在此处输入图像描述

如何根据选择的图表更改图表大小?我尝试将高度参数 = 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"))
))

这是我的 server.r

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)
        )

    })


})
4

1 回答 1

10

(有时对RTFM来说是个好主意(也自言自语,参见我对 OP 的评论)

reactivePlot(func, width = "auto", height = "auto", ...)

width    The width of the rendered plot, in pixels; or ’auto’ to use the offsetWidth of
         the HTML element that is bound to this plot. You can also pass in a function
         that returns the width in pixels or ’auto’; in the body of the function you may
         reference reactive values and functions.
*height* The height of the rendered plot, in pixels; or ’auto’ to use the offsetHeight
         of the HTML element that is bound to this plot. You can also pass in a function
         that returns the width in pixels or ’auto’; in the body of the function you may
         reference reactive values and functions.
...      Arguments to be passed through to png. These can be used to set the width,
         height, background color, etc.

但是,到目前为止,我无法设法使工作(与height="15in")...

Error in switch(units, `in` = res, cm = res/2.54, mm = res/25.4, px = 1) *  : 
  non-numeric argument to binary operator

编辑:它现在可以工作了,height必须是数字的,可选的units="px"res当然还有要转换units为像素的东西。

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

编辑 3:这是一个动态更改高度的示例:

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

您可以将片段与此屏幕截图相关联,其中getNumberOfPlots返回要绘制的图形数量。

编辑4:如果你想显示张图片,你也应该改变height'ui.R':这个值直接传递给CSS,默认值是400px。因此,如果您的图像更大,它们将重叠,并且只有 400px 可见...

plotOutput(outputId = "plot_rain", height="100%"))
于 2012-12-11T12:09:23.337 回答