Home > Software design >  Save a graph from plotly as pdf
Save a graph from plotly as pdf

Time:12-22

How would it be possible to save a graph from plotly into the pdf.

fit = qpgraph(f2blocks, graph, return_fstats = TRUE)
fit$score
fit$edges %>% plotly_graph
fit$f4 %>% slice_max(abs(z))

Thanks!

CodePudding user response:

I don't see an obvious place where a plot object was assigned a name. Once you have a name, let's say it's named p then this is now tested code:


library(plotly)
library(reticulate)
py_install("plotly")
p <- plot_ly(x = 1:10, type="histogram") 
# without the type parameter the help page example gives warning
reticulate::py_run_string("import sys") # not loaded by default?
reticulate::py_run_string("import plotly") # Also needed?
save_image(p, "./pic.png")
save_image(p, "./pic.pdf")  # checked; both were created

file.show(tmp)  # to see if it succeeded

CodePudding user response:

I have tried pdf()...dev.off(), pandoc_convert(), and webshot(), but I failed to produce a pdf file from a plotly object.

Then, I check the class of the plotly object. It turns out that the object inherits htmlwidget class.

I then used saveWidget() from {htmlwidget}to save the plotly object as a html file, and then I used chrome_print from {pagedown} to convert the html file to a pdf file.

Here I use the example in the documentation

library(admixtools)
library(htmlwidgets)
library(pagedown)

fit = qpgraph(example_f2_blocks, example_graph) 
yourgraph = fit$edges %>% plotly_graph
saveWidget(yourgraph, file = "your_graph.html")
chrome_print("your_graph.html", output = "your_graph.pdf")

The result:

enter image description here

  • Related