Skip to content

Commit 320226f

Browse files
authored
Merge pull request #5 from AEL-H/visualisation
Visualisation
2 parents 3d11fdf + 8599f7c commit 320226f

File tree

2 files changed

+25
-23
lines changed

2 files changed

+25
-23
lines changed

insurancesimulation.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -349,8 +349,8 @@ def save_data(self):
349349

350350
# agent-level data
351351

352-
insurance_firms = [(insurancefirm.cash,insurancefirm.id) for insurancefirm in self.insurancefirms]
353-
reinsurance_firms = [(reinsurancefirm.cash,reinsurancefirm.id) for reinsurancefirm in self.reinsurancefirms]
352+
insurance_firms = [(insurancefirm.cash,insurancefirm.id,insurancefirm.operational) for insurancefirm in self.insurancefirms]
353+
reinsurance_firms = [(reinsurancefirm.cash,reinsurancefirm.id,reinsurancefirm.operational) for reinsurancefirm in self.reinsurancefirms]
354354

355355

356356
self.history_logs['total_cash'].append(total_cash_no)

visualisation.py

+23-21
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,69 @@
11
# file to visualise agent-level data per timestep
2+
23
import numpy as np
34
import matplotlib.pyplot as plt
45
import matplotlib.animation as animation
5-
# read in data for each agent for each timestep
66

7-
# read in insurancefirm data
8-
rfile = open("data/two_insurance_firms_cash.dat","r")
7+
# read in data for each agent for each timestep
8+
# read in insurancefirm data
9+
rfile = open("data/insurance_firms_cash.dat","r")
910
insurance_firms_cash = [eval(k) for k in rfile]
1011
rfile.close()
11-
# read in reinsurancefirm data
12-
rfile = open("data/two_reinsurance_firms_cash.dat","r")
12+
# read in reinsurancefirm data
13+
rfile = open("data/reinsurance_firms_cash.dat","r")
1314
reinsurance_firms_cash = [eval(k) for k in rfile]
1415
rfile.close()
1516

1617
insurance_firms_cash = np.array(insurance_firms_cash)
1718
reinsurance_firms_cash = np.array(reinsurance_firms_cash)
1819

1920
# shape (runs, steps)
20-
print(insurance_firms_cash.shape)
21-
print(reinsurance_firms_cash.shape)
2221

2322
# let's look at only the first run
2423
first_run_insurance = insurance_firms_cash[0][:]
2524
first_run_reinsurance = reinsurance_firms_cash[0][:]
2625

2726
class InsuranceFirmAnimation(object):
27+
'''class takes in a run of insurance data and produces animations '''
2828
def __init__(self, data):
2929
self.data = data
3030
self.fig, self.ax = plt.subplots()
3131
self.stream = self.data_stream()
32-
self.ani = animation.FuncAnimation(self.fig, self.update, interval=40,
32+
self.ani = animation.FuncAnimation(self.fig, self.update, repeat=False, interval=40,
3333
init_func=self.setup_plot)
3434

3535
def setup_plot(self):
36-
"""Initial drawing of the scatter plot."""
36+
"""Initial drawing of the plots."""
3737
casharr,idarr = next(self.stream)
38-
39-
self.pie = self.ax.pie(casharr, labels=idarr)
40-
38+
self.pie = self.ax.pie(casharr, labels=idarr,autopct='%1.0f%%')
4139
return self.pie,
4240

4341
def data_stream(self):
4442
for timestep in self.data:
4543
casharr = []
4644
idarr = []
47-
for (cash, id) in timestep:
48-
casharr.append(cash)
49-
idarr.append(id)
45+
for (cash, id, operational) in timestep:
46+
if operational:
47+
casharr.append(cash)
48+
idarr.append(id)
5049
yield casharr,idarr
5150

5251
def update(self, i):
5352
self.ax.clear()
5453
self.ax.axis('equal')
5554
casharr,idarr = next(self.stream)
56-
self.pie = self.ax.pie(casharr, labels=idarr)
57-
self.ax.set_title("Timestep : " + str(i))
55+
self.pie = self.ax.pie(casharr, labels=idarr,autopct='%1.0f%%')
56+
self.ax.set_title("Timestep : {:,.0f} | Total cash : {:,.0f}".format(i,sum(casharr)))
5857
return self.pie,
5958

60-
def save(self):
61-
self.ani.save('line.mp4', writer='ffmpeg', dpi=80)
59+
def save(self,filename):
60+
self.ani.save(filename, writer='ffmpeg', dpi=80)
6261

6362
def show(self):
6463
plt.show()
6564

66-
anim = InsuranceFirmAnimation(first_run_reinsurance)
67-
anim.show()
65+
anim1 = InsuranceFirmAnimation(first_run_insurance)
66+
anim2 = InsuranceFirmAnimation(first_run_reinsurance)
67+
#anim1.save("insurance.mp4")
68+
#anim2.save("reinsurance.mp4")
69+
plt.show()

0 commit comments

Comments
 (0)