有一个简单的例子如何:
我为一个情节(p1)生成了一个json文件:
json<-plotly_json(p1,FALSE)
write(json,'test.json')
但我无法在简单的html / java脚本测试中生成绘图。我已经能够在html / javascipt中生成图,而不是从R保存的json文件。这看起来很简单,但我是html的新手,显然缺少一些明显的东西。
答案 0 :(得分:0)
我认为我终于有了OP并一直在寻找什么。
以下功能输出两个文件。
rm(list = ls())
library(tidyverse)
library(stringi)
library(plotly)
plotly_to_js <- function(
plotly.object
, div.id = 'plot1'
, output.html = FALSE
, output.file = NULL
, output.dir = NULL
, output.url = NULL
){
if(is.null(output.file)){
output.file <- div.id %s+% '.js'
}
if(is.null(output.dir)){
js.filename <- getwd() %s+% '/' %s+% output.file
}else{
js.filename <- output.dir %s+% '/' %s+% output.file
}
if(is.null(output.url)){
output.url <- div.id %s+% '.html'
}
json <- plotly_json(plotly.object,FALSE)
js.output <-
"(function(){ \n
window.PLOTLYENV={'BASE_URL': 'https://plotly.com'}; \n
\n
var gd = document.getElementById('%div.id%') \n
var resizeDebounce = null; \n
function resizePlot() { \n
var bb = gd.getBoundingClientRect(); \n
Plotly.relayout(gd, { \n
width: bb.width, \n
height: bb.height \n
}); \n
} \n
Plotly.plot(gd, \n
%json%
\n
); \n
}()); \n
"
js.output <- gsub('%div.id%', div.id, js.output)
js.output <- gsub('%json%', json, js.output)
fileConn<-file(js.filename)
writeLines(js.output, fileConn)
close(fileConn)
if(output.html){
output.html <-
"<html> \n
<head> \n
<meta charset=\"utf-8\"/> \n
</head> \n
<body> \n
\n
<script src='https://cdn.plot.ly/plotly-latest.min.js'></script> \n
\n
<div id=\"%div.id%\" style=\"width: 100%; height: 100%;\" class=\"plotly-graph-div\"></div> \n
<script type=\"text/javascript\" src=\"%js.filename%\"></script> \n
</body>\n
</html>\n"
output.html <- gsub('%div.id%', div.id, output.html)
output.html <- gsub('%js.filename%', js.filename, output.html)
fileConn <- file(output.url)
writeLines(output.html, fileConn)
close(fileConn)
}
}
x <- c(1:100)
random_y <- rnorm(100, mean = 0)
data <- data.frame(x, random_y)
fig <- plot_ly(data, x = ~x, y = ~random_y, type = 'scatter', mode = 'lines')
plotly_to_js (
fig
, output.html = TRUE
)