tomwenseleers / export

R package for streamlined export of graphs and data tables.
192 stars 35 forks source link

doc_parse_raw #16

Closed guokai8 closed 1 year ago

guokai8 commented 5 years ago

Hi, When I use graph2ppt on ubuntu system platform. It report the error:

Error in doc_parse_raw(x, encoding = encoding, base_url = base_url, as_html = as_html,  : 
  StartTag: invalid element name [68]

And below is the details: R version 3.4.4 (2018-03-15) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 16.04.5 LTS

Matrix products: default BLAS: /usr/lib/libblas/libblas.so.3.6.0 LAPACK: /usr/lib/lapack/liblapack.so.3.6.0

locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages: [1] stats graphics grDevices utils datasets methods base

other attached packages: [1] export_0.2.2.9000

tomwenseleers commented 5 years ago

Could you please provide a full reproducible example, so we can try on our end?

guokai8 commented 5 years ago

I just use very simple example:

library(export)
p<-plot(1:10)
graph2ppt(x=p,file="test.pptx")

I run this on ubuntu.

tomwenseleers commented 5 years ago

Is the problem here not just that you are trying to pass a base R plot as an object, which is not possible? (You can only do that with ggplots) So you would have to do instead

library(export)
plot(1:10)
graph2ppt(file="test.pptx")

Does that work OK for you?

guokai8 commented 5 years ago

I am sorry I don't have graphic interface on my server.

tomwenseleers commented 5 years ago

Ha then you would have to use


library(export)
plot.fun = function(){
  print(plot(1:10))
}
graph2ppt(fun=plot.fun, file="test.pptx")

I think... (You have to set your working directory first, or include the path in the filename)
guokai8 commented 5 years ago

I try it but it doesn't work. Thanks!

tomwenseleers commented 5 years ago

And does exporting ggplots work for you? E.g.

library(export)
library(ggplot2)
library(datasets)
x=qplot(Sepal.Length, Petal.Length, data = iris, 
        color = Species, size = Petal.Width, alpha = I(0.7))
graph2ppt(x=x, file="test.pptx")
tomwenseleers commented 5 years ago

One other thing that may be causing problems is that I believe export is expecting the latest version of R, R 3.5.1... When I try on my ubuntu workstation here it all works so I am not quite sure where the problem is coming from... Could be that it has to do something with the fact you don't have a graphics interface on your server (we've always tested the package from within RStudio with a graphics device open).... But I'll look into it...

tomwenseleers commented 5 years ago

Could you try if this works on your configuration

library(officer)
doc <- read_pptx()
doc <- add_slide(doc, "Title and Content", "Office Theme")
doc <- ph_with_vg_at(doc, code = barplot(1:5, col = 2:6),
  left = 1, top = 2, width = 6, height = 4)
print(doc, target = "vg.pptx")

If that one doesn't work without a graphics interface then I'm afraid exportalso won't work, since we rely on officerand rvg...

guokai8 commented 5 years ago

Hi, I try it. it works. Thanks!

tomwenseleers commented 5 years ago

So officerworks, but the exportpackage still doesn't work? Or does exporting ggplotswork also in export?

guokai8 commented 5 years ago

Yes. export seems doesn't work but officer did. I haven't try ggplots.

tomwenseleers commented 5 years ago

OK I'll look into it then, because that means I should be able to fix exportto make it work for this configuration... Would you know by any chance how to set up an R installation without a screen device?

guokai8 commented 5 years ago

It automatic setup on the server. Btw, the thing happened since I want build an shiny app("http://hurlab.med.und.edu/VennDetail/") by using your export package to export ppt and doc. Now it works. I found the reason also comes from UpSetR when I try to save the upset figure which always call grid.newpage function. I modified the upset code and used the ph_with_vg_at function.

tomwenseleers commented 5 years ago

We just did an update to the github export version to make it work also for R users without a screen device. You can install it with devtools::install_github("tomwenseleers/export") See if that works for you!

guokai8 commented 5 years ago

OK. I will try the new version. Thanks!

tomwenseleers commented 5 years ago

And did it work for you in the end?

jchap14 commented 5 years ago

Hi Tom,

I am having this same issue. graph2ppt works in Rstudio when I export a dendrogram (or anything):

Example:

plot(hc.dend)
graph2ppt(file="dendrograms.pptx", append=F)

But returns the error below when I run it as an Rscript from the bash command line (no screen device):

Error in doc_parse_raw(x, encoding = encoding, base_url = base_url, as_html = as_html,  :
  StartTag: invalid element name [68]
Calls: graph2ppt ... as_xml_document.character -> read_xml.raw -> doc_parse_raw

I re-installed the package using devtools::install_github("tomwenseleers/export") & that didn't fix it.

Thanks

guokai8 commented 5 years ago

Hi, Sorry for the late reply. it seems the new version still not works. Kai

tomwenseleers commented 1 year ago

Can't reproduce this error on my side, so closing this for now. But feel free to reopen with a reproducible example in case problems would persist.