我在R中有一个带有嵌套行的tibble,并且我为每行创建了一个ggplot对象。我想使用reactable的可扩展行功能来打印这些图形。
我认为有一个例子可以很好地解释这一点。为了简单起见,我将使用iris。首先,我们使用iris,按“物种”嵌套它,然后创建一个名为"plot“的列,其中包含ggplot对象:
library(dplyr)
library(reactable)
library(ggplot2)
df = iris %>%
as_tibble() %>%
nest_by(Species) %>%
mutate(plot = list(
ggplot(data, aes(x=Sepal.Length, y=Sepal.Width)) + geom_point() + ggtitle(Species)
))可以在我们的数据框上创建一个reactable对象,当您单击任何行时,它会显示出一个嵌套的reactable:
reactable(df %>% select(Species), details = function(index) {
reactable(df$data[[index]])
}
)但是……我不知道如何打印"plot“列。例如,这不起作用:
reactable(df %>% select(Species), details = function(index) {
print(df$plot[[index]])
}
)我尝试过像htmltools::img(df$plot[[index]])这样的超文本标记语言,但它们都不起作用。
有什么想法吗?谢谢!
发布于 2021-07-23 06:17:41
如果我们用ggplotly包装,那么它就可以工作了
library(plotly)
library(reactable)
library(ggplot2)
library(dplyr)
reactable(df %>%
select(Species), details = function(index) {
ggplotly(df$plot[[index]])
})-output

发布于 2021-07-29 02:48:08
实际上,我不需要plotly就解决了这个问题--您可以使用htmltools::plotTag。(谁知道呢?)看看这个:
reactable(df %>% select(Species), details = function(index) {
htmltools::plotTag(df$plot[[index]], alt="plots")
})https://stackoverflow.com/questions/68491572
复制相似问题