<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>刘思喆 @ 贝吉塔行星 &#187; heatmap</title>
	<atom:link href="http://www.bjt.name/tag/heatmap/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bjt.name</link>
	<description>R 语言，数据挖掘，数据可视化</description>
	<lastBuildDate>Wed, 30 Nov 2011 15:43:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>NBA联盟50位顶级球员的指标表现</title>
		<link>http://www.bjt.name/2010/01/nba-top-50-scorers-performance/</link>
		<comments>http://www.bjt.name/2010/01/nba-top-50-scorers-performance/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 16:32:58 +0000</pubDate>
		<dc:creator>刘思喆</dc:creator>
				<category><![CDATA[图型展示]]></category>
		<category><![CDATA[篮球]]></category>
		<category><![CDATA[flowingdata]]></category>
		<category><![CDATA[heatmap]]></category>
		<category><![CDATA[nba]]></category>
		<category><![CDATA[yaoming]]></category>

		<guid isPermaLink="false">http://www.bjt.name/?p=10539</guid>
		<description><![CDATA[有点标题党的嫌疑，实际是介绍如何使用 R 绘制 heatmap 的文章。 今天无意间在Flowingdata看到一篇关于如何使用 R 来做 heatmap 的文章（请移步到这里）。虽然 heatmap 只是 R 中一个很普通的图形函数，但这个例子使用了2008-2009赛季 NBA 50个顶级球员数据做了一个极佳的演示，效果非常不错。对 R 大致了解的童鞋可以直接在 R console 上敲 ？heatmap 直接查看帮助即可。 没有接触过 R 的童鞋继续围观，下面会仔细介绍如何使用 R 实现 NBA 50位顶级球员指标表现热图： 关于 heatmap，中文一般翻译为“热图”，其统计意义wiki上解释的很清楚： A heat map is a graphical representation of data where the values taken by a variable in a two-dimensional map are represented as <a href='http://www.bjt.name/2010/01/nba-top-50-scorers-performance/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>有点标题党的嫌疑，实际是介绍如何使用 R 绘制 heatmap 的文章。</p>
<p>今天无意间在<a href="http://flowingdata.com/about/" target="_blank">Flowingdata</a>看到一篇关于如何使用 R 来做 heatmap 的文章（请移步到<a href="http://flowingdata.com/2010/01/21/how-to-make-a-heatmap-a-quick-and-easy-solution/" target="_blank">这里</a>）。虽然 heatmap 只是 R 中一个很普通的图形函数，但这个例子使用了2008-2009赛季 NBA 50个顶级球员数据做了一个极佳的演示，效果非常不错。对 R 大致了解的童鞋可以直接在 R console 上敲</p>
<p><strong>？heatmap</strong></p>
<p>直接查看帮助即可。</p>
<p>没有接触过 R 的童鞋继续围观，下面会仔细介绍如何使用 R 实现 NBA 50位顶级球员指标表现热图：</p>
<p>关于 heatmap，中文一般翻译为“热图”，其统计意义<a href="http://en.wikipedia.org/wiki/Heatmap" target="_blank">wiki</a>上解释的很清楚：</p>
<blockquote><p>A <strong>heat map</strong> is a graphical representation of data where the values taken by a <a title="Variable (mathematics)" href="http://en.wikipedia.org/wiki/Variable_%28mathematics%29">variable</a> in a two-dimensional map are represented as colors.Heat maps originated in 2D displays of the values in a data matrix. Larger values were represented by small dark gray or black squares (pixels) and smaller values by lighter squares.</p></blockquote>
<p>下面这个图即是<a href="http://flowingdata.com/about/" target="_blank">Flowingdata</a>用一些 <a href="http://www.r-project.org" target="_blank">R</a> 函数对2008-2009 赛季NBA 50名顶级球员指标做的一个热图（点击参看<a href="http://www.bjt.name/wp-content/uploads/2010/01/heatmap1.png" target="_blank">大图</a>）：</p>
<p style="text-align: center;"><a href="http://www.bjt.name/wp-content/uploads/2010/01/heatmap1.png"></a></p>
<p style="text-align: center;"><a href="http://www.bjt.name/wp-content/uploads/2010/01/heatmap1.png"><img class="aligncenter size-medium wp-image-10542" title="heatmap1" src="http://www.bjt.name/wp-content/uploads/2010/01/heatmap1-300x289.png" alt="" width="300" height="289" /></a></p>
<p><strong>先解释一下数据：</strong></p>
<p>这里共列举了50位球员，估计爱好篮球的童鞋对上图右边的每个名字都会耳熟能详。这些球员每个人会有19个指标，包括打了几场球（G)、上场几分钟（MIN)、得分（PTS)……这样就行成了一个50行×19列的矩阵。但问题是，数据有些多，需要使用一种比较好的办法来展示，So it comes, heatmap!</p>
<p><strong>简单的说明：</strong></p>
<p>比如从上面的热图上观察得分前3名（Wade、James、Bryant）PTS、FGM、FGA比较高，但Bryant的FTM、FTA和前两者就差一些；Wade在这三人中STL是佼佼者；而James的DRB和TRB又比其他两人好一些……</p>
<p>姚明的3PP（3 Points Percentage）这条数据很有意思，非常出色！仔细查了一下这个数值，居然是100%。仔细回想一下，似乎那个赛季姚明好像投过一个3分，并且中了，然后再也没有3p。这样本可真够小的！</p>
<p><strong>最后是如何做这个热图（做了些许修改）：</strong></p>
<p><span style="color: #993366;">Step 0. Download R</span></p>
<p>R 官网：<a href="http://www.r-project.org">http://www.r-project.org</a>，它是免费的。官网上面提供了Windows,Mac,Linux版本（或源代码）的R程序。</p>
<p><span style="color: #993366;">Step 1. Load the data</span></p>
<p>R 可以支持网络路径，使用读取csv文件的函数read.csv。</p>
<p>读取数据就这么简单：</p>
<pre lang="rsplus">read.csv("http://datasets.flowingdata.com/ppg2008.csv", sep=",")</pre>
<p><span style="color: #993366;">Step 2. Sort data</span></p>
<p>按照球员得分，将球员从小到大排序：</p>
<pre lang="rsplus">nba <- nba[order(nba$PTS),]</pre>
<p><code>当然也可以选择MIN,BLK,STL之类指标</code></p>
<p><span style="color: #993366;">Step 3. Prepare data</span></p>
<p>把行号换成行名（球员名称）：</p>
<pre lang="rsplus">row.names(nba) <- nba$Name</pre>
<p><code>去掉第一列行号：</code></p>
<pre lang="rsplus">nba <- nba[,2:20] # or nba <- nba[,-1]</pre>
<p><span style="color: #993366;">Step 4. Prepare data, again</span></p>
<p>把 data frame 转化为我们需要的矩阵格式：</p>
<pre lang="rsplus">nba_matrix <- data.matrix(nba)</pre>
<p><span style="color: #993366;">Step 5. Make a heatmap</span></p>
<p># R 的默认还会在图的左边和上边绘制 dendrogram，使用Rowv=NA, Colv=NA去掉</p>
<pre lang="rsplus">heatmap(nba_matrix, Rowv=NA, Colv=NA, col=cm.colors(256), revC=FALSE, scale='column')</pre>
<p><code>这样就得到了上面的那张热图。</code></p>
<p><span style="color: #993366;">Step 6. Color selection</span></p>
<p>或者想把热图中的颜色换一下：</p>
<pre lang="rsplus">heatmap(nba_matrix, Rowv=NA, Colv=NA, col=heat.colors(256), revC=FALSE, scale="column", margins=c(5,10))</pre>
<p><code><strong>延伸阅读：</strong></code></p>
<p><code>来自于kerimcan和<a href="http://periscopic.com/">krees</a>这些人的讨论：</code></p>
<p><code><strong><a rel="nofollow" href="http://sekhon.polisci.berkeley.edu/stats/html/heatmap.html">http://sekhon.polisci.berkeley.edu/stats/html/heatmap.html</a><br />
<a rel="nofollow" href="http://enotacoes.wordpress.com/2007/11/16/easy-guide-to-drawing-heat-maps-to-pdf-with-r-with-color-key/">http://enotacoes.wordpress.com/2007/11/16/easy-guide-to-drawing-heat-maps-to-pdf-with-r-with-color-key/</a></strong></code></p>
<p><strong>补充：</strong></p>
<p>早上起来发现 David Smith 同样更新了<a href="http://blog.revolution-computing.com/2010/01/how-to-make-a-heat-map-in-r.html" target="_blank">博客</a>。唉，这厮嗅觉也忒灵敏！哈哈<br />
<h3 class='related_post_title'>相关文章：</h3>
<ul class='related_post'>
<li><a href='http://www.bjt.name/2009/03/data-2008-2009-rockets/' title='从数据看2008-2009赛季的火箭队'>从数据看2008-2009赛季的火箭队</a></li>
<li><a href='http://www.bjt.name/2010/01/rockets-heat-assists-network/' title='火箭对热火比赛（20100116）中，火箭球员的助攻网络关系'>火箭对热火比赛（20100116）中，火箭球员的助攻网络关系</a></li>
<li><a href='http://www.bjt.name/2009/02/article-zhang/' title='信陵*张公子'>信陵*张公子</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bjt.name/2010/01/nba-top-50-scorers-performance/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

