matplotlib重复轴还是数字?

Wan*_*ang 5 matplotlib

我在一个图/轴上有几个线条,条形图和艺术家.我想在原始图形/轴上添加不同的组件集.是否可以将原始图形/轴的所有对象复制到另一个图形/轴中,而无需通过代码重绘所有内容?

一种方法是在绘制另一组组件之前删除所有新添加的组件.但是,如果我想将几个轴放入一个图中,这将不起作用.这里已经进行了一些讨论.但它一个接一个地复制/添加所有对象,这并不比在有很多对象时重绘所有对象更好.

@Greg,非常感谢回复.如果我只绘制数据,它将很简单,只需重新绘制数据,甚至复制一些行.然而,这个数字包含了很多艺术家,也可以由用户通过GUI界面添加,或者通过动态脚本添加机器人,我可能在运行时不知道它们的类型.该图是即时生成的.当然,我可以尝试复制所有数据,记录所有艺术家类型,属性并再次重新绘制它们.但它太多了,并参与修改生成这些数字的软件.也许我可以遍历所有可能的对象做copyadd_xxx.但是,我会有一个更好的方法.

感谢@Joe Kington和他的帖子:"将轴实例添加到另一个数字".

我找到了复制轴并将轴插入子图的方法:

def test_pickleAxes():
    import pickle
    import numpy as npy
    x = npy.arange(0,4*npy.pi,0.2)
    y = npy.sin(x)

    fig, ax = plt.subplots()


    p = pickle.dumps(ax)
    ax2 = pickle.loads(p)

    ax.change_geometry(2,1,1)
    ax2.change_geometry(2,1,2)
    fig._axstack.add(fig._make_key(ax2), ax2)
    plt.show()
Run Code Online (Sandbox Code Playgroud)

然而,在大多数情况下,到目前为止它似乎并不比blit好.这是为什么?因为轴的腌制实际上是整个图形的腌制.当解开它时,它将创建一个新的图形,并且加载的轴实例将与它相关联.甚至我们设法将轴添加到旧图中.ax2仍然只与新数字相关联.因此,当我们尝试与旧图形交互时,ax2将不会相互作用.相反,如果我们缩放/平移新数字,两个数字中的ax2将会改变.如果我们只保存svg或pdf文件,这似乎是一个相当不错的解决方案.

仍然试图找到一种方法将ax2从新图中解耦并使其与旧图相结合.

归档时间:

查看次数:

4167 次

最近记录:

10 年,10 月 前