<?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"
	>
<channel>
	<title>Comments on: etframes: Applying the ideas of Edward Tufte to matplotlib</title>
	<atom:link href="http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/feed/" rel="self" type="application/rss+xml" />
	<link>http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/</link>
	<description>The blog of Adam Hupp</description>
	<pubDate>Sat, 06 Sep 2008 02:29:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
		<item>
		<title>By: Norbert Klamann</title>
		<link>http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-138</link>
		<dc:creator>Norbert Klamann</dc:creator>
		<pubDate>Sun, 10 Feb 2008 16:58:12 +0000</pubDate>
		<guid isPermaLink="false">http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-138</guid>
		<description>&lt;p&gt;Same problem occurs, wen I use 'scatter' instead of 'plot'.&lt;/p&gt;

&lt;p&gt;This is the first part of the traceback:&lt;/p&gt;

&lt;p&gt;Traceback (most recent call last):
  File "C:Python25Libsite-packagesmatplotlibbackendsbackend_wx.py", line 1081, in _onPaint
    self.draw(repaint=False)
  File "C:Python25Libsite-packagesmatplotlibbackendsbackend_wxagg.py", line 61, in draw
    FigureCanvasAgg.draw(self)
  File "C:Python25Libsite-packagesmatplotlibbackendsbackend_agg.py", line 358, in draw
    self.figure.draw(self.renderer)
  File "C:Python25Libsite-packagesmatplotlibfigure.py", line 624, in draw
    for a in self.axes: a.draw(renderer)
  File "C:Python25Libsite-packagesmatplotlibaxes.py", line 1345, in draw
    a.draw(renderer)
  File "C:projektelm2.worksrcviewyagutetframes.py", line 67, in draw
    rf = self.make_range_frame()
  File "C:projektelm2.worksrcviewyagutetframes.py", line 85, in make_range_frame
    colors=[self.color])
  File "C:Python25Libsite-packagesmatplotlibcollections.py", line 678, in &lt;strong&gt;init&lt;/strong&gt;
    self._colors = _colors.colorConverter.to_rgba_list(colors)
  File "C:Python25Libsite-packagesmatplotlibcolors.py", line 327, in to_rgba_list
    c[i] = self.to_rgba(cc, alpha)  # change in place
  File "C:Python25Libsite-packagesmatplotlibcolors.py", line 309, in to_rgba
    raise ValueError('to_rgba: Invalid rgba arg "%s"n%s' % (str(arg), exc))
