X = _generateFig1()
 theta_true = np.array([[13, 13], [5, 0]])
 fig, ax = plt.subplots()
 results = []  # store the final result
 for alpha_cut in [0, 0.1, 0.3, 0.5]:
     print "alpha_cut=", alpha_cut
     tmp_alpha_cut = []  # store the result of each alpha_cut
     for m_ini in [2, 5, 8, 11, 13, 16, 19]:
         print "m_ini=", m_ini
         tmp_m_ini = []  # store the m of each  m_ini
         for sigma_v in np.r_[0:15:100j]:
             # for sigma_v in np.arange(1, 20):
             clf = pcm_fs2(X,
                           m_ini,
                           sigma_v,
                           alpha_cut=alpha_cut,
                           ax=ax,
                           x_lim=(-10, 20),
                           y_lim=(-8, 16)).fit()
             m_final = clf.m
             tmp_m_ini.append(m_final)  # store the m of each  m_ini
         tmp_alpha_cut.append(
             tmp_m_ini)  # store the result of each alpha_cut
     results.append(tmp_alpha_cut)  # store the final result
 results = np.array(results)  # shape: n_alpha_cut x n_m_ini  x n_sigma_v
 np.savez(r'./data/plot_mInit_sensitive_upcm',
          alpha_cut=[0, 0.1, 0.3, 0.5],
          m_ini=[2, 5, 8, 11, 13, 16, 19],
          sigma_v=np.r_[0:15:100j],
          results=results)
 print results.shape
    ax = fig1.gca()
    axs.append(ax)
    fig2 = plt.figure(figsize=fig_size, dpi=dpi, num=2)
    ax = fig2.gca()
    axs.append(ax)

    marker_size = 4

    X, y = _generateFig1_400_points()
    # 1st case: not merge
    ax_fig = axs[0]
    cluster_num = 2
    clf = pcm_fs2(X,
                  cluster_num,
                  4,
                  alpha_cut=0,
                  ax=ax,
                  x_lim=(-10, 20),
                  y_lim=(-8, 16)).fit()
    labels = np.argmax(clf.u, axis=1)
    print clf.m
    for label in range(clf.m):
        ax_fig.plot(X[labels == label][:, 0],
                    X[labels == label][:, 1],
                    '.',
                    color=colors[label],
                    markersize=marker_size,
                    label="Cluster {0} with $\eta$={1:.2f}".format(
                        label, clf.ita[label]))
        # centers,
        [
    marker_size = 4

    X, y = _generateFig1()
    # plot original fig1
    ax_fig1 = axs[0]
    for label in range(2):
        ax_fig1.plot(X[y == label][:, 0], X[y == label][:, 1], '.',
                     color=colors[label], markersize=marker_size, label="Cluster %d" % (label + 1))
    ax_fig1.set_xlim(-10, 20)
    ax_fig1.set_ylim(-15, 20)
    lg=ax_fig1.legend(loc='upper left', fancybox=True, framealpha=0.5, prop={'size': 8})
    lg.get_frame().set_lw(0.4)
    # plot fcm init
    ax_fig2 = axs[1]
    cluster_num = 10
    clf = pcm_fs2(X, cluster_num, 1, alpha_cut=0, ax=ax, x_lim=(-10, 20), y_lim=(-8, 16))
    labels = clf.labels_init
    for label in range(cluster_num):
        ax_fig2.plot(X[labels == label][:, 0], X[labels == label][:, 1], '.',
                     color=colors[label], markersize=marker_size)
    ax_fig2.set_xlim(-10, 20)
    ax_fig2.set_ylim(-15, 20)
    # # ax_fig1.set_xticklabels(map(str, [-10,-5,0,5,10,15,20]), minor=False)
    # # ax_fig1.set_yticklabels(map(str, [-15,-10,-5,0,5,10,15,20]), minor=False)

    X, y = _generateFig6()
    # plot original fig6
    ax_fig3 = axs[2]
    for label in range(3):
        ax_fig3.plot(X[y == label][:, 0], X[y == label][:, 1], '.',
                     color=colors[label], markersize=marker_size, label="Cluster %d" % (label + 1))