首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一个图形中绘制某些内容,稍后再将其用于另一个图形

在一个图形中绘制某些内容,稍后再将其用于另一个图形
EN

Stack Overflow用户
提问于 2017-08-24 20:28:01
回答 1查看 2.7K关注 0票数 3

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

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

我现在的代码是这样的:

代码语言:javascript
运行
复制
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()

你能帮帮我吗?可以保存整个图形/图吗?

干杯,达利奥。

编辑:它应该看起来像这样(右边的部分是我想要实现的):The text in the right should be normal sclaed, obviously...

问题是,我首先想要单独打印数字,然后一起打印(最后我想保存为pdf/png,其中有三个数字)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-24 21:12:31

在matplotlib中,轴(子图)始终只是一个图形的一部分。虽然有options to copy an axes from one figure to another,但这是一个相当复杂的过程。取而代之的是,您可以根据需要在多个图形中频繁地重新创建绘图。使用一个函数,它接受要绘制的轴作为参数,使得这一点变得非常简单。

为了将所有三个图形保存为pdf格式,您可以使用pdfPages,如代码底部所示。

代码语言:javascript
运行
复制
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输出:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45861656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档