[ncl-talk] Problem creating custom colortable

Rick Brownrigg brownrig at ucar.edu
Thu Mar 8 16:19:14 MST 2018


Actually, I do have a work-around -- if you are defining the colormap
programmatically, and want to clean up the color_tables directory
afterwards,. why not bypass the whole writing-to-file step and pass your
colormap to NCL via gsn_define_colormap()?

http://ncl.ucar.edu/Document/Graphics/Interfaces/gsn_define_colormap.shtml

RB

On Thu, Mar 8, 2018 at 4:15 PM, Rick Brownrigg <brownrig at ucar.edu> wrote:

> Hi David,
>
> As near as I can tell from studying the code, you are correct -- early on
> in NCL's initialization, the list of available colormaps is loaded into a
> list. The reasons for doing this so early on strike me as a bit odd,
> because this is wasted effort in the case of scripts that never generate
> graphics.  But there it is -- it would be a very low priority task to
> re-engineer this.  Without knowing more about your constraints, I don't
> offhand have a work-around to suggest.
>
> Rick
>
> On Thu, Mar 8, 2018 at 9:41 AM, Vollaro, David <dvollaro at albany.edu>
> wrote:
>
>> Hi,
>>
>>
>> I am having an issue having my NCL script "see" my custom-generated
>> colortable.  I run the script(below) to generate a custom color table,
>> check my NCARG colortable path and check if the table-file is located in my
>> path.  I then plot out the color table and then delete the .rgb file.  The
>> issue is that when I run the script I get the dreaded error
>>
>>
>> fatal:CvtStringToCmap:Unable to convert string "tstcolx" to ColorMap
>>
>>
>> If I have an older version of tstcolx.rgb in the color_table dir then it
>> uses that version instead of the newly created one.  It almost seems like
>> NCL generates a listing of all color tables when it is initially called and
>> uses that list when the script runs, ignoring any updates to the
>> color_table directory.  I am running NCL v6.3.0...Thank you
>>
>>
>>
>> Dave Vollaro
>>
>>
>> ; coltab-make.ncl
>> ; date: 12/16
>> ; Will generate a cusstom color table, copy it to the colortab dir and
>> plot it...
>>
>>
>>
>> undef("make_coltbl_custom")
>> ;;##########################################################
>> #################;;
>> function make_coltbl_custom(ofile:string,T0:numeric,T[*],icol:numeric
>> ,icolor0[3][*]:numeric,opt:logical)
>> ; make_coltab_custom.ncl
>> ; DJV  10/16
>> ; This function will create a Color Table in NCL format
>> ;
>> begin
>>   Tk0 = 273+T0              ;temp above which use grayscale
>>   output = ofile+".rgb"
>>   ncolor = 239
>>
>> ; ********************  User Temp levels and Colors ***************
>>   Tk = T+273
>>   Tloc = new((/icol/),"integer")
>>   icolor = icolor0*255
>> ; *********** establish output color array and initialize **********
>>   colors = new((/ncolor,3/), "float")
>>   colors(:,0) = 0
>>   colors(:,1) = 0
>>   colors(:,2) = 0
>>
>> ; white and black occupy locs 0,1
>> ;;#############  Grayscale Definition Section (RGB 0-1) ################
>> ; Find the location of 1st user-override of IR table and set all values
>> ; warmer than Tk0 to grayscale
>>
>>   if (Tk0.ge.242.5) then
>>    Bloc = floattoint((247.-Tk0)*2.) + 166
>>   end if
>>   if (Tk0.le.242.) then
>>    Bloc = floattoint(242.-Tk0) + 176
>>   end if
>>   print("11st color="+Bloc)
>> ; fspan will interp vals from 1 to 0 over ncolor-2pts.
>>   colors(2:(Bloc-1), 0) = fspan(2,Bloc-1,Bloc-2)
>>   colors(2:(Bloc-1), 1) = fspan(2,Bloc-1,Bloc-2)
>>   colors(2:(Bloc-1), 2) = fspan(2,Bloc-1,Bloc-2)
>> ;;################### END GRAYSCALE DEFINITION  ####################
>>
>> ;;#############  COLOR DEFINITION SECTION (RGB 0-1) ################
>>   do i=0,icol-1
>>    if (Tk(i).ge.242.5) then
>>     Tloc(i) = floattoint((247.-Tk(i))*2.) + 166
>>    end if
>>    if (Tk(i).le.242.) then
>>     Tloc(i) = floattoint(242.-Tk(i)) + 176
>>    end if
>>    if (i.eq.0.and.T(i).eq.999) then
>>     Tloc(i) = 0
>>    end if
>>    if (i.eq.icol-1.and.T(i).eq.999) then
>>     Tloc(i) = ncolor
>>    end if
>>    print(Bloc+" "+Tloc(i))
>>    colors( Bloc:(Tloc(i)-1), 0) = icolor(i,0)
>>    colors( Bloc:(Tloc(i)-1), 1) = icolor(i,1)
>>    colors( Bloc:(Tloc(i)-1), 2) = icolor(i,2)
>>    Bloc=Tloc(i)
>>   end do
>> ;;###################### END COLOR DEFINITION  #####################
>>
>>   print("ncolors="+ncolor)
>>   print("# r g b")
>>   fmtx       = "3(f8.2,1x)"
>>   opt        = True
>>   opt at title  = "# r g b"
>>   opt at tspace = 10
>>   opt at fout = "fff"
>>   write_matrix (colors, fmtx, opt)
>>   sys_cmd = "echo ncolors="+ncolor+" > "+ofile+" ; cat "+opt at fout+"
>> >>"+ofile
>>   system(sys_cmd)
>> ;;############################ clean up ##############################
>> ######;;
>>   sys_cmd = "echo cleaning up "+" ; rm "+opt at fout+"; mv "+ofile+"
>> "+ofile+".rgb"
>>   system(sys_cmd)
>>   return(opt)
>> end
>>
>> ;##############################  MAIN PROGRAM
>>  ###########################;;
>> begin
>>  out_type="X11"
>> ; ******************** User def color table section ****************
>>  rescolor = True       ;If False then will use default IR coltbl
>>  T0 = 20              ;Grayscale Temp value(warmer temps use grayscale)
>>  numtemps = 3          ;Number of color temp values
>>  temps = (/0.,-40.,999./) ;User deff temp values to color 999=go to end
>>  colors0 = (/(/1,0,0/),(/0,1,0/),(/0,0,1/)/)      ;r,g,b 0-1
>>  if (rescolor) then
>>   colfile = make_coltbl_custom("~/NCL/color_tables/tstcolx",T0,temps,
>> numtemps,colors0,rescolor)
>>   color_table = "~/NCL/color_tables/tstcolx.rgb"
>>  end if
>> ; ******************************************************************
>>  print(color_table)
>>   system("ls -al ~/NCL/color_tables/tst*")
>>   system("env |grep NCARG")
>>   wks = gsn_open_wks(out_type, "ddd")
>>   gsn_define_colormap(wks,"tstcolx")
>>   gsn_draw_colormap(wks)
>>  system("\rm -f ~/NCL/color_tables/tstcolx.rgb ")
>> end
>>
>>
>>
>>
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20180308/48f4a749/attachment.html>


More information about the ncl-talk mailing list