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

Hello Sir,
     It's working.Thanks a lot.

Birinchi

On 4/19/12, Curtis Rueden <ctrueden@xxxxxxxx> wrote:
> 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
> your wishes.
>
> 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
> this article for details:
>    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 visad.*;
>> import visad.util.*;
>> import visad.java2d.DisplayImplJ2D;
>> 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)
>>    throws RemoteException, VisADException,IOException{
>>
>>    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);
>>
>>    display.addMap( latMap );
>>    display.addMap( lonMap );
>>    display.addMap( tempMap );
>>
>>    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 );
>>
>>    display.addReference( data_ref );
>>    LabeledColorWidget widget =
>>      new LabeledColorWidget(new ColorMapWidget(tempMap, false));
>>
>>    JFrame jframe = new JFrame("DISPLAY");
>>    jframe.getContentPane().setLayout(new FlowLayout());
>>    jframe.getContentPane().add(display.getComponent());
>>    jframe.getContentPane().add(widget);
>>
>>
>>    jframe.setSize(300,550);
>>    jframe.setVisible(true);
>>
>> }
>>
>>
>>  public static void main(String[] args)
>>    throws RemoteException, VisADException,IOException
>>  {
>>    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
>> >> >> advance.
>> >> >>
>> >> >> Birinchi
>> >> >>
>> >> >> _______________________________________________
>> >> >> visad mailing list
>> >> >> visad@xxxxxxxxxxxxxxxx
>> >> >> For list information, to unsubscribe, visit:
>> >> >> http://www.unidata.ucar.edu/mailing_lists/
>> >> >>
>> >> >>
>> >> >
>> >>
>> >
>>
>