Plot coordinate pairs: Difference between revisions

jq
(jq)
Line 1,115:
</lang>
[http://www.diga.me.uk/PlotCoordPairs.gif LB screen]
 
=={{header|jq}}==
Using R (non-interactive mode)
{{works with|jq|1.4}}
 
jq is designed to interoperate with other tools, and in this section we illustrate how jq can be used with R in a simple pipeline: jq will produce a stream of CSV data that will be piped into R operating in non-interactive mode. Assuming jq an R programs are respectively in plot.jq and plot.R, the pipeline would look like this:
<lang sh>jq -n -M -r -f plot.jq | R CMD BATCH plot.R</lang>
'''plot.jq'''
<lang jq># NOTE: This definition of transpose can be omitted
# if your version of jq includes transpose as a builtin.
#
# transpose a possibly jagged matrix, quickly;
# rows are padded with nulls so the result is always rectangular.
def transpose:
if . == [] then []
else . as $in
| (map(length) | max) as $max
| length as $length
| reduce range(0; $max) as $j
([]; . + [reduce range(0;$length) as $i ([]; . + [ $in[$i][$j] ] )] )
end;
 
def x: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
def y: [2.7, 2.8, 31.4, 38.1, 58.0, 76.2, 100.5, 130.0, 149.3, 180.0];
 
def plot(x;y): "A,B", ( [x,y] | transpose | map( @csv ) | .[]);
 
plot(x;y)</lang>
'''plot.R'''
<lang R>mydata <- read.table( file("stdin"), header=TRUE, sep=",")
 
x = mydata$A # x-axis
y = mydata$B # y-axis
plot(x, y, # plot the variables
main="Scatterplot Example",
xlab="x-axis label", # x-axis label
ylab="y-axis label" ) # y-axis label</lang>
 
=={{header|Julia}}==
2,460

edits