((section 2 "Outdated egg!" (p "This is an egg for CHICKEN 4, the unsupported old release.  You're almost certainly looking for " (int-link "/eggref/5/octave" "the CHICKEN 5 version of this egg") ", if it exists.") (p "If it does not exist, there may be equivalent functionality provided by another egg; have a look at the " (link "https://wiki.call-cc.org/chicken-projects/egg-index-5.html" "egg index") ". Otherwise, please consider porting this egg to the current version of CHICKEN.") (tags "egg")) (section 2 "octave" (toc) (section 3 "Description" (p "Octave extension for Chicken and Gambit Scheme.")) (section 3 "Author" (p (int-link "mailto:octave-egg@carretechnologies.com" "Pierre-Alexandre Fournier"))) (section 3 "Requirements" (p "GNU/Octave and gnuplot have to be installed.") (p "With Chicken Scheme, the posix extension is needed:") (pre " (use posix)")) (section 3 "Documentation" (p "The octave egg provides a simple interface for GNU/Octave use in Chicken and " (link "http://www.iro.umontreal.ca/~gambit/" "Gambit") " Scheme systems. The egg is meant to be used as a graph utility using the GNU/Octave interface to gnuplot. Comments and contributions are welcomed.") (p "Here are some " (link "http://carretechnologies.com/scheme/octave/screenshots.html" "screenshots") ".") (section 4 "Usage" (p "To start:") (pre " (octave:start)") (p "To stop:") (pre " (octave:stop)"))) (section 3 "Example" (highlight scheme "(use posix octave)\n\n(octave:start)\n(octave:version)\n(octave:plot '(1 2 3) '(3 2 1))\n(octave:title \"Simple plot\")\n(octave:xlabel \"xbar\")\n(octave:ylabel \"ybar\")\n(octave:grid \"on\")\n(octave:grid \"off\")\n(octave:semilogx '(1 2 3) '(3 2 1))\n(octave:title \"SemilogX\")\n(octave:semilogy '(1 2 3) '(3 2 1))\n(octave:title \"SemilogY\")\n(octave:figure)\n(octave:loglog '(1 1.5 211.8) '(2 2.3 21.0)  '(1 1.5 222.3) '(1.2 2.4 2222.0))\n(octave:figure)\n(octave:polar (iota 50) (iota 50))\n(octave:title \"Rose\")\noctave:supported-file-types ;;; to see supported file formats\n(octave:save-plot-to \"png\" \"rose.png\")\n(octave:figure)\n(octave:title \"Bar\")\n(octave:bar (iota 5) (iota 5))\n(octave:figure)\n(octave:title \"Mesh 3D\")\n(octave:mesh (list (iota 4) (iota 4 2)))\n(octave:figure)\n(octave:title \"ImageSC\")\n(octave:imagesc (list (iota 4) (iota 4 2)))\n(octave:figure)\n(octave:title \"Mesh XYZ\")\n(octave:mesh-xyz (iota 3) (iota 2) (list (iota 3) (iota 3)))\n(octave:save-plot-to \"postscript\" \"foo.ps\")\n(octave:figure)\n(octave:title \"Y Error bars\")\n(octave:errorbar (list 1.1 2.1 3.1 4.1) (list 1.1 2.1 3.1 4.1) (list 2 3 4 3))\n(octave:figure)\n(octave:title \"Boxes Error bars\")\n(octave:errorbar (list 1 2 3 4) (list 2 3 2 3) (list .1 .2 .2 .1) (list .1 .2 .2 .2) (list .2 .1 .2 .2) (list .4 .3 .2 .1) \"'#~>'\")\n(octave:stop)")) (section 3 "Limitations" (p "This simple GNU/Octave interface has some limitations:") (ul (li "We suggest you don't use this module if you want to plot more than 10000 points in a graph. Points are passed in a string and the pipe is very slow when you send a lot of points. Write a wrapping function and subsample your data before plotting if you have more than 10000 points to plot.") (li "In some cases, like when you try to send 100000 points to a graph function, the GNU/Octave process may crash leaving a gnuplot process running. If this happens you should kill the gnuplot process manually."))) (section 3 "Changelog" (ul (li "0.4: Changed " (tt "octave:stop") ". Added " (tt "octave:stairs") " and " (tt "octave:errorbar") " functions.") (li "0.3: Access to all Octave's supported file types to save the current graph. Added " (tt "octave:legend") " function. Checks for argument lengths in 2d plot functions. Replaced " (tt "gset") " with " (tt "__gnuplot_set__") " internal Octave function.") (li "0.2: Added 3d plotting functions (" (tt "octave:mesh-xyz") ", " (tt "octave:contour") ", " (tt "octave:imagesc") ") and an interface version (" (tt "octave:version") ") function.") (li "0.1: Initial version."))) (section 3 "License" (p "The octave egg is released under the BSD license."))))