[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Plotting in Octave

From: Ted Harding
Subject: Plotting in Octave
Date: Wed, 20 Jul 1994 12:44:51 +0100 (BST)

Dear All,
1. I have been trying to find source for a VGA console driver for GNUPLOT
so as to use Gnuplot to view 'octave' graphs on my Linux console
(I'm not using X), with the graphics handled by svgalib.
I see references to "the Linux Driver" which suggest that this does
the job, but I can't find source. Can anyone help?

2. This is a tip for octave users who may find it impossible, difficult
or inconvenient to use 'gnuplot' to view graphs on their own screens
(especially non-users of X), or who would like access to greater control
over the plot, or far more enhancements, than 'gnuplot' provides.
  The package GLE as distributed for Linux includes a VGA option (binary
file 'gle_vga', evoked by the command "gle -dvga"), which uses [s]vgalib
to display graphics on the screen.

GLE can be found in the Linux mirror as
apps/math/gle-3.3g-bin.tar.gz (include the binary files for vga)
apps/math/gle-3.3g-src.tar.gz (this does not include source for 'gle_vga')

  The following three files, the first a skeleton command file for GLE,
the second a minimal m-file for 'octave', the third an 'octave' utility
to write column vectors and matrices out to a file, are all you need to
plot the columns 2..k of an Nxk matrix X as curves against column 1.
  The octave command for this would be "glplot(X);" This function as
written returns value "1".
  As written, you first see the GLE command-file for the plot. Press
F10 (or ^F 0) to see the graph. From the graph, "RETURN" gets you back
to the command file which you can edit to your taste and save under
another name for future reference. While viewing the graph, you can use
keys to move a cursor round the screen, draw lines, boxes; place text; etc.
All such changes cause corresponding commands to be automatically entered
into the command file you are viewing, and these too can be edited.
  As the need arises and the mood takes me, I shall be making similar
arrangements to use GLE's surface-plotting and contouring functions
within 'octave', and will post these; if anyone beats me to it (quite
likely) it would be nice if they would do the same!

Ted Harding                                        address@hidden
This is a skeleton GLE file to plot columns 2..k of an Nxk data file
severally against column 1. There are various empty "sockets" for assorted
furniture: Ttitle, Xtitle, Ytitle, X2Title, Y1Title, box, table, key.
See the GLE Manual for the various options and enhancements which can be used.
Note that any textual item (e.g. Title) can include TeX-like specials
to get Greek, Math, sup/sub, etc.
size 24 18 box
set font pldr
begin scale 1 1
  begin graph
    size 24 18
    Title ""
    Xtitle ""
    Ytitle ""
    X2Title ""
    Y2Title ""
    data gle_temp.dat
    dn line marker square
  end graph
  begin box
  end box
  begin table
  end table
  begin key
  end key
end scale
File glplot.m
This file drives GLE as the plotting software under Octave. The work-space
throughout is the current working directory.
Data must be in columns (you could modify the file to check this).
The first shell_cmd copies the above file '' to the current
working directory (This seems necessary because GLE tends to treat "/"
as a switch, so doesn't recognise UNIX paths properly).
Replace the pathname in this command with wherever you decide to store
the file permanently.
function s = glplot(X)
% Plots the data in matrix X as graphs using 'gle'.
% The column X(:,1) is the set of x'values;
% the columns X(:,i) i=2..k give the y-values for the several curves.
shell_cmd("cp /usr/local/lib/octave/1.0/ted/ .");
shell_cmd("gle -dvga > /dev/tty");
shell_cmd("rm gle_temp.dat");
file write.m
function write(file,fmt,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)
#H      write('filename','format',x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)
#H      writes the data in the rows of matrices x1,x2,...
#H      side-by-side into the rows of <filename> (APPEND mode).
#H      'format' is a C f,e or g format (e.g.'%7.4f') for a single number.
#H      'format' is mandatory, 'filename' is optional and, if omitted,
#H      output is to the screen. If <filename> exists it is over-written
#H      (to change this, change the commented line below)
#H      There must be at least one matrix argument x1, and at most 10.
#H      The matrices x1, x2, ... are output side by side; all must have the
#H      same number of rows.
if isstr(fmt), strargs=2; end
if strargs==1, FIL="stdout"; X=fmt; FMT=file; P=1;
  else X=[]; FMT=fmt; FIL=file; P=0; end

if (nargin-strargs)>P+0, X=[X x1]; end
if (nargin-strargs)>P+1, X=[X x2]; end
if (nargin-strargs)>P+2, X=[X x3]; end
if (nargin-strargs)>P+3, X=[X x4]; end
if (nargin-strargs)>P+4, X=[X x5]; end
if (nargin-strargs)>P+5, X=[X x6]; end
if (nargin-strargs)>P+6, X=[X x7]; end
if (nargin-strargs)>P+7, X=[X x8]; end
if (nargin-strargs)>P+8, X=[X x9]; end
if (nargin-strargs)>P+9, X=[X x10]; end
S=size(X); R=S(1); C=S(2);
fopen(FIL,"w");  % Change this to "a" to APPEND to an existing file
for i=1:R
  for j=1:C
    fprintf(FIL,FMT,X(i,j)), fprintf(FIL,' '), end, fprintf(FIL,'\n')
if (strargs==2) fclose(FIL); end
Ted Harding                                        address@hidden

reply via email to

[Prev in Thread] Current Thread [Next in Thread]