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
def plot_1_2(ax: matplotlib.axes.SubplotBase, diff_df: pd.DataFrame, row_id: int) -> None: ax.bar(diff_df.columns, diff_df.loc[row_id], color="red") ax.set_title("difference") ax.set_xlabel("k") ax.set_ylabel("diff") diff_df_min = diff_df.min().min() diff_df_max = diff_df.max().max() if CVResultsAggregator.check_limit(diff_df_min) and CVResultsAggregator.check_limit(diff_df_max): ax.set_ylim(diff_df_min - 1, diff_df_max + 1)
def plot_2_2(ax: matplotlib.axes.SubplotBase, df_eff_k: pd.DataFrame, rows_set: np.ndarray) -> None: lty = ["--", "-", "--"] lwd = [1, 2, 1] mu, sigma = ClusteringUtils.calc_distribution(df_eff_k.loc[rows_set]) y = pd.DataFrame([mu - sigma, mu, mu + sigma]).transpose() for col in y.columns: ax.plot(df_eff_k.columns, y[col], color="red", linestyle=lty[col], linewidth=lwd[col]) ax.set_xlabel("k") ax.set_ylabel("effective k") ax.set_xlim(1, df_eff_k.columns.max()) ax.set_ylim(1, df_eff_k.columns.max()) abline_vals = np.array(ax.get_xlim()) ax.plot(abline_vals, abline_vals, color="grey", linestyle="--")
def plot_2_1(ax: matplotlib.axes.SubplotBase, pval_df: pd.DataFrame, row_id: int) -> None: ax.bar(pval_df.columns, -np.log10(pval_df.loc[row_id]), color="red") ax.set_title("significance of difference") ax.set_xlabel("k") ax.set_ylabel("-log10(p-value)") ax.set_ylim(0, 4)