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