예제 #1
0
    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
예제 #2
0
파일: plot.py 프로젝트: Nikoleta-v3/Axelrod
    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
예제 #3
0
 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)
예제 #4
0
 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="--")
예제 #5
0
 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)