Mercurial > hg > rlgallery-misc
annotate py/stats2.py @ 40:1ddd2d950e31
SVG charts: reduce frame stroke width.
If the frame stroke is too wide, bars of height 1 aren't visible.
author | John "Elwin" Edwards |
---|---|
date | Fri, 10 Jan 2014 12:00:37 -0500 |
parents | a97a20571526 |
children | 3ecbd4fa2a08 |
rev | line source |
---|---|
38
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
1 #!/usr/bin/python3 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
2 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
3 import psycopg2 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
4 import rlgall |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
5 from datetime import datetime |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
6 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
7 sitename = "rlgallery.org" |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
8 svgpath = rlgall.webdir |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
9 timestr = datetime.utcnow().strftime("%Y-%m-%d %H:%M") |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
10 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
11 dochead = """<?xml version="1.0" encoding="UTF-8"?> |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
12 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="900" height="600"> |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
13 """ |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
14 stylesheet = """<style type="text/css"> |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
15 rect.frame {{ |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
16 fill:#ffffff; |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
17 fill-opacity:1; |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
18 stroke:#000000; |
40 | 19 stroke-width:2; |
38
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
20 stroke-opacity:1; |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
21 }} |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
22 rect.bar {{ |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
23 fill:#{0}; |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
24 fill-opacity:1; |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
25 stroke:#000000; |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
26 stroke-width:2; |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
27 stroke-opacity:1; |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
28 }} |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
29 </style> |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
30 """ |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
31 framerect = '<rect width="750" height="500" x="100" y="50" class="frame"/>\n' |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
32 barstr = '<rect width="{0}" height="{1}" x="{2}" y="{3}" class="bar"/>\n' |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
33 xllabel = '<text x="{0}" y="570" font-size="15" text-anchor="middle">{1}</text>\n' |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
34 ylabel = '<text x="90" y="{0}" font-size="16" text-anchor="end">{1}</text>\n' |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
35 xlabelf = '<text x="475" y="590" font-size="15" text-anchor="middle">{0}</text>\n' |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
36 ltitle = '<text x="100" y="35" font-size="16" text-anchor="start">{0}</text>\n' |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
37 ctitle = '<text x="475" y="34" font-size="18" text-anchor="middle">{0}</text>\n' |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
38 rtitle = '<text x="850" y="35" font-size="16" text-anchor="end">{0}</text>\n' |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
39 ylabelf = """<g transform="translate(100, 300)"> |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
40 <g transform="rotate(-90)"> |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
41 <text x="0" y="-60" font-size="16" text-anchor="middle">{0}</text> |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
42 </g> |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
43 </g> |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
44 """ |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
45 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
46 def ylimits(x): |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
47 ll = [2, 3, 4, 5, 6, 8, 10, 15] |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
48 m = 1 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
49 size = 0 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
50 while True: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
51 for i in ll: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
52 if i * m > x: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
53 size = i |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
54 lim = i * m |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
55 break |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
56 if size: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
57 break |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
58 else: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
59 m *= 10 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
60 if size in [3, 6]: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
61 if lim == 3: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
62 divs = 3 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
63 else: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
64 divs = 6 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
65 elif size in [4, 8]: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
66 divs = 4 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
67 else: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
68 if lim == 2: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
69 divs = 2 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
70 else: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
71 divs = 5 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
72 return divs, lim |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
73 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
74 con = psycopg2.connect("dbname=rlg") |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
75 cur = con.cursor() |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
76 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
77 for game in rlgall.gamelist: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
78 xlq = "SELECT count(*) FROM {0} WHERE xl = %s;".format(game.uname) |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
79 scrq = "SELECT count(*) FROM {0} WHERE score >= %s AND score < %s;".format(game.uname) |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
80 xls = range(1, 16) |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
81 scoreblocks = range(10) |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
82 xlcounts = [] |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
83 scorecounts = [] |
39
a97a20571526
stats2.py: adjust x-axis scale for arogue5 score chart.
John "Elwin" Edwards
parents:
38
diff
changeset
|
84 if isinstance(game, rlgall.ARogueGame): |
a97a20571526
stats2.py: adjust x-axis scale for arogue5 score chart.
John "Elwin" Edwards
parents:
38
diff
changeset
|
85 scorewidth = 1500 |
a97a20571526
stats2.py: adjust x-axis scale for arogue5 score chart.
John "Elwin" Edwards
parents:
38
diff
changeset
|
86 else: |
a97a20571526
stats2.py: adjust x-axis scale for arogue5 score chart.
John "Elwin" Edwards
parents:
38
diff
changeset
|
87 scorewidth = 1000 |
38
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
88 for xl in xls: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
89 cur.execute(xlq, [xl]) |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
90 xlcounts.append(cur.fetchone()[0]) |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
91 for sn in scoreblocks: |
39
a97a20571526
stats2.py: adjust x-axis scale for arogue5 score chart.
John "Elwin" Edwards
parents:
38
diff
changeset
|
92 lscore = sn * scorewidth |
38
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
93 if sn == 9: |
39
a97a20571526
stats2.py: adjust x-axis scale for arogue5 score chart.
John "Elwin" Edwards
parents:
38
diff
changeset
|
94 hscore = scorewidth * 32 |