gpt4 book ai didi

python - 将共享轴图添加到 matplotlib 中的 AxesGrid 图

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:46 25 4
gpt4 key购买 nike

我想在 matplotlib 中创建一个 2x3 的二维直方图图,每个子图的顶部都有一个共享的颜色条和一个一维直方图。 AxesGrid除了最后一部分,我得到了一切。我尝试按照 "scatter_hist.py" example 向每个子图的顶部添加一个二维直方图。在上面的页面上使用 make_axes_locatable。代码看起来像这样:

plots = []
hists = []
for i, s in enumerate(sim):
x = np.log10(s.g['temp']) #just accessing my data
y = s.g['vr']
histy = s.g['mdot']
rmin, rmax = min(s.g['r']), max(s.g['r'])
plots.append(grid[i].hexbin(x, y, C = s.g['mass'],
reduce_C_function=np.sum, gridsize=(50, 50),
extent=(xmin, xmax, ymin, ymax),
bins='log', vmin=cbmin, vmax=cbmax))
grid[i].text(0.95 * xmax, 0.95 * ymax,
'%2d-%2d kpc' % (round(rmin), round(rmax)),
verticalalignment='top',
horizontalalignment='right')

divider = make_axes_locatable(grid[i])
hists.append(divider.append_axes("top", 1.2, pad=0.1, sharex=plots[i]))
plt.setp(hists[i].get_xticklabels(), visible=False)
hists[i].set_xlim(xmin, xmax)
hists[i].hist(x, bins=50, weights=histy, log=True)

#add color bar
cb = grid.cbar_axes[0].colorbar(plots[i])
cb.set_label_text(r'Mass ($M_{\odot}$)')

这会在 divider.append_axes() 函数调用时出错:

AttributeError: 'LocatablePolyCollection' object has no attribute '_adjustable'

有谁知道是否可以使用 axesgrid 方法轻松地将直方图添加到顶部,或者我是否需要使用不同的方法?谢谢!

最佳答案

你应该给出一个 AxesSubplot 的实例(具有 _adjustable 属性)到 sharex电话中的关键字 divider.append_axes .而不是这个,你给出了 hexbin 的返回值到这个关键字参数,它是 LocatablePolyCollection 的一个实例.

因此,如果您替换 sharex=plots[i],您的代码应该可以正常工作与 sharex=grid[i]在你的电话中 divider.append_axes .

关于python - 将共享轴图添加到 matplotlib 中的 AxesGrid 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6575772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com