# Re: [visad] Setting different colour to different range of values

```Hi Birinchi,

Please use "reply all" to respond to the entire list, rather than only to
me.

I examined that the colors got set according to dependent variable as
> 0-20(red),21-40(blue),41-60(green),61-79(yellow),80-100(magenta).I
> want to set the colors as
> 0-15(red),16-25(blue),26-50(green),51-70(yellow),71-100(magenta).
>

You need to take the time to understand how the color table is generated
and structured. Otherwise you will not be able to alter it according to

Here is a version (untested) that does what you ask:

int lutLen = 256;
float[][] lut = new float[3][lutLen];
int redBlueBorder = (int) (0.16 * lutLen);
int blueGreenBorder = (int) (0.26 * lutLen);
int greenYellowBorder = (int) (0.51 * lutLen);
int yellowMagentaBorder = (int) (0.71 * lutLen);
for (int i=0; i<redBlueBorder; i++) {
lut[0][i] = Color.red.getRed() / 255f;
lut[1][i] = Color.red.getGreen() / 255f;
lut[2][i] = Color.red.getBlue() / 255f;
}
for (int i=redBlueBorder; i<blueGreenBorder; i++) {
lut[0][i] = Color.blue.getRed() / 255f;
lut[1][i] = Color.blue.getGreen() / 255f;
lut[2][i] = Color.blue.getBlue() / 255f;
}
for (int i=blueGreenBorder; i<greenYellowBorder; i++) {
lut[0][i] = Color.green.getRed() / 255f;
lut[1][i] = Color.green.getGreen() / 255f;
lut[2][i] = Color.green.getBlue() / 255f;
}
for (int i=greenYellowBorder; i<yellowMagentaBorder; i++) {
lut[0][i] = Color.yellow.getRed() / 255f;
lut[1][i] = Color.yellow.getGreen() / 255f;
lut[2][i] = Color.yellow.getBlue() / 255f;
}
for (int i=yellowMagentaBorder; i<lutLen; i++) {
lut[0][i] = Color.magenta.getRed() / 255f;
lut[1][i] = Color.magenta.getGreen() / 255f;
lut[2][i] = Color.magenta.getBlue() / 255f;
}
control.setTable(lut);

Of course, generalizing this code over N colors in a loop, and/or
encapsulating the three array assignments to a helper method, would make it
less verbose and perhaps easier to understand.

I genuinely hope that I am not irritating anyone.
>

The best approach to not irritate anyone is to ask questions in a smart
way, which means making a best effort before leaning on someone else. See
http://www.catb.org/~esr/faqs/smart-questions.html

HTH,
Curtis

On Thu, Apr 19, 2012 at 1:39 AM, birinchi dutta <duttabirinchi@xxxxxxxxx>wrote:

> I genuinely hope that I am not irritating anyone.I have applied the
> color table of your example in the code below --
>
> import java.rmi.RemoteException;
> import java.awt.*;
> import javax.swing.*;
> import java.io.*;
>
> public class color{
>
>    private RealType longitude, latitude, temperature;
>    private RealTupleType domain_tuple;
>    private FunctionType func_dom_temp;
>    private Set domain_set;
>    private FlatField vals_ff;
>    private DataReferenceImpl data_ref;
>    private DisplayImpl display;
>    private ScalarMap latMap, lonMap, tempMap;
>
>    @SuppressWarnings("empty-statement")
>  public color(String []args)
>
>    latitude = RealType.getRealType("latitude");
>    longitude = RealType.getRealType("longitude");
>    domain_tuple = new RealTupleType(latitude, longitude);
>    temperature = RealType.getRealType("temperature");
>
>    func_dom_temp = new FunctionType( domain_tuple,temperature);
>
>
>    int NCOLS = 10;
>    int NROWS = 10;
>
>    domain_set = new Linear2DSet(domain_tuple, 0,9, NROWS,
>                                               0,9,NCOLS);
>    float[][] temp_vals = new float[][]{{81,100,86,3,6,23,56,66,7,31},
>                                        {12,10,12,44,4,21,67,99,5,56},
>                                        {11,13,14,5,78,43,87,1,33,5},
>                                        {65,4,56,23,67,87,23,5,43,8},
>                                        {3,5,65,76,2,99,1,47,76,23},
>                                        {2,3,77,54,23,87,45,12,23,4},
>                                        {23,56,7,87,43,12,32,1,3,77},
>                                        {56,3,21,12,78,54,56,43,78,99},
>                                        {4,5,66,43,2,12,32,43,12,34},
>                                        {87,4,32,12,1,75,44,33,22,88}};
>
>    float[][] set_samples = domain_set.getSamples( true );
>    float[][] flat_samples = new float[1][NCOLS * NROWS];
>    for(int c = 0; c < NCOLS; c++)
>      for(int r = 0; r < NROWS; r++)
>      {
>            flat_samples[0][ c * NROWS + r ] = temp_vals[r][c];
>
>      }
>
>
>    vals_ff = new FlatField( func_dom_temp, domain_set);
>    vals_ff.setSamples( flat_samples);
>    display = new DisplayImplJ2D("display1");
>
>    GraphicsModeControl dispGMC = (GraphicsModeControl)
> display.getGraphicsModeControl();
>    dispGMC.setScaleEnable(true);
>
>    latMap = new ScalarMap( latitude,    Display.YAxis );
>    lonMap = new ScalarMap( longitude, Display.XAxis );
>    tempMap = new ScalarMap( temperature,  Display.RGB);
>
>
>    ColorControl control = (ColorControl) tempMap.getControl();
>    float[][] lut = new float[3][256];
>    Color[] colors = {
>      Color.red, Color.blue, Color.green, Color.yellow, Color.magenta
>    };
>    int index = 0;
>    for (int c=0; c<colors.length; c++) {
>      int minIndex = c * 256 / colors.length;
>      int maxIndex = (c + 1) * 256 / colors.length;
>      for (int i=minIndex; i<maxIndex; i++) {
>        lut[0][i] = colors[c].getRed() / 255f;
>        lut[1][i] = colors[c].getGreen() / 255f;
>        lut[2][i] = colors[c].getBlue() / 255f;
>      }
>    }
>    control.setTable(lut);
>
>    data_ref = new DataReferenceImpl("data_ref");
>    data_ref.setData( vals_ff );
>
>    LabeledColorWidget widget =
>      new LabeledColorWidget(new ColorMapWidget(tempMap, false));
>
>    JFrame jframe = new JFrame("DISPLAY");
>    jframe.getContentPane().setLayout(new FlowLayout());
>
>
>    jframe.setSize(300,550);
>    jframe.setVisible(true);
>
> }
>
>
>  public static void main(String[] args)
>  {
>    new color(args);
>  }
>
> }
>
> I examined that the colors got set according to dependent variable as
> 0-20(red),21-40(blue),41-60(green),61-79(yellow),80-100(magenta).I
> want to set the colors as
> 0-15(red),16-25(blue),26-50(green),51-70(yellow),71-100(magenta).
>
> On 4/18/12, Curtis Rueden <ctrueden@xxxxxxxx> wrote:
> > Hi Birinchi,
> >
> >
> > Thank you for the reply.Its ok..but I want to set the color according
> >> to intervals of values of the dependent variable like red for
> >> dependent variable values ranging from 0 to 20,blue for 21 to 40
> >> etc.Is it possible?
> >>
> >
> > Sorry, I don't understand what you want. The code I sent does exactly
> that.
> > The ir_radiance RealType is a dependent variable, and it is colorized in
> > stepwise fashion based on its value, as you say.
> >
> > If you need more guidance, you will have to be more specific in your
> > question, or send your code (which we can compile and run) to illustrate
> > what you mean.
> >
> > -Curtis
> >
> >
> > On Wed, Apr 18, 2012 at 10:54 AM, birinchi dutta
> > <duttabirinchi@xxxxxxxxx>wrote:
> >
> >> Thank you for the reply.Its ok..but I want to set the color according
> >> to intervals of values of the dependent variable like red for
> >> dependent variable values ranging from 0 to 20,blue for 21 to 40
> >> etc.Is it possible?
> >>
> >> Birinchi
> >>
> >> On 4/12/12, Curtis Rueden <ctrueden@xxxxxxxx> wrote:
> >> > Hi Birinchi,
> >> >
> >> >
> >> >       I have a problem.I want to set 5 colours to 5 different range of
> >> >> values like 0-2,2-4,etc.How is it possible in VisAD?
> >> >>
> >> >
> >> > You can set the lookup table of the ColorControl to have a stepwise
> >> > color
> >> > table.
> >> >
> >> > Here is an example:
> >> >     https://gist.github.com/2368231
> >> >
> >> > Regards,
> >> > Curtis
> >> >
> >> >
> >> > On Wed, Apr 11, 2012 at 4:16 AM, birinchi dutta
> >> > <duttabirinchi@xxxxxxxxx>wrote:
> >> >
> >> >> Hello Sir,
> >> >>
> >> >>       I have a problem.I want to set 5 colours to 5 different range
> of
> >> >> values like 0-2,2-4,etc.How is it possible in VisAD? Thanking you in
> >> >>
> >> >> Birinchi
> >> >>
> >> >> _______________________________________________
> >> >> visad mailing list
• Search the `visad` archives: