如何将用GetDist生成的三角形/轮廓图插入Matplotlib子图中?

时间:2019-01-23 13:40:56

标签: python matplotlib

我正在对MCMC样本进行一些分析,并且正在使用GetDist python程序包来创建轮廓图。但是,等高线图只是整个分析的一部分,我想在同一图中同时显示其他一些图和等高线图。

我正在使用matplotlib生成所有其他图,所以我的问题是:有没有办法在matplotlib子图中有一个GetDist图,所以我有一个包含多个图的matplotlib图和一个GetDist图。 ?

我正在使用GridSpec将图形划分为子图(并且还将子图划分为子图)。 在创建三角形图之前,我尝试将一个特定的子图设置为当前轴,并且还尝试查看GetDist源代码,以找到一种将所需的子图作为参数传递给GetDist的方法,但是没有运气。

现在,我的代码看起来像这样

import matplotlib.pyplot as plt
import getdist.plots
from matplotlib import gridspec
import numpy as np
import numpy.random

N = 4
# Generate mock random data
chain = np.array([numpy.random.normal(loc=(i+0.5), scale=(i+0.5), size=100000) for i in xrange(N)])
Names = [str(unichr(i+97)) for i in xrange(N)]
Labels = [str(unichr(i+97)) for i in xrange(N)]
Sample = getdist.MCSamples(samples=chain.T, names=Names, labels=Labels)

#Set up plot layout
fig = plt.figure(figsize=(10.5,12.5))
gs = gridspec.GridSpec(3, 2, width_ratios=[2,3], height_ratios=[10,0.5,4], wspace=0.2, hspace=.05)
Lplot = gridspec.GridSpecFromSubplotSpec(N, 1, subplot_spec=gs[0,0], hspace=0.)
Rplot = gridspec.GridSpecFromSubplotSpec(2,1,subplot_spec=gs[0,1], height_ratios=[4,1.265])
Dplot = plt.subplot(gs[2,0:2])
axL = [plt.subplot(Lplot[i]) for i in xrange(N)]
axR = plt.subplot(Rplot[1])
GD = plt.subplot(Rplot[0])

for i in axL+[axR]+[GD]+[Dplot]: i.set_xticks([]); i.set_yticks([])

plt.sca(GD)
# Generate triangle plot
g = getdist.plots.getSubplotPlotter()
g.triangle_plot(Sample, filled=True)
plt.savefig("outfile.pdf", bbox_inches='tight')

我想在“ GD”子图中显示轮廓图。 有帮助吗?

0 个答案:

没有答案