nes updates
This commit is contained in:
parent
3ab0e05d2f
commit
aa12c04186
|
@ -1,20 +1,24 @@
|
||||||
from __future__ import division
|
from __future__ import division, print_function
|
||||||
|
|
||||||
import axi
|
import axi
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
NUMBER = '?'
|
|
||||||
TITLE = 'Five Seconds of Donkey Kong'
|
W, H = 11-2, 14-2
|
||||||
|
DW, DH = axi.A3_SIZE
|
||||||
|
|
||||||
|
NUMBER = '48'
|
||||||
|
TITLE = 'Fifteen Seconds of The Legend of Zelda'
|
||||||
LABEL = '#%s' % NUMBER
|
LABEL = '#%s' % NUMBER
|
||||||
|
|
||||||
COLUMNS = 6
|
COLUMNS = 8
|
||||||
SECONDS = 5
|
SECONDS = 15
|
||||||
FRAME_OFFSET = 0
|
FRAME_OFFSET = 900
|
||||||
MIN_CHANGES = 1
|
MIN_CHANGES = 2
|
||||||
UNIQUE = False
|
UNIQUE = False
|
||||||
SIMPLIFY = 0
|
SIMPLIFY = 5
|
||||||
|
|
||||||
def simplify_sparkline(values, n):
|
def simplify_sparkline(values, n):
|
||||||
if not n:
|
if not n:
|
||||||
|
@ -52,11 +56,11 @@ def title():
|
||||||
d = d.join_paths(0.01)
|
d = d.join_paths(0.01)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def label():
|
def label(x, y):
|
||||||
d = axi.Drawing(axi.text(LABEL, axi.FUTURAL))
|
d = axi.Drawing(axi.text(LABEL, axi.FUTURAL))
|
||||||
d = d.scale_to_fit_height(0.125)
|
d = d.scale_to_fit_height(0.125)
|
||||||
d = d.rotate(-90)
|
d = d.rotate(-90)
|
||||||
d = d.move(12, 8.5, 1, 1)
|
d = d.move(x, y, 1, 1)
|
||||||
d = d.join_paths(0.01)
|
d = d.join_paths(0.01)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
@ -72,9 +76,9 @@ def main():
|
||||||
lines = filter(None, lines)
|
lines = filter(None, lines)
|
||||||
|
|
||||||
# read values and transpose
|
# read values and transpose
|
||||||
data = [map(int, line.split(',')) for line in lines]
|
data = [tuple(map(int, line.split(','))) for line in lines]
|
||||||
data = np.transpose(data)
|
data = np.transpose(data)
|
||||||
print '%d series in file' % len(data)
|
print('%d series in file' % len(data))
|
||||||
|
|
||||||
# trim to SECONDS worth of data
|
# trim to SECONDS worth of data
|
||||||
n = len(data[0])
|
n = len(data[0])
|
||||||
|
@ -86,7 +90,7 @@ def main():
|
||||||
|
|
||||||
# remove addresses with too few values
|
# remove addresses with too few values
|
||||||
data = [x for x in data if len(set(x)) > MIN_CHANGES]
|
data = [x for x in data if len(set(x)) > MIN_CHANGES]
|
||||||
print '%d series that changed' % len(data)
|
print('%d series that changed' % len(data))
|
||||||
|
|
||||||
# remove duplicate series
|
# remove duplicate series
|
||||||
if UNIQUE:
|
if UNIQUE:
|
||||||
|
@ -99,16 +103,16 @@ def main():
|
||||||
seen.add(k)
|
seen.add(k)
|
||||||
new_data.append(x)
|
new_data.append(x)
|
||||||
data = new_data
|
data = new_data
|
||||||
print '%d unique series' % len(data)
|
print('%d unique series' % len(data))
|
||||||
|
|
||||||
# delete repetitive stuff
|
# delete repetitive stuff
|
||||||
# del data[136:136+8*14]
|
del data[136:136+8*14]
|
||||||
|
|
||||||
# trim so all rows are full
|
# trim so all rows are full
|
||||||
data = data[:int((len(data) // COLUMNS) * COLUMNS)]
|
data = data[:int((len(data) // COLUMNS) * COLUMNS)]
|
||||||
print '%d series after trimming' % len(data)
|
print('%d series after trimming' % len(data))
|
||||||
|
|
||||||
print '%d data points each' % len(data[0])
|
print('%d data points each' % len(data[0]))
|
||||||
|
|
||||||
# create sparklines in a grid pattern
|
# create sparklines in a grid pattern
|
||||||
paths = []
|
paths = []
|
||||||
|
@ -128,16 +132,21 @@ def main():
|
||||||
y = 1 - value + r * 1.5
|
y = 1 - value + r * 1.5
|
||||||
path.append((x, y))
|
path.append((x, y))
|
||||||
paths.append(path)
|
paths.append(path)
|
||||||
|
|
||||||
d = axi.Drawing(paths)
|
d = axi.Drawing(paths)
|
||||||
|
|
||||||
# add title and label and fit to page
|
# add title and label and fit to page
|
||||||
d = d.scale(8.5 / d.width, (12 - 0.5) / d.height)
|
d = d.scale(W / d.width, (H - 0.5) / d.height)
|
||||||
d = stack_drawings([d, title()], 0.25)
|
d = stack_drawings([d, title()], 0.25)
|
||||||
d = d.rotate(-90)
|
d = d.rotate(-90)
|
||||||
d = d.center(12, 8.5)
|
d = d.center(DW, DH)
|
||||||
d.add(label())
|
_, _, lx, ly = d.bounds
|
||||||
|
d.add(label(lx, ly))
|
||||||
|
|
||||||
print d.bounds
|
d = d.simplify_paths(0.001)
|
||||||
|
|
||||||
|
print(d.bounds)
|
||||||
|
print(d.size)
|
||||||
|
|
||||||
# save outputs
|
# save outputs
|
||||||
dirname = 'nes/%s' % NUMBER
|
dirname = 'nes/%s' % NUMBER
|
||||||
|
@ -146,11 +155,10 @@ def main():
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
d.dump(os.path.join(dirname, 'out.axi'))
|
d.dump(os.path.join(dirname, 'out.axi'))
|
||||||
rotated = d.rotate(90).center(8.5, 12)
|
rotated = d.rotate(90).center(DH, DW)
|
||||||
rotated.dump_svg(os.path.join(dirname, 'out.svg'))
|
rotated.dump_svg(os.path.join(dirname, 'out.svg'))
|
||||||
im = rotated.render(
|
x0, y0, x1, y1 = rotated.bounds
|
||||||
scale=109 * 1, line_width=0.3/25.4,
|
im = rotated.render(bounds=(x0 - 1, y0 - 1, x1 + 1, y1 + 1))
|
||||||
show_axi_bounds=False, use_axi_bounds=False)
|
|
||||||
im.write_to_png(os.path.join(dirname, 'out.png'))
|
im.write_to_png(os.path.join(dirname, 'out.png'))
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
Loading…
Reference in New Issue