varias superponer poligono lineas hacer graficos graficas ggplot frecuencia como r shiny

superponer - ¿Cómo cambio condicionalmente la relación de aspecto de los gráficos en el paquete brillante de R?



superponer graficas en r ggplot (1)

Simplemente jugando con Shiny y amándolo ya. Pero, ¿cómo puedo obtener gráficos en la combinación reactivePlot / plotOutput para que sean de diferentes tamaños, dependiendo de qué gráfico se grafica?

En este primer ejemplo, he seleccionado el análisis de "Curva de rendimiento" y obtengo la relación de aspecto que deseo:

Pero cuando elijo otro análisis, en este caso un mapa de calor, ahora tiene el mismo tamaño que el gráfico "Curva de rendimiento" que lo distorsiona (las celdas deben ser cuadradas, no rectangulares).

¿Cómo puedo cambiar el tamaño del gráfico dependiendo de qué tabla se ha seleccionado? Intenté poner el parámetro height = NA, NULL o "", pero no me gusta ninguno.

Por separado, pero en la misma aplicación, ¿cómo puedo obtener algunos espacios en blanco entre la entrada de selección superior y las entradas de texto en el panel lateral de la barra? He intentado h4 ("") pero no funciona.

Aquí está mi 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")) ))

y aquí está mi servidor.

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


(a veces es una buena idea RTFM (hablar conmigo mismo, cf mi comentario a 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.

sin embargo, hasta ahora no he podido hacer que trabaje (con height="15in" ) ...

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

EDITAR : ahora está funcionando, la height tiene que ser numérica, con units="px" opcionales units="px" y res ciertamente algo para convertir units en píxeles.

EDIT 2 : y no te olvides de actualizar Shiny [a la última versión], soluciona algunos errores que enfrenté.

EDIT 3 : aquí hay un ejemplo donde la altura se cambia dinámicamente:

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

Puede relacionar el fragmento de getNumberOfPlots con esta captura de pantalla , donde getNumberOfPlots devuelve el número de gráfico a trazar.

EDIT 4 : si desea visualizar varias imágenes, también debe cambiar la height en ''ui.R'': este valor se transmite directamente a CSS, y el valor predeterminado es 400px . Entonces, si tus imágenes son más grandes, se superpondrán y solo estarán visibles 400px ...

plotOutput(outputId = "plot_rain", height="100%"))