What is the correct Ruby gnuplot (rgplot) syntax for this gnuplot code?
gnuplot, ruby
Solution
I finally got it together:
Gnuplot.open do |gp|
Gnuplot::Plot.new(gp) do |plot|
plot.terminal options[:terminal]
plot.title options[:title]
plot.xlabel options[:xlabel]
plot.ylabel options[:ylabel]
plot.output options[:data_out] if options[:data_out]
plot.ytics "out"
plot.xtics "out"
plot.yrange "[0:100]"
plot.xrange "[0:#{max_len}]"
plot.auto "fix"
plot.offsets "1"
plot.key "outside right top vertical Left reverse enhanced autotitles columnhead nobox"
plot.key "invert samplen 4 spacing 1 width 0 height 0"
plot.style "fill solid 0.5 border"
plot.style "histogram rowstacked"
plot.style "data histograms"
plot.boxwidth "0.75 absolute"
plot.data << Gnuplot::DataSet.new(n) do |ds|
ds.using = "1"
ds.with = "histogram lt rgb \"black\""
ds.title = "N"
end
plot.data << Gnuplot::DataSet.new(g) do |ds|
ds.using = "1"
ds.with = "histogram lt rgb \"yellow\""
ds.title = "G"
end
plot.data << Gnuplot::DataSet.new(c) do |ds|
ds.using = "1"
ds.with = "histogram lt rgb \"blue\""
ds.title = "C"
end
plot.data << Gnuplot::DataSet.new(t) do |ds|
ds.using = "1"
ds.with = "histogram lt rgb \"green\""
ds.title = "T"
end
plot.data << Gnuplot::DataSet.new(a) do |ds|
ds.using = "1"
ds.with = "histogram lt rgb \"red\""
ds.title = "A"
end
end
end
Problem
This is the gnuplot commands from a shell script (from the Hannon Lab), and I would like to port the plotting part to Ruby using the rgplot gem, but I fail getting the syntax right. ``` set boxwidth 0.75 absolute set size 1,1 set style fill solid 1.00 border -1 set xlabel \"read position\" set title \"Nucleotides distribution $TITLE\" set ylabel \"% of total (per read position)\" set key outside right top vertical Left reverse enhanced autotitles columnhead nobox set key invert samplen 4 spacing 1 width 0 height 0 set style histogram rowstacked set style data histograms set noytics set xtics 1 set yrange [ 0.00000 : 100.000 ] noreverse nowriteback plot '$FILENAME' using (100.*column(13)/column(18)):xtic(1) title \"A\" lt rgb \"#5050ff\", \ '' using (100.*column(14)/column(18)) title \"C\" lt rgb \"#e00000\", \ '' using (100.*column(15)/column(18)) title \"G\" lt rgb \"#00c000\", \ '' using (100.*column(16)/column(18)) title \"T\" lt rgb \"#e6e600\", \ '' using (100.*column(17)/column(18)) title \"N\" lt rgb \"pink\" " ``` So far I have this: ``` Gnuplot.open do |gp| Gnuplot::Plot.new(gp) do |plot| plot.terminal options[:terminal] plot.title options[:title] plot.xlabel options[:xlabel] plot.ylabel options[:ylabel] plot.output options[:data_out] if options[:data_out] plot.boxwidth "0.75 absolute" plot.size "1,1" plot.yrange "[0:100]" plot.noytics plot.xtics 1 plot.key "outside right top vertical Left reverse enhanced autotitles columnhead nobox" plot.key "invert samplen 4 spacing 1 width 0 height 0" plot.style "fill solid 1.00 border -1" plot.style "histogram rowstacked" plot.style "data histograms" plot.data << Gnuplot::DataSet.new([x, a]) do |ds| ds.title = "A" end end end ``` But I need help getting it right...