costs = {b['i']:b['cost'] for b in hdata.Bombers} days = sorted(hhist.group_by_date(save.history)) data = [] for d in days: profit.daily_profit(d, bombers, targets, classes, d[0]>=after if after else True, False) bombers = {i:bombers[i] for i in bombers if bombers[i][3]} results = {i: {k:v for k,v in bombers.iteritems() if v[0] == i} for i in xrange(save.ntypes)} results[None] = {k:v for k,v in bombers.iteritems()} full = {i: (len(results[i]), sum(costs[d[0]] for d in results[i].itervalues()), sum(v[1] for v in results[i].itervalues())) for i in results} deadresults = {i: {k:v for k,v in results[i].iteritems() if not v[2]} for i in results} dead = {i: (len(deadresults[i]), sum(costs[d[0]] for d in deadresults[i].itervalues()), sum(v[1] for v in deadresults[i].itervalues())) for i in results} if opts.opti: value = {i: full[i][2]/float(dead[i][1]) if dead[i][0] >= opts.min else None for i in results} elif opts.dead: value = {i: dead[i][2]/float(dead[i][1]) if dead[i][0] else None for i in results} else: value = {i: full[i][2]/float(full[i][1]) if full[i][0] else None for i in results} if after is None or d[0]>=after: data.append((d[0], value)) fig = plt.figure() ax = fig.add_subplot(1,1,1) dates = zip(*data)[0] values = dict(data) gt = plt.plot_date([d.ordinal() for d in dates], [values[d][None] for d in dates], fmt='.-', color='g', tz=None, xdate=True, ydate=False, label='Overall', zorder=1) for bi,b in enumerate(hdata.Bombers): if not full[bi][0]: continue gb = plt.plot_date([d.ordinal() for d in dates if hdata.inservice(d, b)], [values[d][bi] for d in dates if hdata.inservice(d, b)], fmt='o-', mew=0, color=extra[b['name']]['colour'], tz=None, xdate=True, ydate=False, label=b['name'], zorder=0) ax.grid(b=True, axis='y') if opts.legend: plt.legend(ncol=2, loc='upper left') plt.show()
""" import sys import hhist, hdata, prodloss from extra_data import Bombers as extra import matplotlib.pyplot as plt if __name__ == '__main__': legend = '--nolegend' not in sys.argv entries = hhist.import_from_save(sys.stdin) data = prodloss.extract_prodloss(entries) fig = plt.figure() ax = fig.add_subplot(1,1,1) dates = [key.ordinal() for key in sorted(data)] total = [[sum(d[0] for d in data[key]), sum(d[1] for d in data[key])] for key in sorted(data)] top = max(zip(*total)[0]) bottom = min(zip(*total)[1]) plt.axis(ymax=max(top, -bottom), ymin=min(-top, bottom)) gt = plt.plot_date(dates, zip(*total)[0], fmt='k+-', tz=None, xdate=True, ydate=False, label='total', zorder=-2) gb = plt.plot_date(dates, zip(*total)[1], fmt='k+-', tz=None, xdate=True, ydate=False, label=None, zorder=-2) for bi,b in enumerate(hdata.Bombers.data): bprod = [data[key][bi][0] for key in sorted(data) if hdata.inservice(key, b)] bloss = [data[key][bi][1] for key in sorted(data) if hdata.inservice(key, b)] if not any(bprod+bloss): continue bdate = [key.ordinal() for key in sorted(data) if hdata.inservice(key, b)] gp = plt.plot_date(bdate, bprod, fmt='o-', mew=0, color=extra[b['name']]['colour'], tz=None, xdate=True, ydate=False, label=b['name'], zorder=0) gl = plt.plot_date(bdate, bloss, fmt='o-', mew=0, color=extra[b['name']]['colour'], tz=None, xdate=True, ydate=False, label=None, zorder=0) plt.axhline(y=0, xmin=0, xmax=1, c='k', zorder=-1) if legend: plt.legend(ncol=2) plt.show()
def i(d): return hdata.inservice(d, f) and d >= lbc["date"]
def ins(m): return hdata.inservice(m, f) or hdata.inservice(m.nextmonth(), f)
tz=None, xdate=True, ydate=False, label='total', zorder=-2) gc = plt.plot_date(dates, [e['cash'] / 1e3 for e in data], fmt='g+-', tz=None, xdate=True, ydate=False, label='cash', zorder=2) for bi, b in enumerate(hdata.Bombers.data): bvalue = [ datum['bvalues'][bi] / 1e3 for datum in data if hdata.inservice(datum['date'], b) ] if not any(bvalue): continue bdate = [ datum['date'].ordinal() for datum in data if hdata.inservice(datum['date'], b) ] gb = plt.plot_date(bdate, bvalue, fmt='o-', mew=0, color=extra[b['name']]['colour'], tz=None, xdate=True, ydate=False, label=b['name'],
if __name__ == "__main__": showtotal = "--nototal" not in sys.argv legend = "--nolegend" not in sys.argv data = fighters.extract_fighters(sys.stdin) fig = plt.figure() ax = fig.add_subplot(1, 1, 1) cols = ["0.6", "0.4", "r", "y", "m", "g", "y", "b"] dates = [datum["date"].ordinal() for datum in data] lbc = hdata.Events.find("id", "L_BC") if showtotal: gt = plt.plot_date( dates, [e["total"] for e in data], fmt="ko-", tz=None, xdate=True, ydate=False, label="total", zorder=-2 ) for fi, f in enumerate(hdata.Fighters.data): gf = plt.plot_date( [datum["date"].ordinal() for datum in data if hdata.inservice(datum["date"], f)], [e["fighters"][fi] for e in data if hdata.inservice(e["date"], f)], fmt="o-", color=extra[f["name"]]["colour"], tz=None, xdate=True, ydate=False, label=f["name"], zorder=0, ) if f["radpri"]: def i(d): return hdata.inservice(d, f) and d >= lbc["date"] gr = plt.plot_date(
tz=None, xdate=True, ydate=False, label='total', zorder=-2) gtl = plt.plot_date([d.ordinal() for d in dates], [-data[d]['total']['losses'] for d in dates], fmt='k+-', tz=None, xdate=True, ydate=False, label=None, zorder=-2) for fi, f in enumerate(hdata.Fighters.data): gfk = plt.plot_date( [d.ordinal() for d in dates if hdata.inservice(d, f)], [data[d]['kills'][fi] for d in dates if hdata.inservice(d, f)], fmt='o-', mew=0, color=extra[f['name']]['colour'], tz=None, xdate=True, ydate=False, label=f['name'], zorder=0) gfl = plt.plot_date( [d.ordinal() for d in dates if hdata.inservice(d, f)], [-data[d]['losses'][fi] for d in dates if hdata.inservice(d, f)], fmt='o-', mew=0, color=extra[f['name']]['colour'],
def ins(m): return hdata.inservice(m, b) or hdata.inservice(m.nextmonth(), b)
def i(d): return hdata.inservice(d, f) and d >= lbc['date']
#!/usr/bin/python """fighterkillgraph - graph of enemy fighter kills & losses Requires matplotlib, see http://matplotlib.org or search your package manager (Debian: apt-get install python-matplotlib) """ import sys import hdata, fighterkill from extra_data import Fighters as extra import matplotlib.pyplot as plt if __name__ == '__main__': showtotal = '--nototal' not in sys.argv legend = '--nolegend' not in sys.argv data = fighterkill.extract_kills(sys.stdin) fig = plt.figure() ax = fig.add_subplot(1,1,1) dates = sorted(data.keys()) if showtotal: gtk = plt.plot_date([d.ordinal() for d in dates], [data[d]['total']['kills'] for d in dates], fmt='k+-', tz=None, xdate=True, ydate=False, label='total', zorder=-2) gtl = plt.plot_date([d.ordinal() for d in dates], [-data[d]['total']['losses'] for d in dates], fmt='k+-', tz=None, xdate=True, ydate=False, label=None, zorder=-2) for fi,f in enumerate(hdata.Fighters.data): gfk = plt.plot_date([d.ordinal() for d in dates if hdata.inservice(d, f)], [data[d]['kills'][fi] for d in dates if hdata.inservice(d, f)], fmt='o-', mew=0, color=extra[f['name']]['colour'], tz=None, xdate=True, ydate=False, label=f['name'], zorder=0) gfl = plt.plot_date([d.ordinal() for d in dates if hdata.inservice(d, f)], [-data[d]['losses'][fi] for d in dates if hdata.inservice(d, f)], fmt='o-', mew=0, color=extra[f['name']]['colour'], tz=None, xdate=True, ydate=False, label=None, zorder=0) if legend: plt.legend(ncol=2, loc='upper left') plt.show()
ax = fig.add_subplot(1, 1, 1) cols = ['0.6', '0.4', 'r', 'y', 'm', 'g', 'y', 'b'] dates = [datum['date'].ordinal() for datum in data] lbc = hdata.Events.find('id', 'L_BC') if showtotal: gt = plt.plot_date(dates, [e['total'] for e in data], fmt='ko-', tz=None, xdate=True, ydate=False, label='total', zorder=-2) for fi, f in enumerate(hdata.Fighters.data): gf = plt.plot_date([ datum['date'].ordinal() for datum in data if hdata.inservice(datum['date'], f) ], [e['fighters'][fi] for e in data if hdata.inservice(e['date'], f)], fmt='o-', color=extra[f['name']]['colour'], tz=None, xdate=True, ydate=False, label=f['name'], zorder=0) if f['radpri']: def i(d): return hdata.inservice(d, f) and d >= lbc['date'] gr = plt.plot_date([ datum['date'].ordinal() for datum in data if i(datum['date'])
Requires matplotlib, see http://matplotlib.org or search your package manager (Debian: apt-get install python-matplotlib) """ import sys import hdata, value from extra_data import Bombers as extra import matplotlib.pyplot as plt if __name__ == '__main__': showtotal = '--nototal' not in sys.argv legend = '--nolegend' not in sys.argv projected = '--project' in sys.argv data = value.extract_value(sys.stdin) fig = plt.figure() ax = fig.add_subplot(1,1,1) dates = [datum['date'].ordinal() for datum in data] if projected: if showtotal: gt = plt.plot_date(dates, [(e['total']+e['cshr']*25)/1e3 for e in data], fmt='ko-', tz=None, xdate=True, ydate=False, label='total', zorder=-2) gp = plt.plot_date(dates, [(e['cshr']*25)/1e3 for e in data], fmt='gd-', tz=None, xdate=True, ydate=False, label='projected', zorder=2) else: if showtotal: gt = plt.plot_date(dates, [e['total']/1e3 for e in data], fmt='ko-', tz=None, xdate=True, ydate=False, label='total', zorder=-2) gc = plt.plot_date(dates, [e['cash']/1e3 for e in data], fmt='g+-', tz=None, xdate=True, ydate=False, label='cash', zorder=2) for bi,b in enumerate(hdata.Bombers.data): bvalue = [datum['bvalues'][bi]/1e3 for datum in data if hdata.inservice(datum['date'], b)] if not any(bvalue): continue bdate = [datum['date'].ordinal() for datum in data if hdata.inservice(datum['date'], b)] gb = plt.plot_date(bdate, bvalue, fmt='o-', mew=0, color=extra[b['name']]['colour'], tz=None, xdate=True, ydate=False, label=b['name'], zorder=0) if legend: plt.legend(ncol=2, loc='upper left') plt.show()
#!/usr/bin/python2 """fightersgraph - graph of enemy fighter force Requires matplotlib, see http://matplotlib.org or search your package manager (Debian: apt-get install python-matplotlib) """ import sys import hdata, fighters from extra_data import Fighters as extra import matplotlib.pyplot as plt if __name__ == '__main__': showtotal = '--nototal' not in sys.argv legend = '--nolegend' not in sys.argv data = fighters.extract_fighters(sys.stdin) fig = plt.figure() ax = fig.add_subplot(1,1,1) cols = ['0.6','0.4','r','y','m','g','y','b'] dates = [datum['date'].ordinal() for datum in data] lbc = hdata.Events.find('id', 'L_BC') if showtotal: gt = plt.plot_date(dates, [e['total'] for e in data], fmt='ko-', tz=None, xdate=True, ydate=False, label='total', zorder=-2) for fi,f in enumerate(hdata.Fighters.data): gf = plt.plot_date([datum['date'].ordinal() for datum in data if hdata.inservice(datum['date'], f)], [e['fighters'][fi] for e in data if hdata.inservice(e['date'], f)], fmt='o-', color=extra[f['name']]['colour'], tz=None, xdate=True, ydate=False, label=f['name'], zorder=0) if f['radpri']: def i(d): return hdata.inservice(d, f) and d >= lbc['date'] gr = plt.plot_date([datum['date'].ordinal() for datum in data if i(datum['date'])], [e['radar'][fi] for e in data if i(e['date'])], fmt='o-', color=extra[f['name']]['2colour'], tz=None, xdate=True, ydate=False, label=None, zorder=0) if legend: plt.legend(ncol=2, loc='upper left') plt.show()