Database Reference
In-Depth Information
Plotting in R from Clojure
One of R's strengths is its plotting ability. In this recipe, we'll see how to take some data and
plot it on a graph. We won't really exercise R's graphic abilities, but this should be enough to
get you started.
Getting ready
We must irst complete the recipe, Setting up R to talk to Clojure , and have Rserve running.
We must also have the Clojure-speciic parts of that recipe done and the connection to
Rserve made.
We'll need the ToR protocol and the implementations that we deined in the Passing vectors
into R recipe.
Also, we'll need access to the java.io.File class:
(import '[java.io File])
How to do it…
This recipe will look a lot like a number of other R-related recipes. We'll create a function that
assembles the string with the R expression and then we'll see it in action.
1. First, we'll deine a function to initialize a PNG ile for output, plot some data, and
save the ile, all from R:
(defn r-plot
([data filename] (r-plot data filename *r-cxn*))
([data filename r-cxn]
(.. r-cxn
(eval (str "png(filename=\""
(.getAbsolutePath (File. filename))
"\", height=300, width=250, bg=\"white\")\n"
"plot(" (->r data) ")\n"
"dev.off()\n")))))
2.
Now, let's test it out at the start of the Fibonacci sequence:
user=> (r-plot [1.0 1.0 2.0 3.0 5.0 8.0 11.0] "fib.png")
#<REXPInteger org.rosuda.REngine.REXPInteger@7342054+[1]>
 
Search WWH ::




Custom Search