簡體   English   中英

R highcharter從另存為html的圖中獲取數據

[英]R highcharter get data from plots saved as html

我在R中使用highcharter軟件包繪制數據,並將其另存為html,以保持交互功能。 在大多數情況下,我會繪制多個圖形,因此將它們作為畫布組合在一起。

require(highcharter)
hc_list <- lapply(list(sin,cos,tan,tanh),mapply,seq(1,5,by = 0.1)) %>% 
  lapply(function(x) highchart() %>% hc_add_series(x))
hc_grid <- hw_grid(hc_list,ncol = 2)

htmltools::browsable(hc_grid) # print
htmltools::save_html(hc_grid,"test_grid.html") # save

在此處輸入圖片說明

我想從過去保存為html的圖中提取數據,就像這些一樣。 通常,我會執行hc_list [[ 1 ]] $ x $ hc_opts $ series,但是當我將html導入R並嘗試執行相同操作時,會出現錯誤。 它不會做的工作。

> hc_imported <- htmltools::includeHTML("test_grid.html")
> hc_imported[[1]]$x$hc_opts$series
Error in hc_imported$x : $ operator is invalid for atomic vectors

如果我能夠寫一個像

get_my_data(my_imported_highcharter,3) # get data from 3rd plot

那將是最好的。 問候。

您可以使用以下代碼

require(highcharter)
hc_list <- lapply(list(sin,cos,tan,tanh),mapply,seq(1,5,by = 0.1)) %>% 
  lapply(function(x) highchart() %>% hc_add_series(x))
hc_grid <- hw_grid(hc_list,ncol = 2)

htmltools::browsable(hc_grid) # print
htmltools::save_html(hc_grid,"test_grid.html") # save

# hc_imported <- htmltools::includeHTML("test_grid.html")
# hc_imported[[1]]$x$hc_opts$series

library(jsonlite)
library(RCurl)
library(XML)

get_my_data<-function(my_imported_highcharter,n){
  webpage <- readLines(my_imported_highcharter)
  pagetree <- htmlTreeParse(webpage, error=function(...){})

  body <- pagetree$children$html$children$body 

  divbodyContent <- body$children$div$children[[n]]

  script<-divbodyContent$children[[2]]

  data<-as.character(script$children[[1]])[6]

  data<-fromJSON(data,simplifyVector = FALSE)

  data<-data$x$hc_opts$series[[1]]$data

  return(data)
}     

get_my_data("test_grid.html",3)


get_my_data("test_grid.html",1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM