def _payoff_heatmap( self, data: dataType, names: namesType, title: titleType = None, ax: matplotlib.axes.SubplotBase = None ) -> matplotlib.figure.Figure: """Generic heatmap plot""" if ax is None: _, ax = plt.subplots() else: ax = ax figure = ax.get_figure() width = max(self.nplayers / 4, 12) height = width figure.set_size_inches(width, height) matplotlib_version = matplotlib.__version__ cmap = default_cmap(matplotlib_version) mat = ax.matshow(data, cmap=cmap) ax.set_xticks(range(self.result_set.nplayers)) ax.set_yticks(range(self.result_set.nplayers)) ax.set_xticklabels(names, rotation=90) ax.set_yticklabels(names) ax.tick_params(axis='both', which='both', labelsize=16) if title: ax.set_xlabel(title) figure.colorbar(mat, ax=ax) plt.tight_layout() return figure
def _violinplot( self, data: dataType, names: namesType, title: titleType = None, ax: matplotlib.axes.SubplotBase = None ) -> matplotlib.figure.Figure: """For making violinplots.""" if ax is None: _, ax = plt.subplots() else: ax = ax figure = ax.get_figure() width = max(self.nplayers / 3, 12) height = width / 2 spacing = 4 positions = spacing * arange(1, self.nplayers + 1, 1) figure.set_size_inches(width, height) ax.violinplot(data, positions=positions, widths=spacing / 2, showmedians=True, showextrema=False) ax.set_xticks(positions) ax.set_xticklabels(names, rotation=90) ax.set_xlim([0, spacing * (self.nplayers + 1)]) ax.tick_params(axis='both', which='both', labelsize=8) if title: ax.set_title(title) plt.tight_layout() return figure
def _payoff_heatmap( self, data: dataType, names: namesType, title: titleType = None, ax: matplotlib.axes.SubplotBase = None ) -> matplotlib.figure.Figure: """Generic heatmap plot""" if not self.matplotlib_installed: return None if ax is None: _, ax = plt.subplots() else: ax = ax figure = ax.get_figure() width = max(self.nplayers / 4, 12) height = width figure.set_size_inches(width, height) cmap = default_cmap() mat = ax.matshow(data, cmap=cmap) plt.xticks(range(self.result_set.nplayers)) plt.yticks(range(self.result_set.nplayers)) ax.set_xticklabels(names, rotation=90) ax.set_yticklabels(names) plt.tick_params(axis='both', which='both', labelsize=16) if title: plt.xlabel(title) # Make the colorbar match up with the plot divider = make_axes_locatable(plt.gca()) cax = divider.append_axes("right", "5%", pad="3%") plt.colorbar(mat, cax=cax) return figure
def _violinplot( self, data: dataType, names: namesType, title: titleType = None, ax: matplotlib.axes.SubplotBase = None, ) -> matplotlib.figure.Figure: """For making violinplots.""" if ax is None: _, ax = plt.subplots() else: ax = ax figure = ax.get_figure() width = max(self.num_players / 3, 12) height = width / 2 spacing = 4 positions = spacing * arange(1, self.num_players + 1, 1) figure.set_size_inches(width, height) ax.violinplot( data, positions=positions, widths=spacing / 2, showmedians=True, showextrema=False, ) ax.set_xticks(positions) ax.set_xticklabels(names, rotation=90) ax.set_xlim([0, spacing * (self.num_players + 1)]) ax.tick_params(axis="both", which="both", labelsize=8) if title: ax.set_title(title) plt.tight_layout() return figure
def _payoff_heatmap( self, data: dataType, names: namesType, title: titleType = None, ax: matplotlib.axes.SubplotBase = None, ) -> matplotlib.figure.Figure: """Generic heatmap plot""" if ax is None: _, ax = plt.subplots() else: ax = ax figure = ax.get_figure() width = max(self.num_players / 4, 12) height = width figure.set_size_inches(width, height) matplotlib_version = matplotlib.__version__ cmap = default_cmap(matplotlib_version) mat = ax.matshow(data, cmap=cmap) ax.set_xticks(range(self.result_set.num_players)) ax.set_yticks(range(self.result_set.num_players)) ax.set_xticklabels(names, rotation=90) ax.set_yticklabels(names) ax.tick_params(axis="both", which="both", labelsize=16) if title: ax.set_xlabel(title) figure.colorbar(mat, ax=ax) plt.tight_layout() return figure
def stackplot( self, eco, title: titleType = None, logscale: bool = True, ax: matplotlib.axes.SubplotBase = None, ) -> matplotlib.figure.Figure: populations = eco.population_sizes if ax is None: _, ax = plt.subplots() else: ax = ax figure = ax.get_figure() turns = range(len(populations)) pops = [ [populations[iturn][ir] for iturn in turns] for ir in self.result_set.ranking ] ax.stackplot(turns, *pops) ax.yaxis.tick_left() ax.yaxis.set_label_position("right") ax.yaxis.labelpad = 25.0 ax.set_ylim([0.0, 1.0]) ax.set_ylabel("Relative population size") ax.set_xlabel("Turn") if title is not None: ax.set_title(title) trans = transforms.blended_transform_factory(ax.transAxes, ax.transData) ticks = [] for i, n in enumerate(self.result_set.ranked_names): x = -0.01 y = (i + 0.5) * 1 / self.result_set.num_players ax.annotate( n, xy=(x, y), xycoords=trans, clip_on=False, va="center", ha="right", fontsize=5, ) ticks.append(y) ax.set_yticks(ticks) ax.tick_params(direction="out") ax.set_yticklabels([]) if logscale: ax.set_xscale("log") plt.tight_layout() return figure
def stackplot( self, eco, title: titleType = None, logscale: bool = True, ax: matplotlib.axes.SubplotBase = None, ) -> matplotlib.figure.Figure: populations = eco.population_sizes if ax is None: _, ax = plt.subplots() else: ax = ax figure = ax.get_figure() turns = range(len(populations)) pops = [ [populations[iturn][ir] for iturn in turns] for ir in self.result_set.ranking ] ax.stackplot(turns, *pops) ax.yaxis.tick_left() ax.yaxis.set_label_position("right") ax.yaxis.labelpad = 25.0 ax.set_ylim([0.0, 1.0]) ax.set_ylabel("Relative population size") ax.set_xlabel("Turn") if title is not None: ax.set_title(title) trans = transforms.blended_transform_factory(ax.transAxes, ax.transData) ticks = [] for i, n in enumerate(self.result_set.ranked_names): x = -0.01 y = (i + 0.5) * 1 / self.result_set.num_players ax.annotate( n, xy=(x, y), xycoords=trans, clip_on=False, va="center", ha="right", fontsize=5, ) ticks.append(y) ax.set_yticks(ticks) ax.tick_params(direction="out") ax.set_yticklabels([]) if logscale: ax.set_xscale("log") plt.tight_layout() return figure