ValueError: to_rgba: Invalid rgba arg "(100, 300)"&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Same problem occurs, wen I use &#8217;scatter&#8217; instead of &#8216;plot&#8217;.</p>
<p>This is the first part of the traceback:</p>
<p>Traceback (most recent call last):<br />
  File &#8220;C:Python25Libsite-packagesmatplotlibbackendsbackend_wx.py&#8221;, line 1081, in _onPaint<br />
    self.draw(repaint=False)<br />
  File &#8220;C:Python25Libsite-packagesmatplotlibbackendsbackend_wxagg.py&#8221;, line 61, in draw<br />
    FigureCanvasAgg.draw(self)<br />
  File &#8220;C:Python25Libsite-packagesmatplotlibbackendsbackend_agg.py&#8221;, line 358, in draw<br />
    self.figure.draw(self.renderer)<br />
  File &#8220;C:Python25Libsite-packagesmatplotlibfigure.py&#8221;, line 624, in draw<br />
    for a in self.axes: a.draw(renderer)<br />
  File &#8220;C:Python25Libsite-packagesmatplotlibaxes.py&#8221;, line 1345, in draw<br />
    a.draw(renderer)<br />
  File &#8220;C:projektelm2.worksrcviewyagutetframes.py&#8221;, line 67, in draw<br />
    rf = self.make_range_frame()<br />
  File &#8220;C:projektelm2.worksrcviewyagutetframes.py&#8221;, line 85, in make_range_frame<br />
    colors=[self.color])<br />
  File &#8220;C:Python25Libsite-packagesmatplotlibcollections.py&#8221;, line 678, in <strong>init</strong><br />
    self._colors = _colors.colorConverter.to_rgba_list(colors)<br />
  File &#8220;C:Python25Libsite-packagesmatplotlibcolors.py&#8221;, line 327, in to_rgba_list<br />
    c[i] = self.to_rgba(cc, alpha)  # change in place<br />
  File &#8220;C:Python25Libsite-packagesmatplotlibcolors.py&#8221;, line 309, in to_rgba<br />
    raise ValueError(&#8217;to_rgba: Invalid rgba arg &#8220;%s&#8221;n%s&#8217; % (str(arg), exc))<br />
ValueError: to_rgba: Invalid rgba arg &#8220;(100, 300)&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Norbert Klamann</title>
		<link>http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-137</link>
		<dc:creator>Norbert Klamann</dc:creator>
		<pubDate>Sun, 10 Feb 2008 16:36:36 +0000</pubDate>
		<guid isPermaLink="false">http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-137</guid>
		<description>&lt;p&gt;Hello Adam,
I am new to matplotlib and maybe that is the deeper reason for my question but here we go.&lt;/p&gt;

&lt;p&gt;I try to use etframes integrated in a wxpython application and use a program like this, which goes into recursion and crashes.&lt;/p&gt;

&lt;p&gt;I presume that I use etframes in a wrong way but can't figure it out.&lt;/p&gt;

&lt;p&gt;Source follows (hopefully the indentation keeps in order)&lt;/p&gt;

&lt;p&gt;!/usr/bin/env python&lt;/p&gt;

&lt;p&gt;import wx
import wx.grid
from numpy import *
import matplotlib
matplotlib.use('WXAgg')
from matplotlib.backends.backend_wxagg import  FigureCanvasWxAgg
from matplotlib.figure import Figure 
import etframes&lt;/p&gt;

&lt;p&gt;def minmax(data):
    return min(data), max(data)&lt;/p&gt;

&lt;p&gt;class ActionFrame(wx.Frame):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;def __init__(self, *args, **kwargs):
    wx.Frame.__init__(self, *args, **kwargs)
    self.fig = Figure((5,4), 75)
    self.canvas = FigureCanvasWxAgg(self, -1, self.fig)  
    sizer = wx.BoxSizer(wx.VERTICAL)
    # This way of adding to sizer allows resizing
    sizer.Add(self.canvas, 1, wx.LEFT&#124;wx.TOP&#124;wx.GROW)
    self.SetSizer(sizer)
    self.Fit() 
    data = [100, 200, 300,]
    index = [1,2,3]
    self.axes = self.fig.add_subplot(111)
    etframes.add_range_frame(self.axes,minmax(data),minmax(index))
    self.axes.plot(index,data,'go')
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;class App(wx.App):
    def OnInit(self):
        self.frm = ActionFrame(None,title="Action Frame")
        self.frm.Show()
        self.SetTopWindow(self.frm)
        return True&lt;/p&gt;

&lt;p&gt;if &lt;strong&gt;name&lt;/strong&gt; == '&lt;strong&gt;main&lt;/strong&gt;':
    app = App(False)
    app.MainLoop()&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hello Adam,<br />
I am new to matplotlib and maybe that is the deeper reason for my question but here we go.</p>
<p>I try to use etframes integrated in a wxpython application and use a program like this, which goes into recursion and crashes.</p>
<p>I presume that I use etframes in a wrong way but can&#8217;t figure it out.</p>
<p>Source follows (hopefully the indentation keeps in order)</p>
<p>!/usr/bin/env python</p>
<p>import wx<br />
import wx.grid<br />
from numpy import *<br />
import matplotlib<br />
matplotlib.use(&#8217;WXAgg&#8217;)<br />
from matplotlib.backends.backend_wxagg import  FigureCanvasWxAgg<br />
from matplotlib.figure import Figure<br />
import etframes</p>
<p>def minmax(data):<br />
    return min(data), max(data)</p>
<p>class ActionFrame(wx.Frame):</p>
<pre><code>def __init__(self, *args, **kwargs):
    wx.Frame.__init__(self, *args, **kwargs)
    self.fig = Figure((5,4), 75)
    self.canvas = FigureCanvasWxAgg(self, -1, self.fig)
    sizer = wx.BoxSizer(wx.VERTICAL)
    # This way of adding to sizer allows resizing
    sizer.Add(self.canvas, 1, wx.LEFT|wx.TOP|wx.GROW)
    self.SetSizer(sizer)
    self.Fit()
    data = [100, 200, 300,]
    index = [1,2,3]
    self.axes = self.fig.add_subplot(111)
    etframes.add_range_frame(self.axes,minmax(data),minmax(index))
    self.axes.plot(index,data,'go')
</code></pre>
<p>class App(wx.App):<br />
    def OnInit(self):<br />
        self.frm = ActionFrame(None,title=&#8221;Action Frame&#8221;)<br />
        self.frm.Show()<br />
        self.SetTopWindow(self.frm)<br />
        return True</p>
<p>if <strong>name</strong> == &#8216;<strong>main</strong>&#8216;:<br />
    app = App(False)<br />
    app.MainLoop()</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: adam</title>
		<link>http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-61</link>
		<dc:creator>adam</dc:creator>
		<pubDate>Wed, 10 Oct 2007 17:03:09 +0000</pubDate>
		<guid isPermaLink="false">http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-61</guid>
		<description>&lt;p&gt;Thank you for the comments.   I'd love to hear about it if this was used in any kind of publication.&lt;/p&gt;

&lt;p&gt;Good point about the major tick marks.  You can turn them off by putting this into the script after the imports:&lt;/p&gt;

&lt;p&gt;rcParams['xtick.major.size'] = 0
rcParams['ytick.major.size'] = 0&lt;/p&gt;

&lt;p&gt;I don't see any cleaner way of doing this.  If you turn off the major ticks entirely it also turns off the numbers below.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Thank you for the comments.   I&#8217;d love to hear about it if this was used in any kind of publication.</p>
<p>Good point about the major tick marks.  You can turn them off by putting this into the script after the imports:</p>
<p>rcParams['xtick.major.size'] = 0<br />
rcParams['ytick.major.size'] = 0</p>
<p>I don&#8217;t see any cleaner way of doing this.  If you turn off the major ticks entirely it also turns off the numbers below.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: a11en</title>
		<link>http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-60</link>
		<dc:creator>a11en</dc:creator>
		<pubDate>Wed, 10 Oct 2007 06:54:29 +0000</pubDate>
		<guid isPermaLink="false">http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-60</guid>
		<description>&lt;p&gt;Ok, ok, last post for today, I promise- I noticed that the ticks in the dash regions of the dot-dash plot appear to still be there?  They can obscure the data a bit, adding a sense that data is there that isn't really in the distribution... was it a compromise due to the way of plotting, or is it possible to remove them?&lt;/p&gt;

&lt;p&gt;Thanks for all your thoughts and this great solution to the dot-dash and the range-plot!
-Allen&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Ok, ok, last post for today, I promise- I noticed that the ticks in the dash regions of the dot-dash plot appear to still be there?  They can obscure the data a bit, adding a sense that data is there that isn&#8217;t really in the distribution&#8230; was it a compromise due to the way of plotting, or is it possible to remove them?</p>
<p>Thanks for all your thoughts and this great solution to the dot-dash and the range-plot!<br />
-Allen</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: a11en</title>
		<link>http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-59</link>
		<dc:creator>a11en</dc:creator>
		<pubDate>Wed, 10 Oct 2007 06:40:47 +0000</pubDate>
		<guid isPermaLink="false">http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-59</guid>
		<description>&lt;p&gt;Ok, darnit, I hate when I do this... I figured it out.  :(  Sorry.  It was a problem with calling the routines.  For me, it doesn't seem to be able to guess which module has the call.  So, your script for the ddp demo looks like this for me:&lt;/p&gt;

&lt;p&gt;from numpy import random
import pylab
import etframes&lt;/p&gt;

&lt;p&gt;ys = [random.normal() for _ in range(100)]
xs = [random.normal() for _ in range(100)]&lt;/p&gt;

&lt;p&gt;pylab.scatter(xs,ys)&lt;/p&gt;

&lt;p&gt;etframes.add_dot_dash_plot(pylab.gca(), ys=ys, xs=xs)&lt;/p&gt;

&lt;p&gt;show()&lt;/p&gt;

&lt;p&gt;Essentially, all calls for me need to reference the imports... I don't know if import numpy as * would work... perhaps.  On some SciPy sites, I've seen the preference of having import numpy as n, import etframes as e, etc... then your calls are like: p.gca() intead of gca().&lt;/p&gt;

&lt;p&gt;In anycase, very very interesting work!!  :)  Feel free to edit the comments as you wish- I just wanted some of this info out there for anyone trying to make your demos work with a new/newbie install of SciPy and all the goodies.  :)&lt;/p&gt;

&lt;p&gt;Cheers!!
-Allen&lt;/p&gt;

&lt;p&gt;ps- If I use any of these in publications for any reason, you will get acknowledgment and I'll be in touch to let you know.  :)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Ok, darnit, I hate when I do this&#8230; I figured it out.  <img src='http://hupp.org/adam/weblog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Sorry.  It was a problem with calling the routines.  For me, it doesn&#8217;t seem to be able to guess which module has the call.  So, your script for the ddp demo looks like this for me:</p>
<p>from numpy import random<br />
import pylab<br />
import etframes</p>
<p>ys = [random.normal() for _ in range(100)]<br />
xs = [random.normal() for _ in range(100)]</p>
<p>pylab.scatter(xs,ys)</p>
<p>etframes.add_dot_dash_plot(pylab.gca(), ys=ys, xs=xs)</p>
<p>show()</p>
<p>Essentially, all calls for me need to reference the imports&#8230; I don&#8217;t know if import numpy as * would work&#8230; perhaps.  On some SciPy sites, I&#8217;ve seen the preference of having import numpy as n, import etframes as e, etc&#8230; then your calls are like: p.gca() intead of gca().</p>
<p>In anycase, very very interesting work!!  <img src='http://hupp.org/adam/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Feel free to edit the comments as you wish- I just wanted some of this info out there for anyone trying to make your demos work with a new/newbie install of SciPy and all the goodies.  <img src='http://hupp.org/adam/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Cheers!!<br />
-Allen</p>
<p>ps- If I use any of these in publications for any reason, you will get acknowledgment and I&#8217;ll be in touch to let you know.  <img src='http://hupp.org/adam/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: a11en</title>
		<link>http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-58</link>
		<dc:creator>a11en</dc:creator>
		<pubDate>Wed, 10 Oct 2007 06:29:36 +0000</pubDate>
		<guid isPermaLink="false">http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-58</guid>
		<description>&lt;p&gt;Umm... replace all instances of random() with normal()  my mistake!  [mistake is in the comment writing- not in the nature of the comment- I still can't run ddp.py]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Umm&#8230; replace all instances of random() with normal()  my mistake!  [mistake is in the comment writing- not in the nature of the comment- I still can't run ddp.py]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: a11en</title>
		<link>http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-57</link>
		<dc:creator>a11en</dc:creator>
		<pubDate>Wed, 10 Oct 2007 06:25:41 +0000</pubDate>
		<guid isPermaLink="false">http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-57</guid>
		<description>&lt;p&gt;Hi Adam, just registered- I was very excited by this, enough to finally try out an installation of python/scipy/matplotlib etc.  I'm very new at all this, but I'm giving it a go, just to try it out and learn more about scipy etc.&lt;/p&gt;

&lt;p&gt;I've tried out the demos, but am having some problems... demo_range.py works just fine (I'm manually typing this into iPython right now)- but, I can't seem to make the demo_ddp.py work.  It's telling me that it doesn't know what random() means.&lt;/p&gt;

&lt;p&gt;I suspect a problem in my install, but I've been able to run all the numpy tests without issues... so I'm a bit stumped.  I believe that numpy is importing without problems, but even if I import numpy as n, then do an n.random() I'm not getting anywhere.&lt;/p&gt;

&lt;p&gt;Any thoughts are greatly appreciated!  Like the plots!
-Allen&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi Adam, just registered- I was very excited by this, enough to finally try out an installation of python/scipy/matplotlib etc.  I&#8217;m very new at all this, but I&#8217;m giving it a go, just to try it out and learn more about scipy etc.</p>
<p>I&#8217;ve tried out the demos, but am having some problems&#8230; demo_range.py works just fine (I&#8217;m manually typing this into iPython right now)- but, I can&#8217;t seem to make the demo_ddp.py work.  It&#8217;s telling me that it doesn&#8217;t know what random() means.</p>
<p>I suspect a problem in my install, but I&#8217;ve been able to run all the numpy tests without issues&#8230; so I&#8217;m a bit stumped.  I believe that numpy is importing without problems, but even if I import numpy as n, then do an n.random() I&#8217;m not getting anywhere.</p>
<p>Any thoughts are greatly appreciated!  Like the plots!<br />
-Allen</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: seanstickle &#187; Blog Archive &#187; A python module that operates on matplotlib plots</title>
		<link>http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-56</link>
		<dc:creator>seanstickle &#187; Blog Archive &#187; A python module that operates on matplotlib plots</dc:creator>
		<pubDate>Mon, 08 Oct 2007 15:46:22 +0000</pubDate>
		<guid isPermaLink="false">http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/#comment-56</guid>
		<description>&lt;p&gt;[...] From Adam Hupp. [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] From Adam Hupp. [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
