Exemplo n.º 1
0
	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()
Exemplo n.º 2
0
"""

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()
Exemplo n.º 3
0
 def i(d):
     return hdata.inservice(d, f) and d >= lbc["date"]
Exemplo n.º 4
0
 def ins(m):
     return hdata.inservice(m, f) or hdata.inservice(m.nextmonth(), f)
Exemplo n.º 5
0
                            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'],
Exemplo n.º 6
0
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(
Exemplo n.º 7
0
                         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'],
Exemplo n.º 8
0
		def ins(m):
			return hdata.inservice(m, b) or hdata.inservice(m.nextmonth(), b)
Exemplo n.º 9
0
 def i(d):
     return hdata.inservice(d, f) and d >= lbc['date']
Exemplo n.º 10
0
#!/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()
Exemplo n.º 11
0
    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'])
Exemplo n.º 12
0
	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()
Exemplo n.º 13
0
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()
Exemplo n.º 14
0
#!/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()
Exemplo n.º 15
0
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()