Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/torch/gnuplot.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md400
1 files changed, 400 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..fe7967f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,400 @@
+<a name="gnuplot.dok"/>
+# Plotting Package Manual with Gnuplot #
+
+A plotting package to visualize [Tensor](..:torch:index#Tensor) objects.
+Functions fall into several types of categories:
+ * [Line plotting](#gnuplot.line.dok)
+ * [Plotting 3D surfaces](#gnuplot.surface.dok)
+ * [Plotting matrices as images](#gnuplot.image.dok)
+ * [Plotting histogram of data](#gnuplot.histogram.dok)
+ * [Plotting directly into files](#gnuplot.files.dok)
+ * [Common operations to decorate plots](#gnuplot.commons.dok)
+
+The plotting package currently uses [gnuplot](http://gnuplot.info) as
+a backend to display data. In particular, `Gnuplot` version `4.4`
+or above is suggested for full support of all functionality.
+
+By default, plot package will search for terminal in following order
+ * ` windows ` terminal if operating system is windows
+ * ` wxt `, ` qt `, ` x11 ` terminal if operating system is linux
+ * ` aqua `, `wxt`, ` qt `, ` x11 ` terminal if operating system is mac
+
+It is also possible to manually set any terminal type using
+[gnuplot.setterm](#gnuplot.setterm). Interactivity is
+dependent on the terminal being used. By default, `x11` and ''wxt
+support'' different interactive operations like, zooming, panning,
+rotating...
+
+The `Gnuplot` port uses `pipes` to communicate with `gnuplot`,
+therefore each plotting session is persistent and additional commands
+can be sent. For advanced users [gnuplot.raw](#gnuplot.raw)
+provides a free form interface to gnuplot.
+
+<a name="gnuplot.custom.dok"/>
+## Customizing Gnuplot Defaults ##
+
+The default styles of gnuplot can be customized using a personal `.gnuplot` file
+located in the users home directory. A sample file is given below as a sample. You can
+paste the contents into `$HOME/.gnuplot` file and gnuplot will use the styles
+specified in this file.
+
+```
+##### Modified version of the sample given in
+##### http://www.guidolin.net/blog/files/2010/03/gnuplot
+
+
+set macro
+
+##### Color Palette by Color Scheme Designer
+##### Palette URL: http://colorschemedesigner.com/#3K40zsOsOK-K-
+
+
+ blue_000 = "#A9BDE6" # = rgb(169,189,230)
+ blue_025 = "#7297E6" # = rgb(114,151,230)
+ blue_050 = "#1D4599" # = rgb(29,69,153)
+ blue_075 = "#2F3F60" # = rgb(47,63,96)
+ blue_100 = "#031A49" # = rgb(3,26,73)
+
+ green_000 = "#A6EBB5" # = rgb(166,235,181)
+ green_025 = "#67EB84" # = rgb(103,235,132)
+ green_050 = "#11AD34" # = rgb(17,173,52)
+ green_075 = "#2F6C3D" # = rgb(47,108,61)
+ green_100 = "#025214" # = rgb(2,82,20)
+
+ red_000 = "#F9B7B0" # = rgb(249,183,176)
+ red_025 = "#F97A6D" # = rgb(249,122,109)
+ red_050 = "#E62B17" # = rgb(230,43,23)
+ red_075 = "#8F463F" # = rgb(143,70,63)
+ red_100 = "#6D0D03" # = rgb(109,13,3)
+
+ brown_000 = "#F9E0B0" # = rgb(249,224,176)
+ brown_025 = "#F9C96D" # = rgb(249,201,109)
+ brown_050 = "#E69F17" # = rgb(230,159,23)
+ brown_075 = "#8F743F" # = rgb(143,116,63)
+ brown_100 = "#6D4903" # = rgb(109,73,3)
+
+ grid_color = "#d5e0c9"
+ text_color = "#222222"
+
+ my_font = "SVBasic Manual, 12"
+ my_export_sz = "1024,768"
+
+ my_line_width = "2"
+ my_axis_width = "1"
+ my_ps = "1.5"
+ my_font_size = "14"
+
+# must convert font fo svg and ps
+# set term svg size @my_export_sz fname my_font fsize my_font_size enhanced dynamic rounded
+# set term png size @my_export_sz large font my_font
+# set term jpeg size @my_export_sz large font my_font
+# set term wxt enhanced font my_font
+
+set style data linespoints
+set style function lines
+set pointsize my_ps
+
+set style line 1 linecolor rgbcolor blue_050 linewidth @my_line_width pt 7
+set style line 2 linecolor rgbcolor green_050 linewidth @my_line_width pt 5
+set style line 3 linecolor rgbcolor red_050 linewidth @my_line_width pt 9
+set style line 4 linecolor rgbcolor brown_050 linewidth @my_line_width pt 13
+set style line 5 linecolor rgbcolor blue_025 linewidth @my_line_width pt 11
+set style line 6 linecolor rgbcolor green_025 linewidth @my_line_width pt 7
+set style line 7 linecolor rgbcolor red_025 linewidth @my_line_width pt 5
+set style line 8 linecolor rgbcolor brown_025 linewidth @my_line_width pt 9
+set style line 9 linecolor rgbcolor blue_075 linewidth @my_line_width pt 13
+set style line 10 linecolor rgbcolor green_075 linewidth @my_line_width pt 11
+set style line 11 linecolor rgbcolor red_075 linewidth @my_line_width pt 7
+set style line 12 linecolor rgbcolor brown_075 linewidth @my_line_width pt 5
+set style line 13 linecolor rgbcolor blue_100 linewidth @my_line_width pt 9
+set style line 14 linecolor rgbcolor green_100 linewidth @my_line_width pt 13
+set style line 15 linecolor rgbcolor red_100 linewidth @my_line_width pt 11
+set style line 16 linecolor rgbcolor brown_100 linewidth @my_line_width pt 7
+set style line 17 linecolor rgbcolor "#224499" linewidth @my_line_width pt 5
+
+## plot 1,2,3,4,5,6,7,8,9
+set style increment user
+set style arrow 1 filled
+
+## used for bar chart borders
+set style fill solid 0.5
+
+set size noratio
+set samples 300
+
+set border 31 lw @my_axis_width lc rgb text_color
+```
+
+<a name="gnuplot.line.dok"/>
+## Line Plotting ##
+
+Line plotting functionality covers many configurations from simplest
+case of plotting a single vector to displaying multiple lines at once
+with custom line specifictions.
+
+<a name="gnuplot.plot"/>
+### gnuplot.plot(x) ###
+Plot vector ` x ` using dots of first default `Gnuplot` type.
+
+```lua
+x=torch.linspace(-2*math.pi,2*math.pi)
+gnuplot.plot(torch.sin(x))
+```
+![](doc/plot_x.png)
+
+In more general form, plot vector ` y vs x ` using the format
+specified. The possible entries of format string can be
+ * '.' for dots
+ * '+' for points
+ * '-' for lines
+ * '+-' for points and lines
+ * '~' for using smoothed lines with cubic interpolation
+ * '|' for using boxes
+ * 'v' for drawing vector fiels. (In this case, x and y have to be two column vectors (x,xdelta),(y,ydelta))
+ * custom string, one can also pass custom strings to use full capability of gnuplot.
+
+```lua
+x=torch.linspace(-2*math.pi,2*math.pi)
+gnuplot.plot('Sin',x/math.pi,torch.sin(x),'|')
+```
+![](doc/plot_xyf.png)
+
+To plot multiple curves at a time, one can pass each plot struct in a table.
+
+```lua
+x=torch.linspace(-2*math.pi,2*math.pi)
+gnuplot.plot({'Cos',x/math.pi,torch.cos(x),'~'},{'Sin',x/math.pi,torch.sin(x),'|'})
+```
+![](doc/plot_sincos.png)
+
+One can pass data with multiple columns and use custom gnuplot style strings too. When multi-column data
+is used, the first column is assumed to be the `x` values and the rest of the columns are separate `y` series.
+
+```lua
+x=torch.linspace(-5,5)
+y=torch.sin(x)
+yp = y+0.3+torch.rand(x:size())*0.1
+ym = y-(torch.rand(x:size())*0.1+0.3)
+yy=torch.cat(x,ym,2)
+yy=torch.cat(yy,yp,2)
+gnuplot.plot({yy,' filledcurves'},{x,yp,'lines ls 1'},{x,ym,'lines ls 1'},{x,y,'lines ls 1'})
+```
+![](doc/plot_filled.png)
+
+<a name="gnuplot.surface.dok"/>
+## Plotting 3D Surfaces ##
+
+Surface plotting creates a 3D surface plot of a given matrix `z`. Entries
+of `z` are used as height values. It is also possible to specify `x` and
+`y` locations corresponding to each point in `z` . If a terminal with
+interactive capabilities is being used by `Gnuplot` backend (like `x11` or
+`wxt` or `qt`), then rotating, zooming is also possible.
+
+<a name="gnuplot.splot"/>
+### gnuplot.splot(z) ###
+
+Plot surface ` z ` in 3D.
+```lua
+x=torch.linspace(-1,1)
+xx = torch.Tensor(x:size(1),x:size(1)):zero():addr(1,x,x)
+xx = xx*math.pi*6
+gnuplot.splot(torch.sin(xx))
+```
+![](doc/plot_splot.png)
+
+It is also possible to specify the `x` and `y` locations of each
+point in `z` by `gnuplot.splot(x,y,z)`. In this `x` and `y` has
+to be the same shape as `z`.
+
+One can also display multiple surfaces at a time.
+
+```lua
+x=torch.linspace(-1,1)
+xx = torch.Tensor(x:size(1),x:size(1)):zero():addr(1,x,x)
+xx = xx*math.pi*2
+gnuplot.splot({torch.sin(xx)},{torch.sin(xx)+2})
+```
+![](doc/plot_splot2.png)
+
+<a name="gnuplot.image.dok"/>
+## Plotting Matrices as Images ##
+
+A given matrix can be plotted using 2D contour plot on a surface.
+
+<a name="gnuplot.imagesc"/>
+### gnuplot.imagesc(z, ['color' or 'gray']) ###
+
+Plot surface ` z ` using contour plot. The second argument defines
+the color palette for the display. By default, grayscale colors are
+used, however, one can also use any color palette available in
+`Gnuplot`.
+
+```lua
+x=torch.linspace(-1,1)
+xx = torch.Tensor(x:size(1),x:size(1)):zero():addr(1,x,x)
+xx = xx*math.pi*6
+gnuplot.imagesc(torch.sin(xx),'color')
+```
+![](doc/plot_imagesc.png)
+
+<a name="gnuplot.histogram.dok"/>
+## Histograms ##
+
+Given a tensor, the distribution of values can be plotted using
+`gnuplot.hist` function.
+
+<a name="gnuplot.hist"/>
+### gnuplot.hist(x, [nbins, min, max]) ###
+
+Plot the histogram of values in `N-D` tensor `x`, optionally using `nbins`
+number of bins and only using values between `min` and `max`.
+
+```lua
+gnuplot.hist(torch.randn(100000),100)
+```
+![](doc/plot_hist.png)
+
+<a name="gnuplot.files.dok"/>
+## Plotting Directly into Files ##
+
+Any of the above plotting utilities can also be used for directly plotting
+into `eps` or `png` files, or `pdf` files if your gnuplot installation
+allows. A final gnuplot.plotflush() command ensures that all output is
+written to the file properly.
+
+```lua
+gnuplot.epsfigure('test.eps')
+gnuplot.plot({'Sin Curve',torch.sin(torch.linspace(-5,5))})
+gnuplot.xlabel('X')
+gnuplot.ylabel('Y')
+gnuplot.plotflush()
+```
+
+<a name="gnuplot.commons.dok"/>
+## Common Operations ##
+
+It is possible to manage multiple plots at a time, printing plots to
+png, eps or pdf files or creating plots directly on png or eps or pdf files.
+
+There are also several handy operations for decorating plots which are
+common to many of the plotting functions.
+
+
+<a name="gnuplot.setgnuplotexe"/>
+### gnuplot.setgnuplotexe(exe) ###
+
+Manually set the location of gnuplot executable.
+
+<a name="gnuplot.setterm"/>
+### gnuplot.setterm(teerm) ###
+
+Manually set the gnuplot terminal.
+
+<a name="gnuplot.closeall"/>
+### gnuplot.closeall() ###
+
+Close all gnuplot active connections. This will not be able to close
+open windows, since on the backend gnuplot also can not close windows.
+
+<a name="gnuplot.figure"/>
+### gnuplot.figure([n]) ###
+
+Select (or create) a new figure with id `n`. Note that until a plot
+command is given, the window will not be created. When `n` is
+skipped, a new figure is created with the next consecutive id.
+
+<a name="gnuplot.epsfigure"/>
+### gnuplot.epsfigure(fname) ###
+
+Creates a figure directly on the `eps` file given with
+`fname`. This uses `Gnuplot` terminal `postscript eps enhanced color`.
+
+<a name="gnuplot.pdffigure"/>
+### gnuplot.pdffigure(fname) ###
+
+Only available if your installation of gnuplot has been compiled
+with `pdf` support enabled.
+
+Creates a figure directly on the `pdf` file given with
+`fname`. This uses `Gnuplot` terminal `pdf enhanced color`,
+or `pdfcairo enhanced color` if available.
+
+<a name="gnuplot.pngfigure"/>
+### gnuplot.pngfigure(fname) ###
+
+Creates a figure directly on the `png` file given with
+`fname`. This uses `Gnuplot` terminal `png`, or `pngcairo` if available.
+
+<a name="gnuplot.svgfigure"/>
+### gnuplot.svgfigure(fname) ###
+
+Creates a figure directly on the `svg` file given with `fname`. This uses
+`Gnuplot` terminal `svg`.
+
+<a name="gnuplot.plotflush"/>
+### gnuplot.plotflush([n]) ###
+
+This command sends `unset output` to underlying gnuplot. Usefull for
+flushing file based terminals.
+
+<a name="gnuplot.figprint"/>
+### gnuplot.figprint(fname) ###
+
+Prints the current figure to the given file with name `fname`. Only `png`
+or `eps` files are supported by default. If your gnuplot installation
+allows, `pdf` files are also supported.
+
+<a name="gnuplot.xlabel"/>
+### gnuplot.xlabel(label) ###
+
+Sets the label of `x` axis to `label`. Only supported for gnuplot
+version 4.4 and above.
+
+<a name="gnuplot.ylabel"/>
+### gnuplot.ylabel(label) ###
+
+Sets the label of `y` axis to `label`. Only supported for gnuplot
+version 4.4 and above.
+
+<a name="gnuplot.zlabel"/>
+### gnuplot.zlabel(label) ###
+
+Sets the label of `z` axis to `label`. Only supported for gnuplot
+version 4.4 and above.
+
+<a name="gnuplot.title"/>
+### gnuplot.title(title) ###
+
+Sets the title of the plot to `title`. Only supported for gnuplot
+version 4.4 and above.
+
+<a name="gnuplot.grid"/>
+### gnuplot.grid(toggle) ###
+
+If `toggle` is `true` then a grid is displayed, else it is
+hidden. Only supported for gnuplot version 4.4 and above.
+
+<a name="gnuplot.movelegend"/>
+### gnuplot.movelegend(hloc,vloc) ###
+
+Set the location of legend key. `hloc` can be '''left', 'right' or
+'center`'. `vloc` can be `'top', 'bottom' or 'middle'''. Only
+supported for gnuplot version 4.4 and above.
+
+<a name="gnuplot.axis"/>
+### gnuplot.axis(axis) ###
+
+Sets the properties of axis for the current plot.
+
+ * `auto` : auto scales the axis to fit data and plot canvas
+ * `image` : scales the axis aspect ratio so that a circle is drawn as circle.
+ * `equal` : same as `image`.
+ * `fill` : resets the aspect ratio of the plot to original values so that it fills up the canvas as good as possible.
+ * {xmin,xmax,ymin,ymax} : Sets the limits of x and y axes. Use an empty string (2 apostophes in a row) if you want to keep the current value.
+
+<a name="gnuplot.raw"/>
+### gnuplot.raw(command) ###
+
+This command is useful for advanced users of gnuplot. `command` is
+directly passed to gnuplot without any formatting.
+