在一个图中绘制一些东西,以后再用于另一个图中

发布于 2021-01-29 15:03:52

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

我有一个for循环,其中创建了许多数字。循环结束后,我想再用三个较早创建的图作为辅助图再生成一个图形。

我现在的代码是这样的:

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,其中包含三个数字)

关注者
0
被浏览
116
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在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输出:

    在此处输入图片说明



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看