Hey,
I have got a huge problem with the R Snippet node and KNIME 3.1. The output of my node is a SVG file, which worked perfectly fine until KNIME 3.0.1. Now the same workflow, same node, same R code outputs a SVG file with just an empty container. True story! Please help!
Here is what the output looks like:
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="720pt" height="360pt" viewBox="0 0 720 360" version="1.1">
<g id="surface16">
</g>
</svg>
Best,
Marc
https://tech.knime.org/forum/knime-general/r-nodes-not-working-after-uodate-to-31
I am aware of this RServe issue, but I have RServe installed and the node pretends to work fine. Even the Validate Script option shows no anomalies.
Hi Marc,
thank you for reporting, I am currently working on this. Could you please mention what operating system including architecture (32/64 bit) you are working on.
R code outputs a SVG file with just an empty container
Do I understand correctly, that you are creating the SVG as a string in R and outputing that string?
Greetings, Jonathan
Hey Jonathan,
I am working on Windows 7 Professional SP-1 (64 Bit). The R version is 3.2.2 and, as mentioned above, I have RServe installed.
The node/snippet writes a SVG plot to disk and returns the correspondend URL on its outport.
Thanks,
Marc
Jonathan,
I just prepared a workflow for you. If you can provide me with an email address, I can send the workflow to you (I don't want to upload the workflow here).
Best,
Marc
Hi Marc,
I sent you an email to the adress you provided for your forum account. You may attach the workflow in an answer.
Thank you in advance!
Jonathan
Hi Marc,
first of all, thank you for the workflow, I was able to find/solve the problem. I am answering here, since it may be interesting to other users.
You are using ggplot to draw a plot onto the SVG device. These plots need to be printed to actually appear on the device. The reason this worked before is that our previous method of executing R code printed every individual command, just as R does, too, and I believe it should be so for the nodes aswell.
I was able to get your workflow running by calling print on the result of the ggplot() call:
print(ggplot(...))
I hope that is okay for now, solving the problem on the KNIME R Integration side will probably take a while. Maybe some day, you will even be able to create the SVG directly from R as image output.
Hope that helps.
Greetings, Jonathan.
Thank you very much for your help, I have been playing around for some hours and finally found a very simple and convenient solution:
We can use ggsave for saving our ggplot2 plots instead of using the Cairo package/functions.
This works very well and I wouldn't even call it a "workaround". Furthermore it leads me to think that it is not a ggplot2 specific issue, but a Cairo issue?!
Best,
Marc
@Jonathan:
If you are interested, I can provide you with the updated workflow via email.