gpt4 book ai didi

R Shiny : How to get square plot to use full width of panel?

转载 作者:行者123 更新时间:2023-12-02 02:29:46 25 4
gpt4 key购买 nike

我有一个正方形图(纵横比 1:1),我试图将其缩放为 mainPanel 的全宽。由于默认情况下 height 参数为 400px,因此绘图在面板中间显示为 400x400 图像:

enter image description here

我了解到您可以将 plotOutputheight 参数更改为 "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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com