<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Ryan O on the Cloudmasked Data</title>
	<atom:link href="http://climateaudit.org/2009/04/05/ryan-o-on-the-cloudmasked-data/feed/" rel="self" type="application/rss+xml" />
	<link>http://climateaudit.org/2009/04/05/ryan-o-on-the-cloudmasked-data/</link>
	<description>by Steve McIntyre</description>
	<lastBuildDate>Wed, 19 Jun 2013 14:52:05 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Lars Baath</title>
		<link>http://climateaudit.org/2009/04/05/ryan-o-on-the-cloudmasked-data/#comment-181491</link>
		<dc:creator><![CDATA[Lars Baath]]></dc:creator>
		<pubDate>Mon, 20 Apr 2009 17:45:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.climateaudit.org/?p=5678#comment-181491</guid>
		<description><![CDATA[Steve, here is a paper which you should follow up on.
 http://www.news.com.au/story/0,,25348657-401,00.html]]></description>
		<content:encoded><![CDATA[<p>Steve, here is a paper which you should follow up on.<br />
 <a href="http://www.news.com.au/story/0" rel="nofollow">http://www.news.com.au/story/0</a>,,25348657-401,00.html</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan O</title>
		<link>http://climateaudit.org/2009/04/05/ryan-o-on-the-cloudmasked-data/#comment-181490</link>
		<dc:creator><![CDATA[Ryan O]]></dc:creator>
		<pubDate>Wed, 15 Apr 2009 00:14:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.climateaudit.org/?p=5678#comment-181490</guid>
		<description><![CDATA[Jeff, WordPress boogered up the script.  Maybe I&#039;ll take a page out of Steve&#039;s book and start calling it StygPress (not to be confused with SteigPress).  Anyway, here&#039;s a text version which should work:
.
http://www.filefactory.com/file/agbf06d/n/plt_map_R]]></description>
		<content:encoded><![CDATA[<p>Jeff, WordPress boogered up the script.  Maybe I&#8217;ll take a page out of Steve&#8217;s book and start calling it StygPress (not to be confused with SteigPress).  Anyway, here&#8217;s a text version which should work:<br />
.<br />
<a href="http://www.filefactory.com/file/agbf06d/n/plt_map_R" rel="nofollow">http://www.filefactory.com/file/agbf06d/n/plt_map_R</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: curious</title>
		<link>http://climateaudit.org/2009/04/05/ryan-o-on-the-cloudmasked-data/#comment-181489</link>
		<dc:creator><![CDATA[curious]]></dc:creator>
		<pubDate>Tue, 14 Apr 2009 22:35:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.climateaudit.org/?p=5678#comment-181489</guid>
		<description><![CDATA[Jeff and Ryan - FWIW I wonder about the terminology of &quot;reconstruction&quot;? It has a ring of credibility to it which the results of some of the papers being audited don&#039;t seem to warrant. I&#039;m not sure what would be better - simulation maybe? - but I like the idea of doing a known and verifiable example for comparison.]]></description>
		<content:encoded><![CDATA[<p>Jeff and Ryan &#8211; FWIW I wonder about the terminology of &#8220;reconstruction&#8221;? It has a ring of credibility to it which the results of some of the papers being audited don&#8217;t seem to warrant. I&#8217;m not sure what would be better &#8211; simulation maybe? &#8211; but I like the idea of doing a known and verifiable example for comparison.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan O</title>
		<link>http://climateaudit.org/2009/04/05/ryan-o-on-the-cloudmasked-data/#comment-181488</link>
		<dc:creator><![CDATA[Ryan O]]></dc:creator>
		<pubDate>Tue, 14 Apr 2009 22:14:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.climateaudit.org/?p=5678#comment-181488</guid>
		<description><![CDATA[Haha.  :)  We&#039;ll all be crediting each other every time we post on Antarctica.
.
BTW, feel free to use my data if you want.  I have to play with it some more because the corrections to the groups cause some artifacting where the groups merge.  It&#039;s not too bad, but I&#039;d like to do some finer-tuning.
.
Also, I&#039;ve completed a script combining your R reconstruction scripts and Steve&#039;s porting of RegEM to R.  I need to clean it up, but at the end, we&#039;ll have a function that will take any data set we want and perform the whole reconstruction all in R - Antarctica or otherwise.  Takes about 2 minutes to run.
.
I&#039;m thinking of generating a fake data set with all known quantities, deleting a bunch of them, and running it through the recon function.  It would help demonstrate quite clearly what you&#039;ve been saying at the Air Vent - similar to the way you generated hockey sticks from noise.
.
As a final touch, I was planning on using it in a real-world situation, like Australia or something, and showing how RegEM/Steigian-PCA booger the whole thing up.]]></description>
		<content:encoded><![CDATA[<p>Haha.  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   We&#8217;ll all be crediting each other every time we post on Antarctica.<br />
.<br />
BTW, feel free to use my data if you want.  I have to play with it some more because the corrections to the groups cause some artifacting where the groups merge.  It&#8217;s not too bad, but I&#8217;d like to do some finer-tuning.<br />
.<br />
Also, I&#8217;ve completed a script combining your R reconstruction scripts and Steve&#8217;s porting of RegEM to R.  I need to clean it up, but at the end, we&#8217;ll have a function that will take any data set we want and perform the whole reconstruction all in R &#8211; Antarctica or otherwise.  Takes about 2 minutes to run.<br />
.<br />
I&#8217;m thinking of generating a fake data set with all known quantities, deleting a bunch of them, and running it through the recon function.  It would help demonstrate quite clearly what you&#8217;ve been saying at the Air Vent &#8211; similar to the way you generated hockey sticks from noise.<br />
.<br />
As a final touch, I was planning on using it in a real-world situation, like Australia or something, and showing how RegEM/Steigian-PCA booger the whole thing up.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Id</title>
		<link>http://climateaudit.org/2009/04/05/ryan-o-on-the-cloudmasked-data/#comment-181487</link>
		<dc:creator><![CDATA[Jeff Id]]></dc:creator>
		<pubDate>Tue, 14 Apr 2009 21:54:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.climateaudit.org/?p=5678#comment-181487</guid>
		<description><![CDATA[Great, now I&#039;ll have to credit RomanM, RyanO, SteveM and JeffC every time I map something.

The maps look great thanks for this.]]></description>
		<content:encoded><![CDATA[<p>Great, now I&#8217;ll have to credit RomanM, RyanO, SteveM and JeffC every time I map something.</p>
<p>The maps look great thanks for this.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan O</title>
		<link>http://climateaudit.org/2009/04/05/ryan-o-on-the-cloudmasked-data/#comment-181486</link>
		<dc:creator><![CDATA[Ryan O]]></dc:creator>
		<pubDate>Tue, 14 Apr 2009 21:45:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.climateaudit.org/?p=5678#comment-181486</guid>
		<description><![CDATA[Cool.  I&#039;ll take a look later tonight.
.
In the meantime, I generalized Steve&#039;s mapping script to add some functionality without having to reprogram it each time you want to do something different.
.
First, you set your labels:  map.lbls=c(&quot;Deg C/Decade&quot;, &quot;Trends (1957-2006)&quot;, &quot;Test Recon&quot;), where [1] is the units for the legend, [2] is the main title, and [3] is the subtitle.
.
The base settings &quot;plt.map(trends2)&quot; gives you a plot with a scale of +/- 1 and a color change every 0.1:
.

.
Color scale too wide?  Set your scale limits with argument &lt;b&gt;mv&lt;/b&gt;: &quot;plt.map(trends2, mv=.25)&quot;:
.

.
Want smoother colors?  Set the number of divisions on each side of zero with argument &lt;b&gt;divs&lt;/b&gt;:  &quot;plt.map(trends2, mv=.25, divs=24)&quot;:
.

.
Still not smooth enough?  Try &quot;plt.map(trends2, mv=.25, divs=1000)&quot;:
.

.
Want the color scale bigger or you want to move it?  The &lt;b&gt;x&lt;/b&gt; and &lt;b&gt;y&lt;/b&gt; arguments set the upper left corner, and the &lt;b&gt;sl&lt;/b&gt; argument scales the box.  You can scale the text with the &lt;b&gt;st&lt;/b&gt; argument:  &quot;plt.map(trends2, mv=.25, x=-.5, y=-.3, sl=1.7, st=1.7)&quot;:
.

.
For plotting dimensionless quantities - like eigenvectors - it&#039;s sometimes convenient to normalize them so features clearly stand out.  Just set argument &lt;b&gt;norm&lt;/b&gt; to TRUE and the plot will normalize for you (without disrupting your data): &quot;plt.map(trends2, norm=TRUE, divs=1000)&quot;:
.

.
Now let&#039;s say you want to highlight a certain range in the graph - like from -0.7 to -0.4.  Just use argument &lt;b&gt;hlite&lt;/b&gt;: &quot;plt.map(trends2, norm=TRUE, divs=1000, hlite=c(-.7, -.4))&quot;:
.

.
Don&#039;t like that color?  Try a different one with &lt;b&gt;hcol&lt;/b&gt;: &quot;plt.map(trends2, norm=TRUE, divs=1000, hlite=c(-.7, -.4), hcol=&quot;yellow&quot;)&quot;:
.

.
The arguments for the function plt.map are:
.
dat:  Data to be plotted
coord:  Coordinates (lon/lat)
mv:  Limit for the color scale
divs:  Number of colors between zero and +mv (and, also, number of colors between -mv and zero)
labels:  Vector of UNITS, MAIN TITLE, SUB TITLE
norm:  If TRUE, normalize the data before plotting
hlite:  Value range to highlight
hcol:  Color to use for highlighting
mbx:  If TRUE, draws a box around the plot
mxs:  If TRUE, places x-y labels on the plot
x, y:  The upper-left corner of the legend
sl:  The scaling factor for the legend box
st:  The scaling factor for the legend text
sp:  The scaling factor for plotted points
s.main:  The scaling factor for the main title
s.sub:  The scaling factor for the subtitle
s.axis:  The scaling factor for the axis labels
.
Here&#039;s the plt.map function:
&lt;blockquote&gt;
plt.map=function(dat, coord=sat.coord, mv=1, divs=9, labels=map.lbls, norm=FALSE, hlite=NA, hcol=&quot;#99FF33&quot;, mbx=TRUE, mxs=FALSE, x=-.3, y=-.35, sl=1, st=1, sp=1, s.main=1, s.sub=1, s.axis=1) {

	library(mapproj)

	###  Set up Antarctic projection and lat/lon lines
	map(&quot;world&quot;, proj=&quot;azequidistant&quot;, orient=c(-90, 0, 0), ylim=c(-90, -60))
	a=seq(-180, 150, 30)
	for(i in 1:length(a)) {lines(mapproject(list(x=rep(a[i], 181), y=c(-90:90))), col=4, lty=2)}
	a=c(-180,0)
	for(i in 1:length(a)) {lines(mapproject(list(x=rep(a[i], 181), y=c(-90:90))), col=4, lty=1)}
	a=seq(-50,-80,-10)
	for(i in 1:4) {lines(mapproject(list(y=rep(a[i], 72), x=seq(-177.5, 177.5,5))), col=4, lty=2)}

	###  Make the color scale
	mapcolors=get.colors(maxval, divs, hlite, hcol)

	###  Normalize the data to a maximum of +/- 1?
	nm=ifelse(norm==TRUE, max(abs(as.vector(dat))), 1)

	###  Assign the color scale
	temp=(divs+2)+(round((divs+1)*(dat/(mv*nm))))
	temp=ifelse(templength(mapcolors), mapcolors[length(mapcolors)], mapcolors[temp])

	###  Plot points
	xy=mapproject(coord[, 1], coord[, 2])
	points(xy$x, xy$y, pch=15, cex=sp, col=temp)

	###  Overlay map
	map(&quot;world&quot;, proj=&quot;azequidistant&quot;, orient=c(-90, 0, 0), ylim=c(-90, -60), fill=FALSE, add=TRUE)

	###  Set up legend and labels
	legends=get.legend(x, y, sl, st, sp, h=hlite, mv, ml=map.lbls, mbx, mxs, mc=mapcolors, divs, s.main, s.sub, s.axis)
}&lt;/blockquote&gt;
.
It first calls the function &lt;b&gt;get.colors&lt;/b&gt; to make the color map.  I broke this out as a separate function because I use it to generate color maps for other purposes as well:
&lt;blockquote&gt;
get.colors=function(mv, divs, hlite, hcol) {

	###  Make color scale
	cold.colors=matrix(nrow=divs); hot.colors=matrix(nrow=divs)
	for(i in 1:divs) {
		lum.ratio=25*(i/divs)
		c1=ifelse(lum.ratio&lt;15, 255-(17*lum.ratio), 0)
		c2=ifelse(lum.ratio0, 255-(12*lum.ratio), 0)
		h2=ifelse(255-(25*lum.ratio)&gt;0, 255-(25*lum.ratio), 0)
		cold.colors[divs+1-i]=rgb(red=c1, green=c1, blue=c2, maxColorValue=255)
		hot.colors[i]=rgb(red=c2, green=h1, blue=h2, maxColorValue=255)
	}
	neut.col=ifelse(divs&lt;11, &quot;#EEEEEE&quot;, &quot;#FFFFFF&quot;)
	mapcolors=c(&quot;darkmagenta&quot;, as.vector(cold.colors), neut.col, as.vector(hot.colors), &quot;black&quot;)
	if(!is.na(hlite[1])) {
		highlmin=(divs+2)+(round((divs+1)*(hlite[1]/(mv))))
		highlmax=(divs+2)+(round((divs+1)*(hlite[2]/(mv))))
		if(!is.na(highlmax)) {mapcolors[highlmin:highlmax]=hcol} else {mapcolors[highlmin]=hcol}
	}
	mapcolors
}&lt;/blockquote&gt;
.
It generates the legend by calling a separate function called &lt;b&gt;get.legend&lt;/b&gt;.  I did it this way to be able to build color scale legends for things other than Antarctica.
&lt;blockquote&gt;
get.legend=function(x, y, sl, st, sp, h, mv, ml, mbx, mxs, mc, divs, s.main, s.sub, s.axis) {
	rect(xleft=x, xright=x+(.6*sl), ytop=y, ybottom=y-(.080*sl), col=&quot;white&quot;)
	points(x=x+(.3*sl), y=y-(.023*sl), col=mc[2+divs], pch=15, cex=1.3*sl)
	for(i in 1:divs) {
		points(x=x+(.3*sl)-(.2/(divs+1))*i*sl, y=y-(.023*sl), col=mc[divs+2-i], pch=15, cex=1.3*sl)
		points(x=x+(.3*sl)+(.2/(divs+1))*i*sl, y=y-(.023*sl), col=mc[divs+2+i], pch=15, cex=1.3*sl)
	}
	points(x=x+(.1*sl), y=y-(.023*sl), col=mc[1], pch=15, cex=1.3*sl)
	points(x=x+(.5*sl), y=y-(.023*sl), col=mc[length(mc)], pch=15, cex=1.3*sl)
	text(x=x+(.3*sl), y=y-(.055*sl), ml[1], cex=st)
	text(x=x+(.085*sl), y=y-(.055*sl), -mv, cex=st)
	text(x=x+(.51*sl), y=y-(.055*sl), mv, cex=st)
	rtext=ifelse(!is.na(h[2]), paste(h[1], &quot;to&quot;, h[2]), h[1])
	xtext=ifelse(!is.na(h[1]), paste(rtext, ml[1], &quot;Highlighted&quot;), NA)
	title(main=ml[2], sub=ml[3], xlab=xtext, cex.main=s.main, cex.sub=s.sub, cex.axis=s.axis)
	if(mbx==TRUE) {box()}
	if(mxs==TRUE) {map.axes()}
}&lt;/blockquote&gt;
.
Anyway, since several of us seem to be plotting similar things but need to change color scales conveniently, I figured I&#039;d throw this out there in case someone else finds it useful.
.
:)]]></description>
		<content:encoded><![CDATA[<p>Cool.  I&#8217;ll take a look later tonight.<br />
.<br />
In the meantime, I generalized Steve&#8217;s mapping script to add some functionality without having to reprogram it each time you want to do something different.<br />
.<br />
First, you set your labels:  map.lbls=c(&#8220;Deg C/Decade&#8221;, &#8220;Trends (1957-2006)&#8221;, &#8220;Test Recon&#8221;), where [1] is the units for the legend, [2] is the main title, and [3] is the subtitle.<br />
.<br />
The base settings &#8220;plt.map(trends2)&#8221; gives you a plot with a scale of +/- 1 and a color change every 0.1:<br />
.</p>
<p>.<br />
Color scale too wide?  Set your scale limits with argument <b>mv</b>: &#8220;plt.map(trends2, mv=.25)&#8221;:<br />
.</p>
<p>.<br />
Want smoother colors?  Set the number of divisions on each side of zero with argument <b>divs</b>:  &#8220;plt.map(trends2, mv=.25, divs=24)&#8221;:<br />
.</p>
<p>.<br />
Still not smooth enough?  Try &#8220;plt.map(trends2, mv=.25, divs=1000)&#8221;:<br />
.</p>
<p>.<br />
Want the color scale bigger or you want to move it?  The <b>x</b> and <b>y</b> arguments set the upper left corner, and the <b>sl</b> argument scales the box.  You can scale the text with the <b>st</b> argument:  &#8220;plt.map(trends2, mv=.25, x=-.5, y=-.3, sl=1.7, st=1.7)&#8221;:<br />
.</p>
<p>.<br />
For plotting dimensionless quantities &#8211; like eigenvectors &#8211; it&#8217;s sometimes convenient to normalize them so features clearly stand out.  Just set argument <b>norm</b> to TRUE and the plot will normalize for you (without disrupting your data): &#8220;plt.map(trends2, norm=TRUE, divs=1000)&#8221;:<br />
.</p>
<p>.<br />
Now let&#8217;s say you want to highlight a certain range in the graph &#8211; like from -0.7 to -0.4.  Just use argument <b>hlite</b>: &#8220;plt.map(trends2, norm=TRUE, divs=1000, hlite=c(-.7, -.4))&#8221;:<br />
.</p>
<p>.<br />
Don&#8217;t like that color?  Try a different one with <b>hcol</b>: &#8220;plt.map(trends2, norm=TRUE, divs=1000, hlite=c(-.7, -.4), hcol=&#8221;yellow&#8221;)&#8221;:<br />
.</p>
<p>.<br />
The arguments for the function plt.map are:<br />
.<br />
dat:  Data to be plotted<br />
coord:  Coordinates (lon/lat)<br />
mv:  Limit for the color scale<br />
divs:  Number of colors between zero and +mv (and, also, number of colors between -mv and zero)<br />
labels:  Vector of UNITS, MAIN TITLE, SUB TITLE<br />
norm:  If TRUE, normalize the data before plotting<br />
hlite:  Value range to highlight<br />
hcol:  Color to use for highlighting<br />
mbx:  If TRUE, draws a box around the plot<br />
mxs:  If TRUE, places x-y labels on the plot<br />
x, y:  The upper-left corner of the legend<br />
sl:  The scaling factor for the legend box<br />
st:  The scaling factor for the legend text<br />
sp:  The scaling factor for plotted points<br />
s.main:  The scaling factor for the main title<br />
s.sub:  The scaling factor for the subtitle<br />
s.axis:  The scaling factor for the axis labels<br />
.<br />
Here&#8217;s the plt.map function:</p>
<blockquote><p>
plt.map=function(dat, coord=sat.coord, mv=1, divs=9, labels=map.lbls, norm=FALSE, hlite=NA, hcol=&#8221;#99FF33&#8243;, mbx=TRUE, mxs=FALSE, x=-.3, y=-.35, sl=1, st=1, sp=1, s.main=1, s.sub=1, s.axis=1) {</p>
<p>	library(mapproj)</p>
<p>	###  Set up Antarctic projection and lat/lon lines<br />
	map(&#8220;world&#8221;, proj=&#8221;azequidistant&#8221;, orient=c(-90, 0, 0), ylim=c(-90, -60))<br />
	a=seq(-180, 150, 30)<br />
	for(i in 1:length(a)) {lines(mapproject(list(x=rep(a[i], 181), y=c(-90:90))), col=4, lty=2)}<br />
	a=c(-180,0)<br />
	for(i in 1:length(a)) {lines(mapproject(list(x=rep(a[i], 181), y=c(-90:90))), col=4, lty=1)}<br />
	a=seq(-50,-80,-10)<br />
	for(i in 1:4) {lines(mapproject(list(y=rep(a[i], 72), x=seq(-177.5, 177.5,5))), col=4, lty=2)}</p>
<p>	###  Make the color scale<br />
	mapcolors=get.colors(maxval, divs, hlite, hcol)</p>
<p>	###  Normalize the data to a maximum of +/- 1?<br />
	nm=ifelse(norm==TRUE, max(abs(as.vector(dat))), 1)</p>
<p>	###  Assign the color scale<br />
	temp=(divs+2)+(round((divs+1)*(dat/(mv*nm))))<br />
	temp=ifelse(templength(mapcolors), mapcolors[length(mapcolors)], mapcolors[temp])</p>
<p>	###  Plot points<br />
	xy=mapproject(coord[, 1], coord[, 2])<br />
	points(xy$x, xy$y, pch=15, cex=sp, col=temp)</p>
<p>	###  Overlay map<br />
	map(&#8220;world&#8221;, proj=&#8221;azequidistant&#8221;, orient=c(-90, 0, 0), ylim=c(-90, -60), fill=FALSE, add=TRUE)</p>
<p>	###  Set up legend and labels<br />
	legends=get.legend(x, y, sl, st, sp, h=hlite, mv, ml=map.lbls, mbx, mxs, mc=mapcolors, divs, s.main, s.sub, s.axis)<br />
}</p></blockquote>
<p>.<br />
It first calls the function <b>get.colors</b> to make the color map.  I broke this out as a separate function because I use it to generate color maps for other purposes as well:</p>
<blockquote><p>
get.colors=function(mv, divs, hlite, hcol) {</p>
<p>	###  Make color scale<br />
	cold.colors=matrix(nrow=divs); hot.colors=matrix(nrow=divs)<br />
	for(i in 1:divs) {<br />
		lum.ratio=25*(i/divs)<br />
		c1=ifelse(lum.ratio&lt;15, 255-(17*lum.ratio), 0)<br />
		c2=ifelse(lum.ratio0, 255-(12*lum.ratio), 0)<br />
		h2=ifelse(255-(25*lum.ratio)&gt;0, 255-(25*lum.ratio), 0)<br />
		cold.colors[divs+1-i]=rgb(red=c1, green=c1, blue=c2, maxColorValue=255)<br />
		hot.colors[i]=rgb(red=c2, green=h1, blue=h2, maxColorValue=255)<br />
	}<br />
	neut.col=ifelse(divs&lt;11, &#8220;#EEEEEE&#8221;, &#8220;#FFFFFF&#8221;)<br />
	mapcolors=c(&#8220;darkmagenta&#8221;, as.vector(cold.colors), neut.col, as.vector(hot.colors), &#8220;black&#8221;)<br />
	if(!is.na(hlite[1])) {<br />
		highlmin=(divs+2)+(round((divs+1)*(hlite[1]/(mv))))<br />
		highlmax=(divs+2)+(round((divs+1)*(hlite[2]/(mv))))<br />
		if(!is.na(highlmax)) {mapcolors[highlmin:highlmax]=hcol} else {mapcolors[highlmin]=hcol}<br />
	}<br />
	mapcolors<br />
}</p></blockquote>
<p>.<br />
It generates the legend by calling a separate function called <b>get.legend</b>.  I did it this way to be able to build color scale legends for things other than Antarctica.</p>
<blockquote><p>
get.legend=function(x, y, sl, st, sp, h, mv, ml, mbx, mxs, mc, divs, s.main, s.sub, s.axis) {<br />
	rect(xleft=x, xright=x+(.6*sl), ytop=y, ybottom=y-(.080*sl), col=&#8221;white&#8221;)<br />
	points(x=x+(.3*sl), y=y-(.023*sl), col=mc[2+divs], pch=15, cex=1.3*sl)<br />
	for(i in 1:divs) {<br />
		points(x=x+(.3*sl)-(.2/(divs+1))*i*sl, y=y-(.023*sl), col=mc[divs+2-i], pch=15, cex=1.3*sl)<br />
		points(x=x+(.3*sl)+(.2/(divs+1))*i*sl, y=y-(.023*sl), col=mc[divs+2+i], pch=15, cex=1.3*sl)<br />
	}<br />
	points(x=x+(.1*sl), y=y-(.023*sl), col=mc[1], pch=15, cex=1.3*sl)<br />
	points(x=x+(.5*sl), y=y-(.023*sl), col=mc[length(mc)], pch=15, cex=1.3*sl)<br />
	text(x=x+(.3*sl), y=y-(.055*sl), ml[1], cex=st)<br />
	text(x=x+(.085*sl), y=y-(.055*sl), -mv, cex=st)<br />
	text(x=x+(.51*sl), y=y-(.055*sl), mv, cex=st)<br />
	rtext=ifelse(!is.na(h[2]), paste(h[1], &#8220;to&#8221;, h[2]), h[1])<br />
	xtext=ifelse(!is.na(h[1]), paste(rtext, ml[1], &#8220;Highlighted&#8221;), NA)<br />
	title(main=ml[2], sub=ml[3], xlab=xtext, cex.main=s.main, cex.sub=s.sub, cex.axis=s.axis)<br />
	if(mbx==TRUE) {box()}<br />
	if(mxs==TRUE) {map.axes()}<br />
}</p></blockquote>
<p>.<br />
Anyway, since several of us seem to be plotting similar things but need to change color scales conveniently, I figured I&#8217;d throw this out there in case someone else finds it useful.<br />
. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Id</title>
		<link>http://climateaudit.org/2009/04/05/ryan-o-on-the-cloudmasked-data/#comment-181485</link>
		<dc:creator><![CDATA[Jeff Id]]></dc:creator>
		<pubDate>Tue, 14 Apr 2009 14:50:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.climateaudit.org/?p=5678#comment-181485</guid>
		<description><![CDATA[Ryan,

I just finished a short post on the satellite vs ground trends showing a warming trend in the sat data as compared to the surface stations.

http://noconsensus.wordpress.com/2009/04/14/warming-the-raw-sat-data/

I&#039;ve got a request to do a reconstruction without the peninsula data which I&#039;ll do and then I&#039;d like to try your data in some of the reconstructions.]]></description>
		<content:encoded><![CDATA[<p>Ryan,</p>
<p>I just finished a short post on the satellite vs ground trends showing a warming trend in the sat data as compared to the surface stations.</p>
<p><a href="http://noconsensus.wordpress.com/2009/04/14/warming-the-raw-sat-data/" rel="nofollow">http://noconsensus.wordpress.com/2009/04/14/warming-the-raw-sat-data/</a></p>
<p>I&#8217;ve got a request to do a reconstruction without the peninsula data which I&#8217;ll do and then I&#8217;d like to try your data in some of the reconstructions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ryan O</title>
		<link>http://climateaudit.org/2009/04/05/ryan-o-on-the-cloudmasked-data/#comment-181484</link>
		<dc:creator><![CDATA[Ryan O]]></dc:creator>
		<pubDate>Sun, 12 Apr 2009 21:15:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.climateaudit.org/?p=5678#comment-181484</guid>
		<description><![CDATA[Re: &lt;a href=&quot;#comment-337265&quot; rel=&quot;nofollow&quot;&gt;Jeff Id (#33)&lt;/a&gt;, Everything is consistent with the models.  That&#039;s the great thing about models.  They are always consistent.  Even when they&#039;re not.  Inconsistency is consistent.  :)]]></description>
		<content:encoded><![CDATA[<p>Re: <a href="#comment-337265" rel="nofollow">Jeff Id (#33)</a>, Everything is consistent with the models.  That&#8217;s the great thing about models.  They are always consistent.  Even when they&#8217;re not.  Inconsistency is consistent.  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeff Id</title>
		<link>http://climateaudit.org/2009/04/05/ryan-o-on-the-cloudmasked-data/#comment-181483</link>
		<dc:creator><![CDATA[Jeff Id]]></dc:creator>
		<pubDate>Sun, 12 Apr 2009 20:21:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.climateaudit.org/?p=5678#comment-181483</guid>
		<description><![CDATA[Looks great Ryan,  I need to take some time and run your scripts.

In the meantime I&#039;ve been creating new reconstructions based as much as possible on surface station data.  This reconstruction is based on a closest station algorithm and uses no satellite data at all.

http://noconsensus.wordpress.com/2009/04/12/closest-station-antarctic-reconstruction/

The trend drops all the way down to 0.052 C/decade.  Everywhere we look the trend comes out less than reported.

I bet it&#039;s consistent with the models though.]]></description>
		<content:encoded><![CDATA[<p>Looks great Ryan,  I need to take some time and run your scripts.</p>
<p>In the meantime I&#8217;ve been creating new reconstructions based as much as possible on surface station data.  This reconstruction is based on a closest station algorithm and uses no satellite data at all.</p>
<p><a href="http://noconsensus.wordpress.com/2009/04/12/closest-station-antarctic-reconstruction/" rel="nofollow">http://noconsensus.wordpress.com/2009/04/12/closest-station-antarctic-reconstruction/</a></p>
<p>The trend drops all the way down to 0.052 C/decade.  Everywhere we look the trend comes out less than reported.</p>
<p>I bet it&#8217;s consistent with the models though.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Antarctic, an engineers reconstruction. &#171; The Air Vent</title>
		<link>http://climateaudit.org/2009/04/05/ryan-o-on-the-cloudmasked-data/#comment-181482</link>
		<dc:creator><![CDATA[The Antarctic, an engineers reconstruction. &#171; The Air Vent]]></dc:creator>
		<pubDate>Fri, 10 Apr 2009 23:45:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.climateaudit.org/?p=5678#comment-181482</guid>
		<description><![CDATA[[...] and Ryan O have found very real reasons to question the trends in the satellite data HERE, HERE and HERE. There are apparent trends and steps which occur between different satellites and instrument [...]]]></description>
		<content:encoded><![CDATA[<p>[...] and Ryan O have found very real reasons to question the trends in the satellite data HERE, HERE and HERE. There are apparent trends and steps which occur between different satellites and instrument [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
