我使用Python/matplotlib创建了一个图,其中有三个子图,每个子图都从不同的“源”或类方法返回
例如,我有一个名为“plot_spectra.py”的脚本,它包含方法为Plot()
的Spectra()
类
因此,调用Spectra('filename.ext').Plot()将返回一个元组,如下代码所示:
# create the plot
fig, ax = plt.subplots()
ax.contour(xx, yy, plane, levels=cl, cmap=cmap)
ax.set_xlim(ppm_1h_0, ppm_1h_1)
ax.set_ylim(ppm_13c_0, ppm_13c_1)
# return the contour plot
return fig, ax
据我所知,“figure”是matplotlib中的“window”,而“ax”是一个单独的绘图。然后我想说,在同一个图中绘制三个“ax”对象,但我很难做到这一点,因为我一直得到一个空窗口,我认为我误解了每个对象的实际含义
电话:
hnca, hnca_ax = Spectra('data/HNCA.ucsf', type='sparky').Plot(plane_ppm=resi.N(), vline=resi.H())
plt.subplot(2,2,1)
plt.subplot(hnca_ax)
eucplot, barplot = PlotEucXYIntensity(scores, x='H', y='N')
plt.subplot(2,2,3)
plt.subplot(eucplot)
plt.subplot(2,2,4)
plt.subplot(barplot)
plt.show()
最终,我试图获得的是一个如下所示的单一窗口:
其中,每个绘图都是从不同的函数或类方法返回的
我需要从函数返回什么“对象”?如何将这三个对象合并到一个图形中?
我建议采用这种方法,即指定要在函数中绘制的ax:
您可以用非常不同的方式为子地块指定网格,并且您可能还希望查看^{} 模块
一种方法是:
将“2,2”视为添加2行x 2列。 第三行“gs[0,:]”告诉您在第0行的所有列上添加一个图表。这将在顶部的顶部创建图表。请注意,索引以0开始,而不是以1开始
要添加“eucplot”,您必须在第1行和第0列调用不同的ax:
最后,“条形图”将进入第1行第1列的另一个ax:
请参阅此处的此网站以获取进一步参考:Customizing Figure Layouts Using GridSpec and Other Functions
相关问题 更多 >
编程相关推荐