octave-maintainers
[Top][All Lists]
Advanced

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

graphics-branch in CVS


From: John W. Eaton
Subject: graphics-branch in CVS
Date: Mon, 29 Jan 2007 17:46:57 -0500

On  7-Dec-2006, John W. Eaton wrote:

| I created a separate CVS branch called graphics-branch for the code
| that I've been working on.  Check that out if you'd like to see what
| direction I'm heading in.

I've now done most of what I wanted to do on this branch, so I plan to
merge it with CVS HEAD soon.  I think the current code handles all the
high-level functions that the previous code did, but there may be a
few missing features.

There are a couple of big advantages with the new implementation:

  * It is more compatible with the handle graphics(tm) way of making
    plots.

  * Things like legend work without having to resort to kluges like
    those used by the legend function from Octave Forge.

  * Printing of subplots works with

      x = -10:0.1:10;
      subplot (2, 1, 1); plot (x, sin (x));
      subplot (2, 1, 2); plot (x, cos (x));
      print -deps sincos.eps

  * The contour function uses the __contourc__ and contourc functions
    from OctPlot so contours are now 2-d plots instead of a special
    case of 3-d plots.

  * The drawnow function is automatically called when Octave issues a
    prompt, but only if something about a figure has changed.

There are also some things that could use improvement:

  * There is still not much checking to ensure that properties have
    valid values, so things will likely break for bad input.  This
    must be fixed, probably before 3.0 is released.

  * Line width and color properties are not implemented.  Since "how
    do I change the line width in Octave plots" is a perennial FAQ,
    I think this should also be fixed before 3.0 is released.

  * It is slow, but not unbearably so, at least for me.  Some of this
    can probably be fixed by translating the core code that deals with
    the list of graphics handles to C++.  It may also be necessary to
    convert the code that processes the plot data structure and
    interacts with gnuplot.

  * Not all plot properties are completely compatible with Matlab.
    For example, to display the plot legend, Matlab seems to draw a
    mini plot, and stores all the grphics objects necessary for that
    as children of the current axis object.  The new code in Octave
    just stores info that a key is needed, along with some information
    about the labels, and lets gnuplot generate the plot legend.

As I noted in my first post about these changes, I think of this code
as an intermediate solution to graphics problems in Octave.  It gives
us a path forward so that at least some handle graphics code written
for Matlab can work in Octave, and it should allow us to solve some
long-standing problems with plotting.

So unless there are any major objections, I plan to merge these
changes with the main CVS branch in the next day or two.  Then I think
2.9.10 can follow soon after as fixing some of the plotting problems
was the last big thing on my list for a new snapshot.

jwe


reply via email to

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