【问题标题】:R highcharter get data from plots saved as htmlR highcharter 从保存为 html 的图中获取数据
【发布时间】:2017-09-06 08:03:20
【问题描述】:

我在 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

这将是最好的。问候。

【问题讨论】:

  • 你必须很好地抓取数据。试试rvest
  • 哦,你确定它会处理这个吗?
  • 这看起来像是 R 中的数据问题,但如果 Highcharts 对此案例有任何问题,请描述它们。
  • 感谢 Q。我用它来学习如何将 highcharter 图表导出为 html。
  • 我很高兴听到这个消息!

标签: html r highcharts


【解决方案1】:

你可以使用下面的代码

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)

【讨论】:

    猜你喜欢
    • 2021-03-13
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多