[Thread Prev][Thread Next][Index]
Re: [ferret_users] Palette
Hi Angela,
| > I would like to know if there is an easy way to invert the default
| > palette used in plots. [. . .]
As David described, you can invert any palette manually.
Just in case you or anybody else is interested, I'm attaching
a script to invert a palette.
>From a palette "myfavorite.spk", say, it generates
an inverse palette "inverse-myfavorite.spk". It
handles only ordinary (percentage) palettes, that is, it
cannot handle by_value or by_level ones. You need a
Ruby-language interpreter.
Regards,
Ryo
#!/usr/bin/ruby
#-- return the next non-comment, non-blank line.
def next_line(f)
line = nil
while (line = f.gets) && (line =~ /^\s*$/ or line =~ /^\s*!/)
end
return line
end
#-- Main loop over palette files ---
ARGV.each {|fname|
inf = File.open(fname,"r")
line = next_line(inf) #-- first non-comment line
begin
if ! line then raise "#{fname}: empty? Skipping. . ." end
case line
when /\s*(rgb_mapping\s+by_value)/i, /\s*(rgb_mapping\s+by_level)/i
raise "#{fname}: cannot invert #{$1} ."
end
rescue RuntimeError => err
$stderr.puts err
inf.close
next
end
ofname = "inverse-" + File.basename(fname)
ouf = File.open(ofname, "w")
if line =~ /\s*(rgb_mapping)/i
ouf.puts line
line = next_line(inf)
end
buff = Array.new
while line
v, *rest = line.split
buff << "#{100 - v.to_f} #{rest.join(' ')}"
line = next_line(inf)
end
inf.close
buff.reverse_each {|e| ouf.puts e }
ouf.close
}
[Thread Prev][Thread Next][Index]
Contact Us
Dept of Commerce /
NOAA /
OAR /
PMEL /
TMAP
Privacy Policy | Disclaimer | Accessibility Statement