在RStudioshiny的情节的规模和大小

相关,但是一般只讨论分配的绘图空间,而不是如何直接设置绘图的图像大小, 然后将其缩放以填充所需的空间

  • shiny的图表空间分配

我正在创build一个shiny的Web应用程序,并希望设置的大小的情节规模。 我的意思是我正在寻找一种方法来为我的情节设置一个有限的高度/宽度, 然后将设置大小的图像缩放到mainPanel( plotOutput ())区域。

以此作为示例/ shiny之外的类似情况。

 x <- 1:10 y <- x^2 png("~/Desktop/small.png", width = 600, height = 400) plot(x, y) dev.off() png("~/Desktop/big.png", width = 1200, height = 800) plot(x, y) dev.off() 

我无法将图像上传到SO并设置大小,因此我将包含每个使用以下html的浏览器截图:

 <img src="file:///home/jwhendy/Desktop/file.png" width = "800px" /> 

这是我的1600 x 900像素笔记本电脑全宽屏幕截图。

小图片

更大的图片

我想控制图像本身的大小,因为当使用像colour = varsize = var这样的选项时, ggplot2图例非常小。 请注意阅读更大图片的轴标签的难度。 我意识到我可能会陷入由于像素有限而不能很好地缩放图像的情况,但是我认为在遇到这种情况之前,我至less还有一些空间。

有什么build议么? 到目前为止,我尝试过玩下面的游戏,但没有运气:

ui.R

 shinyUI(pageWithSidebar( headerPanel("Title"), sidebarPanel(), mainPanel( plotOutput(outputId = "main_plot", width = "100%")) )) 

server.R

 shinyServer(function(input, output) { x <- 1:10 y <- x^2 output$main_plot <- renderPlot({ plot(x, y) }, height = 400, width = 600 ) } ) 

看来server.R指定的height / width选项会覆盖我在server.RplotOutput部分中设置的任何ui.R

有没有一种方法来保持小图的大小,以保持可读性,同时仍然填充所需的mainPanel区域?

不知道这是否完全给你你想要的东西,但这是对我有用的东西。

Server.R指定的选项已经生效。 (我只是绘制了两张不同大小的图。)我也采取了@ Manetheran的build议,并将cex和cex.axis作为参数。 他们似乎在工作。

下面是完整的应用程序的代码,再加上一个屏幕截图。

 ###UI.R shinyUI(pageWithSidebar( headerPanel("Title"), sidebarPanel( sliderInput(inputId = "opt.cex", label = "Point Size (cex)", min = 0, max = 2, step = 0.25, value = 1), sliderInput(inputId = "opt.cexaxis", label = "Axis Text Size (cex.axis)", min = 0, max = 2, step = 0.25, value = 1) ), mainPanel( plotOutput(outputId = "main_plot", width = "100%"), plotOutput(outputId = "main_plot2", width = "100%") ) )) ###Server.R shinyServer(function(input, output) { x <- 1:10 y <- x^2 output$main_plot <- renderPlot({ plot(x, y)}, height = 200, width = 300) output$main_plot2 <- renderPlot({ plot(x, y, cex=input$opt.cex, cex.lab=input$opt.cexaxis) }, height = 400, width = 600 ) } ) 

在这里输入图像说明

更新re。 UI.R的Width = 100%选项

是的,就我而言,这绝对是有所作为的。 在下面的两行中,new_main_plot和new_main_plot2是相同的,但是它们的大小不同。 所以width选项会生效。

  mainPanel( plotOutput(outputId = "new_main_plot", width = "100%"), plotOutput(outputId = "new_main_plot2", width = "25%") ) 

希望有所帮助。

@ Ram的答案很适合base绘图工具。

只是为了扩大其他路人,用ggplot做到这一点:

 p <- ggplot(data, aes(x = x, y = y)) + geom_point() p <- p + theme(axis.text = element_text(size = 20)) # tweak size = n until content print(p) 

至less有这样的效果,取决于你想要什么。 看到这个问题的基本思路,但请参考当前的ggplot2 0.9.3文档设置文本选项 – 您可以指定轴文本,图例文本,facet_grid条文本等。

自上一个SO问题以来,规范已从opts([option] = theme_text(size = n))更改为theme([option] = element_text(size = n)) 。 它可能会再次改变…所以只需findggplot2的当前testing/主题/选项页面。


我在@ Ram的跟进中进一步玩了一下,并且认为我明白了ui.Rserver.R如何交互设置不同的选项并查看Chromium中的Inspect element

ui.R设置可以填充的可用绘图区域,server.R定义绘图大小。

  • ui.R: width = 100%, server.R :没有选项设置

在这里输入图像说明

  • ui.R: width = 100%, server.R :width = 800,height = 600

在这里输入图像说明

  • ui.R: width = 50%, server.R :width = 800,height = 600

在这里输入图像说明

  • ui.R: width = 200%, server.R :width = 800,height = 600

在这里输入图像说明

为了最终回答这个问题,最后一个是我需要看到的。 如果您复制设置,您将看到绘图区域<div>确实是屏幕宽度的200%,并在浏览器中创build了一个水平滚动条…但图像仍处于固定大小。

但是,您可以生成大于绘图区域的图像(以像素为单位),然后通过ui.R将其缩小并指定width = n %选项。

所以…我不能以像素为单位创build较小的图像(相对于整体graphics创build更大的文本大小),然后使其变大以获得更大的文本。 其中一个的确需要创build一个绘图大小(或更大)的绘图区域,并通过plot(或ggplot)命令本身来缩放文本以使其满意。

一个也不能指定,至less在目前,在server.R宽度%,大概是因为它将高/宽选项传递给png()命令来生成图像。 你会得到一个错误,试图做到这一点(但它是值得一试)。

我不同意,指定文字大小选项是比我所寻找的更容易的路线,但至less我有一些工作。 我用pdf("file.pdf", width = 8, height = 6)为LaTeX文档一直做“作弊”的方式,创build我的情节,然后将其缩放,但是我想要将它包含在.tex文件中时。 在我看来,比每个情节的theme(axis.text = element_text(size = x))要简单得多。

Interesting Posts