Speaking of branches, we may need to seriously consider a branch here,

mpl1. The changes here may involve breaking a fair amount of code,

which I don't mind doing to get it right, but I'm somewhat inclined to

branch off here for matplotlib1.0, with the goal of using traits,

fixing axis handling (eg multiple y-axis with arbitrary placement),

and rewriting the transforms.

On the topic of transforms, I would like to be able to do dynamic range

compression on a decaying oscillatory signal. Think of it as a logarithmic

axis which supports negative numbers. AFAICT, the current transform

infrastructure does not allow me to add this as a third party package.

The axis would look something like:

>- 10**2

>

>- 10**1

>

>- 10**0

>

>- 10**-1

>

>- 0

>

>- -10**-1

>

>- -10**0

As well as a max and min parameter, there would have to be a cutoff

parameter. For auto axes, choose a cutoff which allows a reasonable

number of decades to be displayed (I'm guessing reasonable is seven).

The transform would be something like the following:

if (x[i] > cut) newx[i] = log10(x[i]) - log10cut;

else if (x[i] < -cut) newx[i] = log10cut - log10(-x[i]);

else newx[i] = 0.;

with inverse:

if (x[i] < 0) newx[i] = -pow(10.0, log10cut - x[i]);

else if (x[i] > 0) newx[i] = pow(10.0, x[i] - log10cut);

else x[i] = 0.

Even extending the current LOG10 support would present a challenge of

how to get the cut value into the transform.

Suggestions how I can implement this in the current architecture, or

should I wait for the new transforms code?

- Paul

## ···

On Tue, Jul 17, 2007 at 08:33:47AM -0500, John Hunter wrote: