Changeset 193
- Timestamp:
- 08/18/08 21:16:35 (11 months ago)
- Location:
- trunk
- Files:
-
- 4 modified
-
setup.py (modified) (1 diff)
-
shakespeare/controllers/stats.py (modified) (2 diffs)
-
shakespeare/templates/layout.html (modified) (1 diff)
-
shakespeare/templates/stats/text.html (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/setup.py
r155 r193 21 21 'SQLObject>=0.6', 22 22 'Genshi>=0.3', 23 'annotater>=0.1', 23 'pygooglechart>=0.2,<0.3', 24 # 'annotater>=0.1', 24 25 ], 25 26 test_suite='nose.collector', -
trunk/shakespeare/controllers/stats.py
r187 r193 1 1 import logging 2 2 3 import pygooglechart 4 3 5 from shakespeare.lib.base import * 4 5 6 log = logging.getLogger(__name__) 6 7 7 import shakespeare.stats 8 8 … … 18 18 c.text = text 19 19 c.stats = stats.text_stats(text) 20 # 40 seems limit for google 21 data = [ (s.word, s.freq) for s in c.stats[:40] ] 22 c.img_url = self.vertical_bar_chart(data) 20 23 return render('stats/text') 21 24 25 # TODO: factor this out to its module (?) 26 def vertical_bar_chart(self, data, width=500): 27 # tranpose 28 tdata = zip(*data) 29 labels = list(tdata[0]) 30 values = tdata[1] 31 bar_width = 10 32 # add 5 for space between bars 33 height = (bar_width + 5) * len(values) 34 # was setting x_range but automatic behaviour seems better 35 # x_range = (min(values), max(values)) 36 chart = pygooglechart.StackedHorizontalBarChart(width, height) 37 chart.set_bar_width(bar_width) 38 chart.set_colours(['cc0033']) 39 chart.add_data(values) 40 # have to reverse the labels for vertical 41 labels.reverse() 42 chart.set_axis_labels(pygooglechart.Axis.LEFT, labels) 43 chart.set_axis_range(pygooglechart.Axis.BOTTOM, 0, max(values)) 44 chart.set_axis_range(pygooglechart.Axis.TOP, 0, max(values)) 45 url = chart.get_url() 46 return url 47 -
trunk/shakespeare/templates/layout.html
r181 r193 59 59 <li><a href="${h.url_for(controller='text', action='index')}">Texts</a></li> 60 60 <li><a href="${h.url_for(controller='search', action='index')}">Search</a></li> 61 <li><a href="${h.url_for(controller='stats', action='index')}">Stats</a></li> 61 62 <li><a href="${h.url_for(controller='site', action='guide')}">Guide</a></li> 62 63 </ul> -
trunk/shakespeare/templates/stats/text.html
r187 r193 2 2 xmlns:xi="http://www.w3.org/2001/XInclude"> 3 3 4 <py:def function="page_title">Stats for ${c.text. name}</py:def>4 <py:def function="page_title">Stats for ${c.text.title}</py:def> 5 5 6 6 <div py:match="content"> 7 <table border="1"> 7 <img style="float: left;" 8 src="${c.img_url}" 9 alt="Word Statistics Bar Chart" /> 10 11 <table border="1" style="margin-left: 550px;"> 8 12 <thead> 9 13 <tr> 14 <th>Index</th> 10 15 <th> 11 16 Word … … 17 22 </thead> 18 23 <tbody> 19 <tr py:for="stat in c.stats"> 24 <tr py:for="index, stat in enumerate(c.stats)"> 25 <td> 26 ${index + 1} 27 </td> 20 28 <td> 21 29 ${stat.word}
