在子图中显示hypertools图

时间:2018-01-27 06:05:19

标签: matplotlib subplot hypertools

我想在matplotlib的子网格中安排一些数字哦的hypertools图。通常hypertools.plot会立即呈现,但可以通过传递show=False. It also returns a hypertools.DataGeometry`对象来停止。如何将其作为网格中的子图而不是独立图进行渲染?

1 个答案:

答案 0 :(得分:1)

为matplotlib编写一些绘图包装器的常用方法是允许将一个轴提供给包装器,例如:

def plot(data, ax=None):
    if not ax:
        fig, ax = plt.subplots()
    else:
        fig = ax.figure
    # plot to ax ...

hypertools不遵循这种标准方法,这使得将这些图中的一个绘制成现有图形非常麻烦。 将它作为一个问题放在他们的GitHub跟踪器上可能是值得的。

您拥有的选项是将轴从hypertools创建的图形移动到您自己的图形。

这可以使用this answer的方法完成。 (我无法测试以下内容,因为我没有可用的超文本)

import matplotlib.pyplot as plt
import hypertools

datageom = hypertools.plot(..., show=False)

ax = datageom.ax
ax.remove()

fig2 = plt.figure()
ax.figure=fig2
fig2.axes.append(ax)
fig2.add_axes(ax)

dummy = fig2.add_subplot(231)
ax.set_position(dummy.get_position())
dummy.remove()
# possibly:
# plt.close(datageom.fig)

plt.show()