Я запустил цепочку 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 массивов, хранящих принятые значения параметров.