我希望我能在正确的地方提出这个问题。
我有一个for循环,因为创建了许多数字。 循环结束后,我想再制作一个图,其中三个早期创建的图是suplots。
我现在的代码是这样的:
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()
你能帮帮我吗?我可以保存整个数字/情节吗?
干杯,Dalleaux。
编辑:它应该看起来像这样(正确的部分是我想要实现的): The text in the right should be normal sclaed, obviously...
问题是,我首先想要将这些数字单独打印然后一起(最后我想将其保存为带有三个数字的pdf / png)
答案 0 :(得分:2)
在matplotlib中,轴(子图)始终是一个图的一部分。虽然有options to copy an axes from one figure to another,但这是一个相当复杂的过程。相反,您可以在几个图中根据需要随时重新创建绘图。使用一个函数,它将轴绘制为参数,使得这一点非常简单。
为了在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输出: