Матричный контур из трех параметров - PullRequest
1 голос
/ 07 апреля 2020

Я запустил цепочку MCM C для оценки параметров и получил принятые значения параметров. У меня есть 3 параметра и около 300 000 принятых значений для каждого параметра.

Теперь я хотел бы сделать контурный график (выполнимо), но в матрице типа 3-выбирать-2 три angular (очень конкретное c требование). См. Прилагаемую фотографию контур -plot . На рисунке показаны некоторые несвязанные контурные графики из бумаги, но я хочу, чтобы мои параметры были похожего типа.

В общей сложности у меня будет 6 графиков: 3 гистограммы с одним параметром (например, верхний график в каждый столбец в изображении) и 3-выбрать-2 = 3 контурных графика (как нижний треугольник). Опять же, мне нужно, чтобы он выглядел как можно больше как изображение.

Как этого добиться на Python?

Обновление:

Я смог написать приведенный ниже код, который дает мне график: my-plot-here .

Однако мне нужно точное / как можно лучшее совпадение с типом фигуры. 1 . т.е. мне нужны мои xticks, yticks, чтобы показывать внутри, а не снаружи, пробелы между фигурами до go, лучший способ показать левые вертикальные метки графиков (я в настоящее время использую set_ylabel), уровень внешних кривых контуров для go и имеют подробные (длинные-короткие) отметки вдоль оси X в PDF-файлах.

def plot_histogram_fig(param, nbins, subplot_index, subplot_title):
    counts, bins = np.histogram(param, bins = nbins)
    plotcounts = np.insert(counts, -1, counts[-1])
    bincentres = (bins[:-1] + bins[1:])/2
    ax = fig.add_subplot(3, 3, subplot_index)
    #ax.step(bins, plotcounts, where='post', c='y')
    ax.plot(bincentres, counts, 'b')
    #ax.plot([bins[np.argmax(counts)], bins[np.argmax(counts)]], [0, np.max(counts)], 'y')
    ax.set_yticks([])
    return [ax, counts, bincentres]

def plot_contour_fig(p1, p2, nbins, subplot_index):
    H, xedges, yedges = np.histogram2d(p1, p2, bins = nbins)
    Z = H.T
    #Z_gauss = scipy.ndimage.gaussian_filter(Z, sigma = 0.8, order = 0) #filtering
    X, Y = np.meshgrid(xedges[:-1], yedges[:-1])
    ax = fig.add_subplot(3, 3, subplot_index)
    im = ax.contour(X, Y, Z, levels = 6)
    #plt.colorbar(im, ax = ax)
    ax.clabel(im, inline=True, fontsize=4)
    return [ax, H, xedges, yedges]

nbins = 50

fig = plt.figure(figsize = (10, 6))

#Histograms

ax1 = plot_histogram_fig(all_alphas, nbins, 1, subplot_title = 'alpha')
ax1[0].set_xticks([])
ax1[0].set_ylabel('alpha')

ax5 = plot_histogram_fig(all_betas, nbins, 5, subplot_title = 'beta')
ax5[0].set_xticks([])

ax9 = plot_histogram_fig(all_gammas, nbins, 9, subplot_title = 'gamma')
ax9[0].set_title('gamma', y = -0.5)

#Contours

ax4 = plot_contour_fig(all_alphas, all_betas, nbins, 4)
ax4[0].set_xticklabels([])
ax4[0].set_ylabel('beta')

ax7 = plot_contour_fig(all_alphas, all_gammas, nbins, 7)
ax7[0].set_title('alpha', y = -0.5)
ax7[0].set_ylabel('gamma')

ax8 = plot_contour_fig(all_betas, all_gammas, nbins, 8)
ax8[0].set_yticklabels([])
ax8[0].set_title('beta', y = -0.5)

plt.show()

all_alphas, all_betas, all_gammas - это 1d numpy массивов, хранящих принятые значения параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...