Mercurial > hg > rlgallery-misc
annotate py/stats2.py @ 55:e421ea2519ec
dgamelaunch: define user/group by name instead of UID/GID.
The user and group might not be created with the UID and GID expected,
so it is better to use names. They can be changed to numeric values
after installation.
author | John "Elwin" Edwards |
---|---|
date | Sun, 11 May 2014 08:32:31 -0700 |
parents | 0f4163dbbafc |
children | 5cf88bd4e556 |
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 |
45
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
46 class SVGChart(): |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
47 def __init__(self, filename): |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
48 self.of = open(filename, "w", encoding="utf-8") |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
49 self.of.write(dochead) |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
50 def style(self, barcolor): |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
51 self.of.write(stylesheet.format(barcolor)) |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
52 def write(self, obj): |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
53 self.of.write(obj) |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
54 def close(self): |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
55 self.of.write('</svg>\n') |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
56 self.of.close() |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
57 |
38
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
58 def ylimits(x): |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
59 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
|
60 m = 1 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
61 size = 0 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
62 while True: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
63 for i in ll: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
64 if i * m > x: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
65 size = i |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
66 lim = i * m |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
67 break |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
68 if size: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
69 break |
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 m *= 10 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
72 if size in [3, 6]: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
73 if lim == 3: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
74 divs = 3 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
75 else: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
76 divs = 6 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
77 elif size in [4, 8]: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
78 divs = 4 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
79 else: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
80 if lim == 2: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
81 divs = 2 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
82 else: |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
83 divs = 5 |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
84 return divs, lim |
d2c3c29ca4f9
Add a new statistics script that creates SVG plots.
John "Elwin" Edwards
parents:
diff
changeset
|
85 |
45
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
86 def titles(l, c, r): |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
87 return ltitle.format(l) + ctitle.format(c) + rtitle.format(r) |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
88 |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
89 def mkxlgraph(game, xldata): |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
90 xlgraph = SVGChart("{0}/xl-{1}.svg".format(svgpath, game.uname)) |
0f4163dbbafc
SVG charts: separate database-querying and chart-printing code.
John "Elwin" Edwards
parents:
43
diff
changeset
|
91 xlgraph.style("0000ff") |
43 | 92 xlgraph.write(framerect) |
45 |