作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个正方形图(纵横比 1:1),我试图将其缩放为 mainPanel
的全宽。由于默认情况下 height
参数为 400px
,因此绘图在面板中间显示为 400x400 图像:
我了解到您可以将 plotOutput
的 height
参数更改为 "100%"
或 "auto"
让面板使用图像的自然尺寸。但是,plotOutput
然后尝试从 renderPlot
检索高度参数,而 renderPlot
本身从 plotOutput
获取其 height
值导致“Catch-22”场景和高度 0px
的绘图。
我想要做的是将renderPlot
(或plotOutput
)的height
值设置为等于
,但我不确定如何访问该值。到目前为止,这是我的代码:mainPanel
的宽度
library( shiny )
library( ggplot2 )
server <- function(input, output)
{
output$plot1 <- renderPlot({
X <- data.frame( x=rnorm(input$n), y=rnorm( input$n ) )
ggplot( X, aes(x=x, y=y) ) + geom_point() + coord_fixed()
}, height=400 # how to get this value to be mainPanel width?
)
}
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
sliderInput("n", "Number of Samples", min=10, max=1000, value=100) ),
mainPanel( plotOutput("plot1", height="auto") )
)
)
shinyApp(ui = ui, server = server)
有什么想法吗?
最佳答案
基于this post :
library( shiny )
library( ggplot2 )
server <- function(input, output)
{
output$plot1 <- renderPlot({
X <- data.frame( x=rnorm(10), y=rnorm( 10) )
ggplot( X, aes(x=x, y=y) ) + geom_point() + coord_fixed()
} ,
height=reactive(ifelse(!is.null(input$innerWidth),input$innerWidth*3/5,0))
)
}
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
tags$head(tags$script('$(document).on("shiny:connected", function(e) {
Shiny.onInputChange("innerWidth", window.innerWidth);
});
$(window).resize(function(e) {
Shiny.onInputChange("innerWidth", window.innerWidth);
});
')),
sliderInput("n", "Number of Samples", min=10, max=1000, value=100) ),
mainPanel( plotOutput("plot1"))
)
)
shinyApp(ui = ui, server = server)
关于R Shiny : How to get square plot to use full width of panel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40538365/
我是一名优秀的程序员,十分优秀!