[英]Get data from mouse events in plot.ly or ggvis within r (not shiny)
[英]R: Print Plot.ly into RMarkdown HTML from within a function
我有一個文檔,該文檔加載一些文件,對其進行處理,然后將Plot.ly圖打印到該文檔中。 一切正常,除了嘗試在另一個函數或循環中調用繪圖函數。 這是我的代碼的結構:
```{r, results='asis', echo=TRUE}
my_plotly_function <- function(my_dataframe, ... ){
suppressPackageStartupMessages(library("plotly"))
my_plot <- plot_ly(data = my_dataframe, x = Column1, y = Column2, mode = "markers")
return(my_plot)
}
sample_file_list <- c("sample4_control.tsv", "sample4_sample5.tsv", "sample5_control.tsv")
# this works
my_plotly_function(read.delim(sample_file_list[1],header = TRUE,sep = '\t'))
# this doesn't work
for(i in seq_along(sample_file_list)){
my_plotly_function(read.delim(sample_file_list[i],header = TRUE,sep = '\t'))
}
# this does not work either
for(i in seq_along(sample_file_list)){
print(my_plotly_function(read.delim(sample_file_list[i],header = TRUE,sep = '\t')))
}
# this also does not work
for(i in seq_along(sample_file_list)){
my_plot <- my_plotly_function(read.delim(sample_file_list[i],header = TRUE,sep = '\t'))
print(my_plot)
}
```
有任何想法嗎? 我知道在函數或循環中使用某些圖時需要print
,但是Plot.ly似乎不像這樣工作,僅當Plot.ly對象直接返回到文檔中時才似乎工作。 到目前為止,我還沒有找到一種在不將其硬編碼到文檔中的情況下使用它的方法,這是不理想的。
我有同樣的問題。 在尋找解決方案並沒有找到解決方案之后,我想出了自己的解決方案。 有點hack,但是可以用:
1)通過<<-將函數中的plotly對象設置為全局變量。 我每個函數有一個以上的可繪制對象,因此返回它們不起作用(我嘗試過)。 2)展開循環(在我看來是可行的,因為只有5次迭代)3)調用全局繪圖var
有一個簡單的辦法解決這是與此相關的帖子 。
為了允許對plot_ly
進行函數調用,對帖子中給出的示例進行了少許更改,
library(plotly)
plot_plotly <- function(x) plot_ly(x=x)
l <- htmltools::tagList()
for (i in 1:3) {
l[[i]] <- plot_plotly(rnorm(10))
}
l
關鍵是使用htmltools::tagList
並將繪圖圖保存到此列表中,然后進行打印。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.