<?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>Visualmotive Blog &#187; Visualization</title>
	<atom:link href="http://blog.visualmotive.com/topics/visualization/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.visualmotive.com</link>
	<description>Thoughts on maps and visualization</description>
	<lastBuildDate>Fri, 09 Sep 2011 18:18:48 +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>Mapping Britain with Telephone Calls</title>
		<link>http://blog.visualmotive.com/2010/mapping-britain-telephone-calls/</link>
		<comments>http://blog.visualmotive.com/2010/mapping-britain-telephone-calls/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 15:00:23 +0000</pubDate>
		<dc:creator>Chris Mueller</dc:creator>
				<category><![CDATA[Maps]]></category>
		<category><![CDATA[Visualization]]></category>
		<category><![CDATA[britain]]></category>
		<category><![CDATA[networks]]></category>
		<category><![CDATA[telephone]]></category>

		<guid isPermaLink="false">http://blog.visualmotive.com/?p=433</guid>
		<description><![CDATA[<a href="http://blog.visualmotive.com/2010/mapping-britain-telephone-calls/"><img align="left" hspace="5" width="150" height="150" src="http://blog.visualmotive.com/wp-content/uploads/2010/12/britain_telephones_1-150x150.png" class="alignleft wp-post-image tfe" alt="Telephone calls and regional connections in Great Britain" title="britain_telephones_1" /></a>These maps are fascinating. Have you ever wondered why state or county or city boundaries are drawn where they are? It turns out that administrative and government boundaries are consistent with trends in human relationships; that is, people associate most with others in the same government-defined region. To investigate the geography of human relationships, a [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_434" class="wp-caption alignnone" style="width: 529px"><a href="http://blog.visualmotive.com/wp-content/uploads/2010/12/britain_telephones_1.png"><img class="size-full wp-image-434" title="britain_telephones_1" src="http://blog.visualmotive.com/wp-content/uploads/2010/12/britain_telephones_1.png" alt="Telephone calls and regional connections in Great Britain" width="519" height="600" /></a><p class="wp-caption-text">Telephone calls and regional connections in Great Britain</p></div>
<p>These maps are fascinating.</p>
<p>Have you ever wondered why state or county or city boundaries are drawn where they are? It turns out that administrative and government boundaries are consistent with trends in human relationships; that is, people associate most with others in the same government-defined region.</p>
<p>To investigate the geography of human relationships, a group of researchers has mapped human relationships in Great Britain using telephone calls as a proxy for intensity of relationship. Specifically, Ratti, et al. used total call time (scaled so as to take into account local population densities) as an indication of relationship between two people.</p>
<p>Quoting:</p>
<blockquote>
<div id="_mcePaste">&#8230; we would indeed expect an agreement between the administrative boundaries and those found from human interaction, as they probably evolved together, over many centuries of mutual interplay—cohesive patterns within society promoting change in administrative boundaries and the latter, in turn, affecting human interaction.</div>
</blockquote>
<p>The research was done by Carlo Ratti, Stanislav Sobolevsky, Francesco Calabrese, Clio Andris, Jonathan Reades, Mauro Martino, Rob Claxton, and Steven H. Strogatz. More information can be found here: <a href="http://www.plosone.org/article/info:doi/10.1371/journal.pone.0014248">Redrawing the Map of Great Britain from a Network of Human Interactions.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visualmotive.com/2010/mapping-britain-telephone-calls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Topologies of Linux and E. coli Control Networks</title>
		<link>http://blog.visualmotive.com/2010/topologies-of-linux-e-coli-control-networks/</link>
		<comments>http://blog.visualmotive.com/2010/topologies-of-linux-e-coli-control-networks/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 18:24:40 +0000</pubDate>
		<dc:creator>Chris Mueller</dc:creator>
				<category><![CDATA[Visualization]]></category>
		<category><![CDATA[bacteria]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[networks]]></category>

		<guid isPermaLink="false">http://blog.visualmotive.com/?p=369</guid>
		<description><![CDATA[<a href="http://blog.visualmotive.com/2010/topologies-of-linux-e-coli-control-networks/"><img align="left" hspace="5" width="150" height="150" src="http://blog.visualmotive.com/wp-content/uploads/2010/06/linux_ecoli_control_nets-e1276366933585-150x150.jpg" class="alignleft tfe wp-post-image" alt="Comparing genomes to computer operating systems in terms of the topology and evolution of their regulatory control networks" title="linux_ecoli_control_nets" /></a>A comparison of the Linux call graph hierarchy with the E. coli regulatory network. Researchers at Yale discovered that the Linux control structure is top-heavy, with a few common modules reused often. E coli, by contrast, has limited central control with many specialized "workers" at the bottom of the hierarchy.]]></description>
			<content:encoded><![CDATA[<div id="attachment_371" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.visualmotive.com/wp-content/uploads/2010/06/linux_ecoli_control_nets.jpg"><img class="size-medium wp-image-371" title="linux_ecoli_control_nets" src="http://blog.visualmotive.com/wp-content/uploads/2010/06/linux_ecoli_control_nets-640x197.jpg" alt="Comparing genomes to computer operating systems  in terms of the topology and evolution of  their regulatory control networks" width="640" height="197" /></a><p class="wp-caption-text">Hierarchy of Linux vs E. coli internal network controls</p></div>
<p>A recent paper from the <a href="http://www.pnas.org/">National Academy of Sciences</a> compares the internal control hierarchies of Linux computers with E. coli bacteria. Specifically, the paper compares a snapshot of the Linux call graph to the cell&#8217;s transcriptional regulatory network. The cell&#8217;s network</p>
<blockquote><p>coordinates gene expression in response to environmental and intracellular signals, resulting in the execution of cellular processes such as cell divisions and metabolism.</p></blockquote>
<p>Researchers discovered that the internal bacterial network hierarchy is bottom-heavy, with most of the work performed by many specialized modules, with little direction from the top of the hierarchy.</p>
<p>In contrast, Linux control hierarchies are top-heavy: a few reusable workers at the bottom of the hierarchy are called by many top-level and middle-level components: &#8220;From an engineering point of view, the reuse of common nodes between modules is a cost-effective way to construct a complex system.&#8221;</p>
<p>An interesting conclusion from the paper:</p>
<blockquote><p>As the genome of an organism grows larger, it can reuse its tools more often and thus require fewer and fewer new tools for novel metabolic tasks. In other words, the number of enzymes grows slower than the number of transcription factors when the size of the genome increases. Previous studies have made the related finding that as one moves towards more complex organisms, the transcriptional regulatory network has an increasingly top-heavy structure with a relatively narrow base. Thus, it may be that further analysis will demonstrate the increasing resemblance of more complex eukaryotic regulatory networks to the structure of the Linux call graph.</p></blockquote>
<h4>Reference</h4>
<p>Comparing genomes to computer operating systems in terms of the topology and evolution of their regulatory control networks. Koon-Kiu Yan, Gang Fang, Nitin Bhardwaj, Roger P. Alexander, and Mark Gerstein. Yale University. PNAS, May 18, 2010. [<a href="http://www.pnas.org/content/107/20/9186.full">full article text</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visualmotive.com/2010/topologies-of-linux-e-coli-control-networks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Color Sorting &#8211; Python source code</title>
		<link>http://blog.visualmotive.com/2010/color-sorting-python-code/</link>
		<comments>http://blog.visualmotive.com/2010/color-sorting-python-code/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 13:00:09 +0000</pubDate>
		<dc:creator>Chris Mueller</dc:creator>
				<category><![CDATA[Visualization]]></category>

		<guid isPermaLink="false">http://blog.visualmotive.com/?p=297</guid>
		<description><![CDATA[<a href="http://blog.visualmotive.com/2010/color-sorting-python-code/"><img align="left" hspace="5" width="150" height="150" src="http://blog.visualmotive.com/wp-content/uploads/2010/05/gray2.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>I have had several requests for the Color Sorting code I used to create <a href="http://visualmotive.com/colorsort/">these images</a>. The pixel-based color sorting uses linear and Hilbert sorting techniques in RGB, YIQ, and HSV color spaces. <a href="http://github.com/visualmotive/ColorSorting">ColorSorting</a> is now on Github.]]></description>
			<content:encoded><![CDATA[<p>I have had several requests for the Color Sorting code I used to create <a href="http://visualmotive.com/colorsort/">these images</a>. The pixel-based color sorting uses linear and Hilbert sorting techniques in RGB, YIQ, and HSV color spaces.</p>
<p>So now, <a href="http://github.com/visualmotive/ColorSorting">ColorSorting</a> is now on Github.</p>
<p>The code is not polished, so use at your own risk. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visualmotive.com/2010/color-sorting-python-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Understanding Comics by Scott McCloud</title>
		<link>http://blog.visualmotive.com/2009/understanding-comics-with-scott-mccloud/</link>
		<comments>http://blog.visualmotive.com/2009/understanding-comics-with-scott-mccloud/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 12:00:56 +0000</pubDate>
		<dc:creator>Chris Mueller</dc:creator>
				<category><![CDATA[Visualization]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[comics]]></category>
		<category><![CDATA[metaphor]]></category>

		<guid isPermaLink="false">http://blog.visualmotive.com/?p=288</guid>
		<description><![CDATA[<a href="http://blog.visualmotive.com/2009/understanding-comics-with-scott-mccloud/"><img align="left" hspace="5" width="150" height="150" src="http://blog.visualmotive.com/wp-content/uploads/2009/12/mccloud_understanding_comics-150x150.jpg" class="alignleft wp-post-image tfe" alt="The process of writing comics" title="mccloud_understanding_comics" /></a>"Comics are juxtaposed pictorial and other images in a deliberate sequence, intended to convey information and/or produce an aesthetic response in the viewer." These are my notes from Scott McCloud's excellent book <i>Understanding Comics</i>.]]></description>
			<content:encoded><![CDATA[<div id="attachment_290" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.visualmotive.com/wp-content/uploads/2009/12/mccloud_understanding_comics.jpg"><img class="size-medium wp-image-290" title="mccloud_understanding_comics" src="http://blog.visualmotive.com/wp-content/uploads/2009/12/mccloud_understanding_comics-640x315.jpg" alt="The process of writing comics" width="640" height="315" /></a><p class="wp-caption-text">The process of writing comics</p></div>
<p>What follows are notes and quotations from Scott McCloud&#8217;s excellent book <a href="http://www.amazon.com/Understanding-Comics-Invisible-Scott-Mccloud/dp/006097625X">Understanding Comics</a>. The book describes the art of comic books, but most of the lessons are also applicable to other types visual communication like charts and maps.</p>
<p>Definition: &#8220;Comics are juxtaposed pictorial and other images in a deliberate sequence, intended to convey information and/or produce an aesthetic response in the viewer.&#8221;</p>
<p>Comics use <em>iconic</em> images: sparse representations of reality. Used to allow the reader to inject himself/herself into the narrative.</p>
<div id="attachment_289" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.visualmotive.com/wp-content/uploads/2009/12/mccloud-uc-triangle.jpg"><img class="size-medium wp-image-289" title="mccloud-uc-triangle" src="http://blog.visualmotive.com/wp-content/uploads/2009/12/mccloud-uc-triangle-640x490.jpg" alt="McCloud's triangle of communication. Photographs on the left, written word on the right, abstract icons on top." width="640" height="490" /></a><p class="wp-caption-text">McCloud&#39;s triangle of communication types. Photographs on the left, written word on the right, abstract icons on top.</p></div>
<p>Most comics are along the bottom axis of the triangle (above), but there are examples of comics that fill the whole space.</p>
<p>Comics allow people to identify with roles and characters. &#8220;People in the 20th century don&#8217;t want goals, they want roles,&#8221; by McLuhan (1970?).</p>
<p><em>Closure</em>: observing the parts, but perceiving the whole. Like seeing a character&#8217;s torso and knowing he has feet. For example: videos are a rapid sequence of stills, or rich color photos that are a bunch of little dots (like newspaper prints or Roy Lichtenstein).</p>
<p>The <em>gutter</em>: space between panels where the imagination works.</p>
<p><em>Visual icons are vocabulary, closure is the grammar.</em></p>
<p>Types of transitions:</p>
<ol>
<li> Moment to moment (same character and scene)</li>
<li>Action to Action (single subject)</li>
<li>Subject to Subject (same scene)</li>
<li> Scene to scene (different characters and scenes)</li>
<li> Aspect to aspect (different aspects of a place or idea)</li>
<li>Non-sequitur (no relationships whatsoever)</li>
</ol>
<p>How <em>time</em> works: divided panel by panel:</p>
<ul>
<li> Panel shape influences perception. Longer panels seem to occupy more time.</li>
<li>Timelessness: long, lingering time. Usually borderless panels or those that bleed off the edge.</li>
<li>Passage of time can be shown with &#8220;zip ribbons&#8221; (swish of motion).</li>
</ul>
<p>How <em>lines</em> influence communication:</p>
<ul>
<li>Different types of lines can have different emotional and sensational qualities: passive and timeless, proud, dynamic, severe, gentle, etc.</li>
<li>Subjective motion (subject is static, looks like the background is moving)</li>
</ul>
<p>When thinking about the interplay between words and images in comics, there are several <em>Word + Image</em> combinations to consider:</p>
<ul>
<li>Word specific (words are dominant)</li>
<li>Picture specific (pictures are dominant)</li>
<li>Duo-specific (both words and pictures convey the same meaning)</li>
<li>Additive (words add significant meaning)</li>
<li>Parallel (words and pictures tell different but parallel stories)</li>
<li>Montage (words are integral to the picture)</li>
<li>Interdependent (both work together to tell a story neither could tell alone)</li>
</ul>
<p><em>Process</em> of creating comics (see image at the top of this post):</p>
<ol>
<li>Idea/Purpose</li>
<li>Form</li>
<li>Idiom/style</li>
<li>Structure</li>
<li>Craft</li>
<li>Surface</li>
</ol>
<p>What about <em>Color</em>? Color symbolizes certain characters (eg. Batman is always blue-gray). Flat colors emphasize the shape of an object (Herge&#8217;s TinTin comics used all flat colors) to promote a democracy of form in which no shape is any more important than any other.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Those are my notes. If this sounds interesting to you I highly recommend reading the entirety of <a href="http://www.amazon.com/Understanding-Comics-Invisible-Scott-Mccloud/dp/006097625X">Understanding Comics</a>. It&#8217;s delightfully crafted and a pleasure to read. Also, Scott McCloud writes on <a href="http://twitter.com/scottmccloud">Twitter</a> and on <a href="http://scottmccloud.com/">his blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visualmotive.com/2009/understanding-comics-with-scott-mccloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notes on Color</title>
		<link>http://blog.visualmotive.com/2009/notes-on-color/</link>
		<comments>http://blog.visualmotive.com/2009/notes-on-color/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 12:10:27 +0000</pubDate>
		<dc:creator>Chris Mueller</dc:creator>
				<category><![CDATA[Maps]]></category>
		<category><![CDATA[Visualization]]></category>
		<category><![CDATA[color]]></category>

		<guid isPermaLink="false">http://blog.visualmotive.com/?p=270</guid>
		<description><![CDATA[<a href="http://blog.visualmotive.com/2009/notes-on-color/"><img align="left" hspace="5" width="150" height="150" src="http://blog.visualmotive.com/wp-content/uploads/2009/12/Munsell_1929_color_solid_transparent-150x150.png" class="alignleft wp-post-image tfe" alt="Munsell Color Space. Image created with POV-Ray, CC license via Wikimedia Commons" title="Munsell" /></a>Choosing colors for maps, charts, and infographics can be a difficult task. Standard software packages like Excel and Matlab have tended to offer substandard color schemes (though this is getting better) so it's up to the designer to learn about color and apply the appropriate techniques. This post will focus on understanding color schemes for maps.]]></description>
			<content:encoded><![CDATA[<div id="attachment_277" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.visualmotive.com/wp-content/uploads/2009/12/Munsell_1929_color_solid_transparent.png"><img class="size-medium wp-image-277" title="Munsell" src="http://blog.visualmotive.com/wp-content/uploads/2009/12/Munsell_1929_color_solid_transparent-640x364.png" alt="Munsell Color Space. Image created with POV-Ray, CC license via Wikimedia Commons" width="640" height="364" /></a><p class="wp-caption-text">Munsell Color Space. Image created with POV-Ray, CC license via Wikimedia Commons</p></div>
<p>Choosing colors for maps, charts, and infographics can be a difficult task. Standard software packages like Excel and Matlab have tended to offer substandard color schemes (though this is getting better) so it&#8217;s up to the designer to learn about color and apply the appropriate techniques.</p>
<p>This post will focus on color schemes for maps. There are several types to consider:</p>
<ul>
<li>Sequential &#8211; good for quantitative variables.</li>
<li>Divergent &#8211; good for quantitative variables with an obvious midpoint (e.g. zero) and two divergent tails.</li>
<li>Qualitative &#8211; good for categorical variables.</li>
</ul>
<p>Given a sequential, non-divergent color scheme, Cynthia Brewer and Mark Harrower (of ColorBrewer fame) note:</p>
<blockquote><p>Lightness steps dominate the look of these schemes, usually with light colours for low data values and dark colours for high values. ‘Dark equals more’ is a standard cartographic convention. Sequential schemes can be either single hue (e.g. same blue, with different lightness and saturation levels) or multi-hued (e.g. light yellow through dark green).</p></blockquote>
<h3>Background</h3>
<p>It&#8217;s important first to remember that computer displays and common digital color formats (like RGB) only show a subset of all visible color. It&#8217;s also good to be aware of some common color spaces: <a href="http://en.wikipedia.org/wiki/RGB_color_model">RGB</a>, <a href="http://en.wikipedia.org/wiki/HSL_and_HSV">HSV</a>, and <a href="http://en.wikipedia.org/wiki/YIQ">YIQ</a>.</p>
<p>RGB identifies color by red, green, and blue components. HSV uses hue (angle on the color wheel), saturation (intensity of color), and value (amount of black). YIQ is used for NTSC television signals. It has a black/white component plus two chromatic components; the black/white Y component is what is visible on a black and white television.</p>
<p>Much experimentation has been done on how people perceive colors. Assuming colors are at equal saturation. &#8220;Value perception dominates color perception.&#8221; (Bertin, p 87) Images generated earlier on this blog <a href="http://visualmotive.com/colorsort/">tested color sorting</a> across every variation of RGB, HSV, YIQ color spaces and confirm Bertin&#8217;s assessment.</p>
<p>Bertin writes, &#8220;The saturated tone is not of constant value but varies in value according to the hue.&#8221; This makes sense. For example, yellow at 100% saturation is much brighter than blue at 100% saturation. If yellow and blue are to be used in the same color scheme, we will need to compensate for the perceived brightness of the yellow by decreasing its value.</p>
<h3>Munsell Color System</h3>
<p>Enter Albert H. Munsell. In the early 1900&#8242;s he undertook a lot of research to understand exactly how it is people perceive color. The resulting Munsell Color System is a three-axis system that doesn&#8217;t conform to any standard spherical/cubic geometric model.</p>
<div id="attachment_281" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.visualmotive.com/wp-content/uploads/2009/12/Munsell-system.png"><img class="size-full wp-image-281" title="Munsell2" src="http://blog.visualmotive.com/wp-content/uploads/2009/12/Munsell-system.png" alt="Munsell Color System diagram. CC license via Wikimedia Commons." width="640" height="640" /></a><p class="wp-caption-text">Munsell Color System diagram. CC license via Wikimedia Commons.</p></div>
<p>The central axis indicates the perceived value (darkness/lightness) of the color. The angular values indicate hue, and length out from the axis is chroma (intensity).</p>
<p>When choosing colors for maps and other diagrams that utilize a linear, quantitative scale, the Munsell color system would be a good place to start. <a href="http://www.colorbrewer2.org">ColorBrewer</a> has great color schemes for maps, and all of them have proven perceptual merit. ColorBrewer is a great resource and I have used it in many projects. The only real issue with ColorBrewer is that it contains so few color schemes. Sometimes a designer wants to be able to match the brand, identity, or theme of a larger project while maintaining the integrity of the diagram&#8217;s visual communication. Working with the Munsell system should allow just that.</p>
<h3>Looking forward</h3>
<p>We have not tested this yet, but one could choose a particular hue + chroma in the Munsell system as a starting point, and work up and down the axis to find related colors that vary on perceived value. Additionally, one could move in a <em>diagonal</em> fashion, moving up in value while also moving an angular increment around the axis. This would theoretically accomplish the multi-hued sequential schemes that Harrower and Brewer describe in their paper on ColorBrewer (quoted above).</p>
<div id="attachment_285" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.visualmotive.com/wp-content/uploads/2009/12/flowRoot3775.png"><img class="size-full wp-image-285" title="Munsell vs ColorBrewer" src="http://blog.visualmotive.com/wp-content/uploads/2009/12/flowRoot3775.png" alt="Potential Munsell color schemes compared with schemes from ColorBrewer" width="640" height="243" /></a><p class="wp-caption-text">Potential Munsell color schemes compared with schemes from ColorBrewer</p></div>
<h3>References</h3>
<p>Jacques Bertin, Semiology of Graphics. Translated 1983 by William J. Berg, originally published in 1967.</p>
<p>Mark Harrower and Cynthia Brewer, Colorbrewer.org: An Online Tool for Selecting Colour Schemes for Maps. The Cartographic Journal, Vol 40, No 1, pp 27-37. June 2003. [<a href="http://www.albany.edu/faculty/fboscoe/papers/harrower03.pdf">PDF]</a></p>
<p><a href="http://en.wikipedia.org/wiki/Munsell_color_system">Munsell Color System</a>, on Wikipedia. Associated images at Wikimedia Commons: <a href="http://en.wikipedia.org/wiki/File:Munsell_1929_color_solid_transparent.png">POV-Ray render</a> and the <a href="http://commons.wikimedia.org/wiki/File:Munsell-system.svg">color system diagram</a>.</p>
<p>Bruce MacEvoy, <a href="http://handprint.com/HP/WCL/color7.html">Modern Color Models</a>. 2005.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visualmotive.com/2009/notes-on-color/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Walk or Bus?</title>
		<link>http://blog.visualmotive.com/2009/walk-or-bus/</link>
		<comments>http://blog.visualmotive.com/2009/walk-or-bus/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 11:06:13 +0000</pubDate>
		<dc:creator>Chris Mueller</dc:creator>
				<category><![CDATA[Visualization]]></category>
		<category><![CDATA[transit]]></category>

		<guid isPermaLink="false">http://blog.visualmotive.com/?p=237</guid>
		<description><![CDATA[<a href="http://blog.visualmotive.com/2009/walk-or-bus/"><img align="left" hspace="5" width="150" height="150" src="http://blog.visualmotive.com/wp-content/uploads/2009/09/buswalk_screen-150x150.jpg" class="alignleft wp-post-image tfe" alt="Should you walk or take the bus?" title="buswalk_screen" /></a>It is intuitive that when you have a short distance to travel it is always faster to walk than wait around for a bus. But <em>exactly</em> how long should you wait? We decided to do some calculations to find out. Click <a href="http://visualmotive.com/walk-or-bus/">here</a> to see Walk or Bus? ]]></description>
			<content:encoded><![CDATA[<div id="attachment_238" class="wp-caption alignnone" style="width: 610px"><a href="http://visualmotive.com/walk-or-bus/"><img class="size-full wp-image-238 " title="buswalk_screen" src="http://blog.visualmotive.com/wp-content/uploads/2009/09/buswalk_screen.jpg" alt="Should you walk or take the bus?" width="600" height="183" /></a><p class="wp-caption-text">Should you walk or take the bus?</p></div>
<p>It is intuitive that when you have a short distance to travel it is always faster to walk than wait around for a bus. But <em>exactly</em> how long should you wait? We decided to do some calculations to find out.</p>
<p>Click <a href="http://visualmotive.com/walk-or-bus/">here</a> to see <em>Walk or Bus? </em>and discover for yourself how long you should be willing to wait for a bus.</p>
<p>If you remember this rule of thumb you ought to get along just fine:</p>
<blockquote><p>If you have N blocks to travel, you should only wait for the bus if it is less than N minutes away.</p></blockquote>
<p>Of course, if you have a bike, you should probably use that instead. <img src='http://blog.visualmotive.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Feel free to leave your questions or comments.</p>
<p>Link: <a href="http://visualmotive.com/walk-or-bus/">Walk or Bus?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visualmotive.com/2009/walk-or-bus/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Sorting Colors</title>
		<link>http://blog.visualmotive.com/2009/sorting-colors/</link>
		<comments>http://blog.visualmotive.com/2009/sorting-colors/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 12:00:04 +0000</pubDate>
		<dc:creator>Chris Mueller</dc:creator>
				<category><![CDATA[Visualization]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[photography]]></category>

		<guid isPermaLink="false">http://blog.visualmotive.com/?p=206</guid>
		<description><![CDATA[<a href="http://blog.visualmotive.com/2009/sorting-colors/"><img align="left" hspace="5" width="150" height="150" src="http://blog.visualmotive.com/wp-content/uploads/2009/09/colorsort1-150x150.jpg" class="alignleft wp-post-image tfe" alt="Color sorting using RGB, HSV, and YIQ color spaces" title="colorsort" /></a>We recently needed to sort the pixels in an image by their color. On first attempt, we sorted by simple RGB values: first sort on R, then on G, then B. But it turns out there are many other possibilities for sorting colors. Every permutation of the RGB letters could be considered (RBG, GBR, GRB, [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_214" class="wp-caption alignnone" style="width: 650px"><a href="http://visualmotive.com/colorsort/"><img class="size-full wp-image-214 " title="colorsort" src="http://blog.visualmotive.com/wp-content/uploads/2009/09/colorsort1.jpg" alt="Color sorting using RGB, HSV, and YIQ color spaces" width="640" height="210" /></a><p class="wp-caption-text">Color sorting using RGB, HSV, and YIQ color spaces</p></div>
<p>We recently needed to sort the pixels in an image by their color. On first attempt, we sorted by simple <a href="http://en.wikipedia.org/wiki/Rgb">RGB</a> values: first sort on R, then on G, then B. But it turns out there are many other possibilities for sorting colors. Every permutation of the RGB letters could be considered (RBG, GBR, GRB, etc.), not to mention other color systems <a href="http://en.wikipedia.org/wiki/HSL_and_HSV">HSV</a> and <a href="http://en.wikipedia.org/wiki/YIQ">YIQ</a>.</p>
<p>To see all the color sorting possibilities, we wrote a Python script to try every permutation against a common set of source images.  <a href="http://visualmotive.com/colorsort/">Click here to see every color sorting option</a>. Note that we use a Hilbert curve in the top set of images to provide better grouping of similar color values. The bottom set of images is linear and wrapped: left to right, then top to bottom.</p>
<p>Our goal was to find a sorting mechanism that looked pleasing to the eye, but of course the results are completely subjective.</p>
<ul>
<li>For aesthetics, we prefer the YIQ sort. It highlights trends in value change, but information about hue variation is hidden and sometimes invisible.</li>
<li>To communicate more information about hues, HSV sorting is by far superior, but it lacks the pleasant gradient-effect of the YIQ sort.</li>
<li>RGB sorting proves inferior to HSV and YIQ, though the results can still be interesting.</li>
</ul>
<p>Also worth noting: HSV sort is excellent for grouping colors of similar hues, but the IYQ and YIQ sorts also do this well and they can look cleaner than their HSV counterpart.</p>
<p>(with thanks to Steve Witham for his <a href="http://www.tiac.net/~sw/2008/10/Hilbert/">Hilbert curves in Python</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visualmotive.com/2009/sorting-colors/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Graph Visualization with Edge Bundling</title>
		<link>http://blog.visualmotive.com/2009/graph-visualization-edge-bundling/</link>
		<comments>http://blog.visualmotive.com/2009/graph-visualization-edge-bundling/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 12:00:02 +0000</pubDate>
		<dc:creator>Chris Mueller</dc:creator>
				<category><![CDATA[Visualization]]></category>
		<category><![CDATA[graph]]></category>

		<guid isPermaLink="false">http://blog.visualmotive.com/?p=186</guid>
		<description><![CDATA[<a href="http://blog.visualmotive.com/2009/graph-visualization-edge-bundling/"><img align="left" hspace="5" width="150" height="150" src="http://blog.visualmotive.com/wp-content/uploads/2009/07/graph_usairways_bundled-150x150.jpg" class="alignleft wp-post-image tfe" alt="US air transit routes after bundling algorithm was applied" title="graph_usairways_bundled" /></a>We recently encountered (via infosthetics) a paper from Danny Holten and Jarke J. van Wijk that demonstrates an algorithm for creating beautiful graph visualizations. The original paper is Force-Directed Edge Bundling for Graph Visualization, published in 2009. In computer science theory, a graph is a collection of nodes and the edges between them. Graphs are [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_187" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.visualmotive.com/wp-content/uploads/2009/07/graph_usairways_bundled.jpg"><img class="size-medium wp-image-187" title="graph_usairways_bundled" src="http://blog.visualmotive.com/wp-content/uploads/2009/07/graph_usairways_bundled-640x294.jpg" alt="US air transit routes after bundling algorithm was applied" width="640" height="294" /></a><p class="wp-caption-text">Diagram of US airways using Holten and van Wijk&#39;s bundling algorithm</p></div>
<p>We recently encountered (via <a href="http://infosthetics.com/archives/2009/06/force_directed_edge_bundling_for_graph_visualization.html">infosthetics</a>) a paper from Danny Holten and Jarke J. van Wijk that demonstrates an algorithm for creating beautiful graph visualizations. The original paper is <a href="http://www.win.tue.nl/~dholten/papers/forcebundles_eurovis.pdf">Force-Directed Edge Bundling for Graph Visualization</a>, published in 2009.</p>
<p>In computer science theory, a graph is a collection of nodes and the edges between them. Graphs are useful abstractions for describing transit networks, computer networks, and relationships among people (such as in a social network). Over the years mathematicians and theorists have discovered that there are hundreds of additional problem types that can be rewritten as graph theory problems. So, understanding and visualizing graphs is important for a large number of problem domains.</p>
<p>While there are many ways to represent a graph visually, the most intuitive is to draw a set of points (nodes) with lines (edges) connecting them. The goal, of course, is to make the visualization intuitive to understand for a human observer. The visualization should be functionally readable, aesthetically appealing, and ideally should allow an observer to glean interesting information about the graph&#8217;s structure. For larger graphs, several issues regarding visualization immediately present themselves. First, nodes must be laid out such that they to not interfere with one another. Edges should be drawn so that they can be distinguished from one another, with minimal crossing, but should also connect two nodes with the shortest line possible and minimal curvature. Node size and edge thickness become important, and either nodes or edges are connected to real-world space, they should be placed in some analogous fashion.</p>
<div id="attachment_188" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.visualmotive.com/wp-content/uploads/2009/07/graph_usairways_unbundled.jpg"><img class="size-medium wp-image-188" title="graph_usairways_unbundled" src="http://blog.visualmotive.com/wp-content/uploads/2009/07/graph_usairways_unbundled-640x291.jpg" alt="Unprocessed visualization of a graph depicting US airways" width="640" height="291" /></a><p class="wp-caption-text">Unprocessed visualization of a graph representing major US airways</p></div>
<p>Holten and van Wijk have introduced several novel ideas to graph visualization theory. Their main contribution is the grouping of similar edges using a clustering technique. Edges become flexible springs that can attract and repel one another. While other researchers have proposed edge-bundling techniques, Holten and van Wijk&#8217;s algorithm uses a &#8220;self-organizing&#8221; approach that does not require additional information in the form of control hierarchies or meshes as did previously published algorithms. By transforming the edges into springs, they are able to leverage existing algorithmic techniques for modeling real world systems.<span id="more-186"></span></p>
<h3>Algorithm</h3>
<p>Each edge is modeled as a spring, and a number of control points are placed along each edge. Each control point on a spring-edge is compared with its corresponding control point on every other edge that interacts with this edge. A global spring constant is used to inform localized (edge-specific) spring constants, and this determines the &#8220;stiffness&#8221; of the resulting diagram. Over many iterations, each control point is moved slightly according to the sum of all forces acting upon it. As control points move, they inform subsequent iterations and alter the forces acting on other edges in the graph. The number of control points is increased for later iterations to provide greater edge smoothing.</p>
<p>The authors discovered that this basic algorithm resulted in too much bundling. They therefore introduce several edge-compatibility measures that are used to adjust the forces acting between any two control points. Edges should exhibit greater bundling tendencies if they:</p>
<ol>
<li>are parallel rather than perpendicular</li>
<li>are of similar lengths</li>
<li>are proximate in space</li>
<li>have similar &#8220;bands of sight&#8221; (such that the edges of a skewed parallelogram would not be considered candidates for bundling).</li>
</ol>
<p>Additional anti-aliasing was performed on the final output to increase overall smoothing. The resulting graph diagrams are beautiful and very readable.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visualmotive.com/2009/graph-visualization-edge-bundling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jason Salavon</title>
		<link>http://blog.visualmotive.com/2009/jason-salavon/</link>
		<comments>http://blog.visualmotive.com/2009/jason-salavon/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 12:00:57 +0000</pubDate>
		<dc:creator>Chris Mueller</dc:creator>
				<category><![CDATA[Visualization]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[salavon]]></category>

		<guid isPermaLink="false">http://blog.visualmotive.com/?p=136</guid>
		<description><![CDATA[<a href="http://blog.visualmotive.com/2009/jason-salavon/"><img align="left" hspace="5" width="150" height="150" src="http://blog.visualmotive.com/wp-content/uploads/2009/03/salavon_house_series-150x150.jpg" class="alignleft wp-post-image tfe" alt="salavon_house_series" title="salavon_house_series" /></a>We find the work of Jason Salavon highly inspirational. At the intersection of art and visualization, his images are distinctive for their surface and immediate graphical language while also communicating significant stories of process and history. By merging dozens or hundreds images that share some common theme, Salavon helps us extract high-level information about common [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_137" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.visualmotive.com/wp-content/uploads/2009/03/salavon_house_series.jpg"><img class="size-medium wp-image-137" title="salavon_house_series" src="http://blog.visualmotive.com/wp-content/uploads/2009/03/salavon_house_series-640x337.jpg" alt="salavon_house_series" width="640" height="337" /></a><p class="wp-caption-text">Salavon&#39;s photograph series Homes for Sale. Clockwise, from top left: Seattle, Miami, Los Angeles, New York City, Dallas, Chicago.</p></div>
<p>We find the work of Jason Salavon highly inspirational. At the intersection of art and visualization, his images are distinctive for their surface and immediate graphical language while also communicating significant stories of process and history.</p>
<p>By merging dozens or hundreds images that share some common theme, Salavon helps us extract high-level information about common form, texture, and color. The details are sacrificed, but we gain understanding of patterns inherent in the larger series.</p>
<p>In the <em>Homes for Sale</em> s images, aggregation is done by place and time. The photographs, all from 2002, were taken by realtors. We might expect different results in different cities, years, or seasons. As it is, we can see the green grass of Dallas contrasting with the yellow lawns in Chicago, and the blue skies of Miama and Los Angeles stand out against the gray atmospheres in Seattle and New York.</p>
<div id="attachment_140" class="wp-caption alignnone" style="width: 650px"><img class="size-medium wp-image-140" title="salavon_playboy_centerfolds" src="http://blog.visualmotive.com/wp-content/uploads/2009/03/salavon_playboy_centerfolds-640x328.jpg" alt="Every Playboy centerfold, by decade. From the left: 1960s, 1970s, 1980s, 1990s." width="640" height="328" /><p class="wp-caption-text">Every Playboy centerfold, by decade. From the left: 1960s, 1970s, 1980s, 1990s.</p></div>
<p>In the <em>Playboy</em> series, aggregation is achieved by limiting the kind of image (only centerfolds) and differentiating by decade. We see artifacts of culture in composition and colors, warm to cool, with lighter skin and hair emphasized in later decades.</p>
<div id="attachment_138" class="wp-caption alignnone" style="width: 650px"><img class="size-medium wp-image-138" title="sugimoto_theater" src="http://blog.visualmotive.com/wp-content/uploads/2009/03/sugimoto_theater-640x493.jpg" alt="Hiroshi Sugimoto, Akron Civic Theater, Ohio (1980)" width="640" height="493" /><p class="wp-caption-text">Hiroshi Sugimoto, Akron Civic Theater, Ohio (1980)</p></div>
<p>We can think of Salavon&#8217;s photos as 2D films, where all frames are merged into one static image. Similar work has been done by the brilliant photographer Hiroshi Sugimoto, who&#8217;s camera has captured the entirety of feature films with one long shutter (above). Sugimoto does not wish to tell us about the film itself—in fact, the film title is never announced—but rather about qualities of light, surface, shape, form, and so forth.</p>
<p>Most data visualization projects start with structured data, spreadsheets, XML, databases, APIs. We like Salavon&#8217;s projects that bridge data visualization with more traditional media, using a raster imagery as the data sources, extracting patterns and meaning from highly unstructured content. They are beautiful in their own right, and serve as an inspiration for future data visualization projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visualmotive.com/2009/jason-salavon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Song Visualizations with Echo Nest</title>
		<link>http://blog.visualmotive.com/2009/song-visualizations-echo-nest/</link>
		<comments>http://blog.visualmotive.com/2009/song-visualizations-echo-nest/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 12:00:34 +0000</pubDate>
		<dc:creator>Chris Mueller</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[Visualization]]></category>
		<category><![CDATA[echo nest]]></category>

		<guid isPermaLink="false">http://blog.visualmotive.com/?p=78</guid>
		<description><![CDATA[<a href="http://blog.visualmotive.com/2009/song-visualizations-echo-nest/"><img align="left" hspace="5" width="150" height="150" src="http://blog.visualmotive.com/wp-content/uploads/2009/03/glass2-150x150.png" class="alignleft wp-post-image tfe" alt="Philip Glass String Quartet #5, 2nd Movement" title="philip_glass_string_quartet_viz" /></a>We recently came across Anita Lillie&#8217;s beautiful music visualization and MusicBox projects. The music visualization project was especially intriguing to us, since it was the only music visualization project we&#8217;d seen that did not require video playback—the visualizations were strictly in 2D. Unfortunately, the source code for Lillie&#8217;s visualizations was not available, so we decided [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_79" class="wp-caption alignnone" style="width: 650px"><img class="size-full wp-image-79" title="philip_glass_string_quartet_viz" src="http://blog.visualmotive.com/wp-content/uploads/2009/03/glass2.png" alt="Philip Glass String Quartet #5, 2nd Movement" width="640" height="216" /><p class="wp-caption-text">Philip Glass String Quartet #5, 2nd Movement</p></div>
<p>We recently came across Anita Lillie&#8217;s beautiful <a href="http://www.flyingpudding.com/projects/viz_music/">music visualization</a> and <a href="http://thesis.flyingpudding.com/">MusicBox</a> projects. The music visualization project was especially intriguing to us, since it was the only music visualization project we&#8217;d seen that did not require video playback—the visualizations were strictly in 2D. Unfortunately, the source code for Lillie&#8217;s visualizations was not available, so we decided to build our own.</p>
<p>Our goal was to build a 2D visualization that could be approached like one of Edward Tufte&#8217;s sparklines: a quick, snapshot overview with high information density. In addition, having an image snapshot of a song could be useful for visually-minded people who often find themselves thinking of music as in spatial or pictorial terms. In the same way that Cicero used different rooms in his home to memorize different sections of his oratories, a 2D song-picture could provide a memorable structure for interpreting and contextualizing moments in a piece of music.</p>
<p>Here is the fruit of our labors. The top segment represents volume across the duration of the song. The bottom segments represent the 12 pitches of the song&#8217;s primary key, and the weight of each block corresponds to that pitch&#8217;s volume at that point in the song. Details, including Echo Nest integration and source code, are below.</p>
<div id="attachment_84" class="wp-caption alignnone" style="width: 650px"><img class="size-full wp-image-84" title="darkside" src="http://blog.visualmotive.com/wp-content/uploads/2009/03/darkside.png" alt="Pink Floyd, Dark Side of the Moon, &quot;Speak to Me/Breathe in the Air&quot;" width="640" height="216" /><p class="wp-caption-text">Pink Floyd, Dark Side of the Moon, &quot;Speak to Me/Breathe in the Air&quot;. The opening crescendos of this album are clearly visible. </p></div>
<div id="attachment_87" class="wp-caption alignnone" style="width: 650px"><img class="size-full wp-image-87" title="highroller" src="http://blog.visualmotive.com/wp-content/uploads/2009/03/highroller.png" alt="Crystal Method, Vegas, &quot;High Roller&quot;" width="640" height="216" /><p class="wp-caption-text">Crystal Method, Vegas, &quot;High Roller&quot;. We like the seeing that perfect volume curve at the beginning of this song. There&#39;s a pronounced industrial feeling here.</p></div>
<div id="attachment_100" class="wp-caption alignnone" style="width: 650px"><img class="size-full wp-image-100" title="imperial1" src="http://blog.visualmotive.com/wp-content/uploads/2009/03/imperial1.png" alt="John Williams, Star Wars: A New Hope, &quot;Imperial Attack&quot;" width="640" height="216" /><p class="wp-caption-text">John Williams, Star Wars: A New Hope, &quot;Imperial Attack&quot;. This visualization should probably be in black.</p></div>
<div id="attachment_86" class="wp-caption alignnone" style="width: 650px"><img class="size-full wp-image-86" title="goldfrapp_whitehorse" src="http://blog.visualmotive.com/wp-content/uploads/2009/03/goldfrapp_whitehorse.png" alt="Goldfrapp, Supernature, &quot;Ride a White Horse&quot;" width="640" height="216" /><p class="wp-caption-text">Goldfrapp, Supernature, &quot;Ride a White Horse&quot;. Volume leveling clearly visible. Pop at its finest.</p></div>
<div id="attachment_92" class="wp-caption alignnone" style="width: 650px"><img class="size-full wp-image-92" title="kyrie" src="http://blog.visualmotive.com/wp-content/uploads/2009/03/kyrie.png" alt="Mozart, Requiem, &quot;Kyrie&quot;" width="640" height="216" /><p class="wp-caption-text">Mozart, Requiem, &quot;Kyrie&quot;</p></div>
<div id="attachment_90" class="wp-caption alignnone" style="width: 650px"><img class="size-full wp-image-90" title="permutations" src="http://blog.visualmotive.com/wp-content/uploads/2009/03/permutations.png" alt="George Maasry, &quot;Permutations&quot; " width="640" height="216" /><p class="wp-caption-text">George Maasry, &quot;Permutations&quot;. Mathematical permutations on a theme.</p></div>
<p><span id="more-78"></span></p>
<h3>Making Of</h3>
<p>The <a href="http://the.echonest.com/">Echo Nest</a> has developed a brilliant piece of software called Analyze. It &#8220;listens&#8221; to music as if it were human, and extracts information about rhythm, tone, pitch, etc. The amount and quality of information available is stunning. A simple web service API provides anyone with access to its vast power.</p>
<p>Adam Lindsay has written a <a href="http://lindsay.at/work/remix/overview.html">fantastic overview</a> of the API service.</p>
<p>Our code, below, requires the <a href="http://www.pythonware.com/products/pil/">Python Imaging Library</a>, <a href="http://effbot.org/zone/pythondoc-aggdraw.htm">aggdraw</a>, and <a href="http://code.google.com/p/echo-nest-remix/">Echo Nest Remix</a> with a valid <a href="http://developer.echonest.com/pages/overview">API key</a>. This is a rough sketch of what is possible, and there are probably bugs, so don&#8217;t be surprised if something breaks.</p>
<p>Please feel free to use and modify this code as you see fit, we&#8217;d just ask that you provide a link back to this site if you happen to use our code in any of your projects.</p>
<pre>import echonest.audio as audio
import Image
import aggdraw
import math

def main( input_filename, output_filename, width=None, height=None ):
    """
    Simple song visualization using Echo Nest
    published by Chris Mueller, http://visualmotive.com
    """
    audio_file = audio.LocalAnalysis( input_filename )
    segments = audio_file.analysis.segments

    if width is None:
        width = int( math.ceil( audio_file.analysis.duration ) ) * 2
    width_scale = float( width ) / audio_file.analysis.duration
    if height is None:
        height = 216
    height_part = height/3

    img = Image.new( "RGBA", ( width, height ), "#ffffff" )
    draw = aggdraw.Draw( img )
    draw.setantialias( False )
    brush = aggdraw.Brush( "#0088aa", 255 )
    pen = aggdraw.Pen( "#ffffff", 1, 0 )

    for segment in segments:
        left = width_scale * segment.start
        right = width_scale * ( segment.start + segment.duration )
        rect = ( left,
                 height_part,
                 right,
                 segment.loudness_max * -1 )
        draw.rectangle( rect, pen, brush )
        for i in xrange( len( segment.pitches ) ): # assumes a constant key
            pitch_loudness = segment.pitches[ i ]
            pitch_brush = aggdraw.Brush( "#0088aa", int( 255 * pitch_loudness ) )
            pitch_height = 2 * height_part * ( 1.0 / 12.0 )
            top = height_part + i * pitch_height
            rect = ( left,
                     top,
                     right,
                     top + pitch_height )
            draw.rectangle( rect, pen, pitch_brush )

    draw.flush()
    del draw
    img.save( output_filename, "PNG")</pre>
<p>This is only scratching the surface of possible 2D music visualizations. We look forward to exploring this concept more in the future. Many thanks to Echo Nest for their great service.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.visualmotive.com/2009/song-visualizations-echo-nest/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

