我尝试用matplotlib并排成功绘制5组数据,但收效甚微。无论我使用subplot2grid还是简单的subplot,我似乎都无法避免使用瘦图。我想并排5张图,高度为1:1:宽度。我只是为了简单而使用range()(我可以在单个图中成功绘制数据)
x = range(10)
y = range(10,20,1)
a1 = plt.subplot(151)
a1.plot(y,x)
a2 = plt.subplot(152)
a2.plot(x,y)
a3 = plt.subplot(153)
a3.plot(x,y)
a4 = plt.subplot(154)
a4.plot(x,y)
a5 = plt.subplot(155)
a5.plot(x,y)
我计划使用
将其保存为pdfwith PdfPages('fname.pdf') as pdf:
plt.close('all')
fig = plt.figure()
script_for_plots_like_above()
plt.tight_layout()
pdf.savefig(fig)
但是现在我只想要并排数字。谢谢你的帮助!
答案 0 :(得分:1)
这里有两个问题:
要使图形成方形,可以在每个轴上使用ax.set_aspect('equal')
。例如:
import matplotlib.pyplot as plt
plt.figure()
x = range(10)
y = range(10,20,1)
a1 = plt.subplot(151)
a1.plot(y,x)
a1.set_aspect('equal')
a2 = plt.subplot(152)
a2.plot(x,y)
a2.set_aspect('equal')
a3 = plt.subplot(153)
a3.plot(x,y)
a3.set_aspect('equal')
a4 = plt.subplot(154)
a4.plot(x,y)
a4.set_aspect('equal')
a5 = plt.subplot(155)
a5.plot(x,y)
a5.set_aspect('equal')
plt.savefig('plots-with-aspect.png')
产生以下情节:
请注意,这些图现在是方形的,但它们位于很多空白区域的中间。您想使用figsize=(x,y)
调整绘图的大小以适合轴,例如
import matplotlib.pyplot as plt
plt.figure(figsize=(5*5, 5))
x = range(10)
y = range(10,20,1)
a1 = plt.subplot(151)
a1.plot(y,x)
a1.set_aspect('equal')
a2 = plt.subplot(152)
a2.plot(x,y)
a2.set_aspect('equal')
a3 = plt.subplot(153)
a3.plot(x,y)
a3.set_aspect('equal')
a4 = plt.subplot(154)
a4.plot(x,y)
a4.set_aspect('equal')
a5 = plt.subplot(155)
a5.plot(x,y)
a5.set_aspect('equal')
plt.savefig('plots-with-aspect-size.png')
产生以下情节:
请注意,尺寸是相对于每个轴的轴数计算的。
要进一步调整图表以适合图像,您可以在保存时设置严格的布局,例如
plt.savefig('plots-with-aspect-size-tight.png', bbox_inches='tight')
产地: