【问题标题】:matplotlib duplicate figure and apply changesmatplotlib 复制图并应用更改
【发布时间】:2014-07-12 00:08:43
【问题描述】:

我正在制作一系列具有相同布局的人物。由于布局需要多行代码,我试图复制第一次完成并只更改一些东西,例如标记,如果可能的话,数据虽然我知道它可能会使事情复杂化,因为它可能需要重新缩放和这样在“plt.show()”命令的最后,就会显示原始图形和复制的图形。

【问题讨论】:

  • 如果你的意思是你认为的意思,我可能会把所有的布局都放到一个函数中,这样你就可以随意调用函数了
  • 我已经在这样做了,但是复制会以更少的代码行提供更多的灵活性。使用函数不会让我轻易改变我想要的任何东西。应该有办法做到这一点。这是我在 Origin 工作时使用最多的东西。
  • 也许我不明白你的意思,那么......如果你让你的函数返回图形和轴对象,你可以很容易地修改你想要的一切。您只是使用 pyplot 接口还是实际的对象接口?我强烈推荐后者而不是前者,例如ax.plot() 而不是 plt.plot()
  • 如果您的函数可以提取有关给定图形布局的所有信息并将它们应用于新创建的图形,那应该是完美的。我一直在使用 fig = plt.figure; ax = fig.add_subplot(xxx), ax.plot()
  • 如果您粘贴一些代码也会有所帮助,以便人们可以为您提供示例解决方案。

标签: matplotlib


【解决方案1】:

我不确定您描述的“复制设置”是否真的可行......它可能需要对布局中涉及的所有对象(轴、轴对象、线对象,补丁对象等)我可能完全错了,但这是我的直觉。不过,我在这里放了一些可能接近你想要的东西,因为不必复制很多布局规范。

import matplotlib.pyplot as plt
import numpy as np

def make_layout(data):
    fig = plt.figure()

    ax = fig.add_subplot(111)

    p, = ax.plot(data,'o')

    p.set_markerfacecolor('green')
    # Presumably lots of complicated settings here

    return fig, ax, p

data = np.linspace(0,1)

f1, a1, p1 = make_layout(data)
f2, a2, p2 = make_layout(data**2)

# Make the tweaks you want
a2.set(axis_bgcolor='m')
p2.set_markerfacecolor('yellow')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多