【发布时间】:2017-05-18 12:53:40
【问题描述】:
我想在独立窗口中显示一个绘图对象,其行为类似于使用基本 R plot() 函数弹出的窗口。
使用 plotly 网站上的一个基本示例:
library(ggplot2)
library(plotly)
d <- diamonds[sample(nrow(diamonds), 1000), ]
p <- ggplot(data = d, aes(x = carat, y = price)) +
geom_point(aes(text = paste("Clarity:", clarity))) +
geom_smooth(aes(colour = cut, fill = cut)) + facet_wrap(~ cut)
p2 <- ggplotly(p)
p2 对象是一个htmlwidget 对象,我可以使用sizingPolicy 元素来控制它的显示,如here 所述。但是,我找不到任何可以让我将查看器/浏览器设置为当前浏览器(作为新选项卡)或 RStudio 之外的东西的任何东西。
理想情况下,我希望避免 R 包之外的应用程序从 R 中启动单独的窗口。但是,我也很乐意弄清楚如何精细控制浏览器输出以将 p2 显示为新窗口在展台或应用模式下(有关展台/应用模式的一些示例,请参阅this question 的答案)。
编辑:虽然我在讨论一些我能找到的选项时提到了 RStudio,但我说的是从简单的控制台使用 R。也就是说,粒度显示选项应该希望独立于用户界面。
【问题讨论】:
-
您是在谈论 R-Studio 中的用法吗?似乎是,但
plot不会在 R-Studio 中打开新窗口。除非有一个我不知道的选项(可能)。为什么在浏览器中显示htmlwidget与您要求的不一样? -
@MikeWise 这将在 R-Studio 之外使用。在浏览器中显示就足够了,如果我可以对该显示进行一些控制——在信息亭或应用程序模式下打开一个新页面。将另一个选项卡添加到我可能打开的 20 个选项卡并将浏览器移动到当前虚拟工作区的默认行为并不是特别方便。
-
嗯,您可以尝试将另一个扩展名附加到您的文件(就像他们在您的
htmlwidget链接中forceNetwork下的.svg所做的那样),将该扩展名注册到您没有的另一个浏览器采用。也许这会让你得到你想要的? -
@MikeWise 我觉得这有点过头了,但看起来
forceNetwork中的.svg处理是在JS 中为一个新的小部件定义的。就我而言,我假设所有 JS 都将由 plotly.js 库处理,尽管也许有一种方法可以添加新方法。无论哪种方式,都值得研究更多,谢谢。我还需要弄清楚实际上是什么在调用打开浏览器选项卡,也许看看那里是否有任何可用的选项。
标签: r plotly htmlwidgets