I think this is a good simplification of what I want to do.  I believe I
copied the code from Cliff a long time ago, when I didn't know J very well,
and re-wrote it in APL for the paper.

My intention was to come up with a good palette for graphing values.  I
wanted a logical progression of distinct colors, for some value of
"logical", with more colors in some parts of the range.  Actually, looking
at the code I currently use to generate my favored palette, it looks like I
already abandoned the "pwlin" code.

Here's what I do, using your version of interpolation since it's simpler
than the one I currently use:

   interpolatePts=: 4 : '([+"1((<:x)%~i.x)*/-~)/y'
   interpolatePtPairs=: 4 : '({:y),~;}:&.>x interpolatePts&.>2<\y'
   CORNERS=: 0 4 2 1 6 5 3 7 {255*2 2 2#:i.8
NB.* FULLSPECPAL: black->dark
blue->green->cyan->purple->red->orange->yellow->almost white
   FULLSPECPAL=: 256{. <.0.5+24 36 46 40 40 50 30 interpolatePtPairs (0 3 2
6 5 1 4 7){CORNERS

You can see what this looks like with
   FULLSPECPAL viewmat i.16 16

The palette I use as my default further tinkers with this as shown here:

NB.* adjustFullSpectrumPalette: make full-spectrum palette better...
adjustFullSpectrumPalette=: 3 : 0
   len=. #ix=. 80+i.56                  NB. Adjust the mid-palette to elim
NB.   ((<:<./ix),>:>./ix){FULLSPECPAL   NB.  cyan because it's too light at
NB.   0 255 103                         NB.  transition and too similar to
NB. 187  68 255                         NB.  blue at low end of palette.
   pb=. |:FULLSPECPAL{~({.,{:) ix       NB. Patch borders
   patch=. stepsftn"1]pb,.len           NB. Linear-match RGB each to within
2
   bv=. -:|.(]%~[:>:i.)len              NB. Blend-vec: push patch toward
gray,
   patch=. |:roundNums (>:bv)%"1~patch+"1 bv*128  NB. strongly->weakly
   ADJPAL=: patch ix}FULLSPECPAL
)

Where "stepsftn" is this:

 stepsftn=: 3 : 0
NB.* stepsftn: vector of numbers from num, to num, in numsteps steps.
   'from to numsteps'=. y
   from+(to-from)*(numsteps-1)%~i.numsteps
)

For some other palettes, I just use this last verb:

NB.* BGYPAL: Blue->Green->Yellow palettes (hand-done)
NB. These palettes keep down the number of different colors to reduce
NB. the "busyness" of a graph.  Also, they vary smoothly from dark to
NB. light so will stay distinct when printing in black & white.

BGYPAL=: ;stepsftn&.>0 0 86;64 127 85;120 200 43;220 255 42 NB. Red,
BGYPAL=: BGYPAL,:;stepsftn&.>0 80 85;96 224 86;230 255 85   NB. Green,
BGYPAL=: BGYPAL,;stepsftn&.>0 255 75;250 112 95;64 128 86   NB. Blue
BGYPAL=: roundNums |:BGYPAL



On Sun, Aug 11, 2013 at 10:37 PM, Raul Miller <[email protected]> wrote:

> Ok... but if that is all you want, then this kind of expression will do it:
>    (([+"1(85%~i.86)*/-~)/)"2
>
> For example:
>    (([+"1(3%~i.4)*/-~)/)"2 (1 0 0,:0 1 0)
>        1        0 0
> 0.666667 0.333333 0
> 0.333333 0.666667 0
>        0        1 0
>
> Or, if you prefer:
>    1 0 0 ([+"1(3%~i.4)*/-~)0 1 0
>
> (same result)
>
> But I guess I am trying to understand what kind of more general
> framework you want to put this kind of operation into?
>
> Thanks,
>
> --
> Raul
>
> On Sun, Aug 11, 2013 at 10:30 PM, Devon McCormick <[email protected]>
> wrote:
> > Because (with the linear interpolation) it gives me gradations of colors
> > across the full range of colors available (or less than the full range
> if I
> > wanted to choose a limited number of points).
> >
> >
> > On Sun, Aug 11, 2013 at 7:10 PM, Raul Miller <[email protected]>
> wrote:
> >
> >> On Sun, Aug 11, 2013 at 5:50 PM, Devon McCormick <[email protected]>
> >> wrote:
> >> > The reason I like Cliff's code is it lets me draw lines through the
> color
> >> > cube between arbitrary corners.
> >>
> >> How is this useful?
> >>
> >> Thanks,
> >>
> >> --
> >> Raul
> >> ----------------------------------------------------------------------
> >> For information about J forums see http://www.jsoftware.com/forums.htm
> >>
> >
> >
> >
> > --
> > Devon McCormick, CFA
> > ^me^ at acm.
> > org is my
> > preferred e-mail
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>



-- 
Devon McCormick, CFA
^me^ at acm.
org is my
preferred e-mail
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to