Python 在一个图形中绘制某个图形,稍后在另一个图形中再次使用该图形

Python 在一个图形中绘制某个图形,稍后在另一个图形中再次使用该图形,python,numpy,matplotlib,subplot,Python,Numpy,Matplotlib,Subplot,我希望我在正确的地方问这个问题 我有一个for循环,因为创建了许多图形。 循环完成后,我想再生成一个图形,其中三个先前创建的图作为Suplot 我现在的代码是这样的: import numpy as np import matplotlib.pyplot as plt def f(t): return np.exp(-t)*np.cos(2*np.pi*t)+(t/10)**2. t1=np.arange(0.0,5.0,0.1) t2=np.arange(0.0,5.0,0.02)

我希望我在正确的地方问这个问题

我有一个for循环,因为创建了许多图形。 循环完成后,我想再生成一个图形,其中三个先前创建的图作为Suplot

我现在的代码是这样的:

import numpy as np
import matplotlib.pyplot as plt

def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)+(t/10)**2.

t1=np.arange(0.0,5.0,0.1)
t2=np.arange(0.0,5.0,0.02)


for i in range(2):
    fig= plt.figure(i)
    ax1=fig.add_subplot(111)
    plt.title('Jon Snow')
    kraft_plot,=ax1.plot(t1,np.sin(t1),color='purple')
    tyrion=ax1.axvline(2,color='darkgreen',ls='dashed')
    ax1.set_ylabel('Kraft [N]',color='purple',fontweight='bold')
    ax1.set_xlabel('Zeit [s]',fontweight='bold')
    ax2=ax1.twinx()
    strecke_plot,=ax2.plot(t2,t2/5,color='grey',label='Verlauf der Strecke')
    ax2.set_ylabel('Strecke [mm]',color='grey',fontweight='bold')
    ax1.legend((kraft_plot,tyrion,strecke_plot),('Jonny','Dwarf','andalltherest'),loc=2)

plt.show()
你能帮我吗?我可以保存整个图形/绘图吗

干杯,达洛

编辑:它应该是这样的(正确的部分是我想要实现的):

问题是,我首先希望单独打印图形集,然后一起打印(最后我希望保存为pdf/png,其中包含三个图形)

在matplotlib中,轴(子图)总是恰好是一个图形的一部分。虽然有,但这是一个相当复杂的过程。相反,您可以根据需要在多个图形中重新创建绘图。使用一个函数,它将要绘制的轴作为参数,使这变得相当简单

为了将所有三个图形保存在pdf中,您可以使用代码底部所示的
pdfPages

import numpy as np
import matplotlib.pyplot as plt

def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)+(t/10)**2.

t1=np.arange(0.0,5.0,0.1)
t2=np.arange(0.0,5.0,0.02)

def plot(ax, i):
    ax.set_title('Jon Snow')
    kraft_plot,=ax.plot(t1,np.sin(t1),color='purple')
    tyrion=ax.axvline(2,color='darkgreen',ls='dashed')
    ax.set_ylabel('Kraft [N]',color='purple',fontweight='bold')
    ax.set_xlabel('Zeit [s]',fontweight='bold')
    ax2=ax.twinx()
    strecke_plot,=ax2.plot(t2,t2/5,color='grey',label='Verlauf der Strecke')
    ax2.set_ylabel('Strecke [mm]',color='grey',fontweight='bold')
    ax.legend((kraft_plot,tyrion,strecke_plot),('Jonny','Dwarf','andalltherest'),loc=2)

figures=[]

for i in range(2):
    fig= plt.figure(i)
    ax1=fig.add_subplot(111)
    plot(ax1, i)
    figures.append(fig)

# create third figure
fig, (ax1,ax2) = plt.subplots(nrows=2)
plot(ax1, 0)
plot(ax2, 1)
figures.append(fig)

from matplotlib.backends.backend_pdf import PdfPages
with PdfPages('multipage_pdf.pdf') as pdf:
    for fig in figures:
        pdf.savefig(fig)


plt.show()
三页pdf输出:


您的问题在正确的位置,是的。然而,现在还不清楚你到底想达到什么目的。可能这仅仅是因为你所说的“早期创建的三个情节”的措辞。在你的定义中,“情节”是什么?在我看来,上面的代码创建了两个数字。每个图有2个子图。因此,您最终总共有4个绘图。您是否希望在新图形中使用这4个图中的3个?如果是这样的话,你想如何选择你使用的呢?Hello@ImportanceOfBeingErnest,我从这段代码中得到了两个图,其中有一个视图图。在那之后,我想有第三个数字,其中两个原始数字合并(一个在另一个之上)。非常感谢。我让它工作了,甚至还需要一点工作,因为我的原始代码稍微复杂一点;)