From f3d8eb5975a5a0f7e19812f6fb5ad8975d34b24c Mon Sep 17 00:00:00 2001 From: JenniferKuo Date: Fri, 29 Jul 2022 01:07:39 +0800 Subject: [PATCH] adjustable display transparancy of snapshots --- __pycache__/agent.cpython-36.pyc | Bin 0 -> 1716 bytes __pycache__/simulation.cpython-36.pyc | Bin 0 -> 8573 bytes main.py | 4 ++-- simulation.py | 15 +++++++++------ 4 files changed, 11 insertions(+), 8 deletions(-) create mode 100644 __pycache__/agent.cpython-36.pyc create mode 100644 __pycache__/simulation.cpython-36.pyc diff --git a/__pycache__/agent.cpython-36.pyc b/__pycache__/agent.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4a515645de95630b37cedb063c0993b27bd22401 GIT binary patch literal 1716 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 J(^Bi~{{WtK?6m*@ literal 0 HcmV?d00001 diff --git a/main.py b/main.py index 87240ab..eca66ba 100644 --- a/main.py +++ b/main.py @@ -9,8 +9,8 @@ def main(): average_degree = 8 # Average degree of social network num_episode = 2 # Number of total episode in a single simulation for taking ensemble average network_type = "lattice" # topology of social network - - simulation = Simulation(population, average_degree, network_type) + display_transparency = 0.7 + simulation = Simulation(population, average_degree, network_type,display_transparency) for episode in range(num_episode): random.seed() diff --git a/simulation.py b/simulation.py index 6221391..c8d05b2 100644 --- a/simulation.py +++ b/simulation.py @@ -7,7 +7,7 @@ class Simulation: - def __init__(self, population, average_degree, network_type): + def __init__(self, population, average_degree, network_type,display_transparency): """ network_type has several options, give following network type as string; 1. lattice @@ -22,7 +22,7 @@ def __init__(self, population, average_degree, network_type): self.network = None self.agents = self.__generate_agents(population, average_degree) self.initial_cooperators = self.__choose_initial_cooperators() - + self.display_transparency = display_transparency def __generate_agents(self, population, average_degree): if self.network_type == "lattice": self.network = self.__generate_lattice(population) @@ -245,12 +245,15 @@ def color(i): else: pos = nx.spring_layout(self.network) - nx.draw_networkx_edges(self.network, pos) - nx.draw_networkx_nodes(self.network, pos, node_color = list(color.values()), node_size = 10) + nx.draw_networkx_edges(self.network, pos,alpha=self.display_transparency) + nx.draw_networkx_nodes(self.network, pos, node_color = list(color.values()), node_size = 10,alpha=self.display_transparency) plt.title('t={}'.format(timestep), fontsize=20) plt.xticks([]) plt.yticks([]) - plt.savefig(f"snapshot_t={timestep}.png") + if self.display_transparency==1: + plt.savefig(f"snapshot_t={timestep}.png",transparent=False) + else: + plt.savefig(f"snapshot_t={timestep}.png",transparent=True) plt.close() def one_episode(self, episode): @@ -264,5 +267,5 @@ def one_episode(self, episode): fc_converged = self.__play_game(episode, Dg, Dr) new_result = pd.DataFrame([[format(Dg, '.1f'), format(Dr, '.1f'), fc_converged]], columns = ['Dg', 'Dr', 'Fc']) result = result.append(new_result) - + self.__take_snapshot(1) result.to_csv(f"phase_diagram{episode}.csv") \ No newline at end of file